如何列出Linux中的所有组?如何列出Linux中的所有组?如何列出Linux中的所有组?如何列出Linux中的所有组?
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何列出Linux中的所有组?

Linux 中的组是系统中所有用户的集合。这些组为系统用户提供了一种方便、简单的方式来毫无问题地共享目录。 Linux 系统可以有许多用户,这些用户被分为多个组。管理员必须对这些组的每个成员进行排名,以分配资源驱动的权限。用户主要属于两种类型的组 -

User-created files are assigned to this group. The primary group usually has the same name as a user's name.

向一组用户授予某些权限。

Users must belong to only one primary group.

用户可以是零个或多个辅助组的成员。

然而,许多 Linux 用户对如何列出可用组感到困惑。在这个简短的教程中,我们将解释列出 Linux 中所有组的简单方法。

如何列出Linux中的所有组?

您可以使用以下任何命令显示 Linux 中的所有组 -

  • /etc/组/文件

  • Compgen命令

  • Getent命令

/etc/group 文件

/etc/group 文件控制组成员资格并定义 Linux 系统中的组。这是一个简单的路径,包含信息和属于每个组的用户列表。您可能知道,/etc/group 是一个纯文本文件,因此您可以使用以下任何命令打开该文件并列出所有组 -

cat /etc/group
less /etc/group
more /etc/group

该文件的每一行提供一个组的信息。您可以通过以下 cut 命令从此文件中提取所有数据 -

cut -d: -f1 /etc/group

在上面的命令中,我们使用 cut 命令仅过滤组名称。因此,输出显示所有组的列表。

Getent 命令

使用 getent 命令,可以显示 /etc/nsswitch.conf 文件中配置的数据库中的条目,包括组数据库。您可以使用这些条目来查询所有组的列表。

如果您在网络系统上工作,此命令可以从/etc/group 文件中读取本地组,也可以从网络服务(例如 LDAP)中读取组。因此可以使用 getent 命令通过读取组数据库来列出所有组。

getent group

该命令的输出与 /etc/group 文件的内容相同。使用 LDAP 进行用户身份验证时,getent 显示 LDAP 数据库和 /etc/group 中的所有组。如果打印组名称的第一个字段,则可以运行以下命令 -

getent group | cut -d: -f1
Or 
getent group | awk -F: '{ print $1}'

Compgen 命令

compgen 命令是属于 bash 系列的内置命令。您可以通过以下命令显示所有活动和注册的组 -

compgen -g

这里我们使用 -g 选项来显示组。现在,让我们讨论使用所有提到的命令列出 Linux 中所有组的不同方法。

列出用户的组

您可以通过两种方式查找组的成员:groups 命令和 id 命令。

  • 使用“groups”命令传递您想要查找其组的用户名。

groups prateek
prateek : prateek adm cdrom sudo dip plugdev lpadmin lxd sambashare

当您在没有用户输入的情况下运行“groups”命令时,它会打印当前用户的组。

groups
prateek adm cdrom sudo dip plugdev lpadmin lxd sambashare 
  • “id”命令详细说明指定用户及其组的信息。例如,我们将使用 id 命令打印用户“prateek”的所有组,如下所示 -

id prateek
uid=1000(prateek) gid=1000(prateek) groups=1008(prateek),4(adm),24(cdrom),27(sudo), 30(dip),46(plugdev) 122(1padmin),134(lxd),135(sambashare)

上面的命令为您提供了与用户 UID(用户 ID)、GID(用户的主要组)和 groups(用户的次要组)相关的信息。如果只想打印用户的组名,可以通过在上述命令中使用 -Gn 选项来过滤它。

id -Gn prateek
prateek adm cdrom sudo dip plugdev lpadmin lxd sambashare

与“groups”命令类似,如果您不使用 id 命令传递任何用户名,它会提供当前用户的详细信息。

id -Gn 
prateek adm cdrom sudo dip plugdev lpadmin lxd sambashare 
id
uid=1000(prateek) gid=1000(prateek) groups=1008(prateek),4(adm),24(cdrom),27(sudo), 30(dip),46(plugdev) 122(1padmin),134(lxd),135(sambashare)

所有 Linux 组的计数

您可以使用以下任意命令找出 Linux 组的总数 -

cat /etc/group | grep -c ""
76
getent group | grep -c ""
76
getent group | wc -l
76

按字母顺序对所有 Linux 组名称进行排序

您可以使用 getent 或 /etc/group 文件命令和 sort 命令来按字母顺序对组名称进行排序 -

getent group | cut -d: -f1 | sort
cat /etc/group | cut -d: -f1 | sort

列出组的所有成员

这样,我们可以使用 getent 命令列出所有组用户 -

getent group <group_name>

例如,在这里我们将找到名为“dip”的组成员。如果存在具有此名称的组,该命令将打印其名称作为输出,反之亦然。如果您收到,没有输出意味着不存在具有该名称的组 -

获得组浸

getent group dip
dip:x:30:prateek

同样,您可以找出其他组的成员。

结论

Linux 中的不同文件有其组和用户。有时,用户知道他们属于哪个组变得很重要。在Linux中,您可以借助一些命令获取有关用户、组名和活动用户的完整信息。这里我们解释了一些列出 Linux 中所有组的示例。

您可以将上述所有命令用于任何 Linux 发行版,包括 Linux Mint、CentOS、Debian 和 RHEL。正如你在上面看到的,我们主要使用 /etc/group 文件和 getent 命令来获取 Linux 的所有组详细信息。我们还使用 cut、count 和 sort 命令来更好地呈现从这些命令获得的输出。

©2015-2025 艾丽卡 support@alaica.com