在 Linux 中,组是用户的集合。这些组的主要目的是为给定资源定义一组权限,如读取,写入或执行权限,这些权限可以在组内的用户之间共享。还可以可以将用户添加到现有的用户组以利用其授予的权限。
本教程介绍在 Linux 中如何显示用户所属的所有组。我们还将解释如何列出组中的所有成员。
Linux组
用户可以属于两种类型的组:
主要或登录组 - 是分配给用户创建的文件的组。通常,主组的名称与用户的名称相同。每个用户必须属于一个主要组。
辅助组或补充组 - 用于向一组用户授予某些特权。用户可以是零个或多个辅助组的成员。
列出用户所属的所有组
有多种方法可以找出用户所属的组。
主用户的组存储在 /etc/passwd 文件中,补充组(如果有)列在 /etc/group 文件中。
找到用户群的一种方法是使用 cat , less 或 grep 这些命令列出这些文件的内容。另一个更简单的选择是使用一个命令,其目的是提供有关系统用户和组的信息。
使用 groups 命令
最常用的列出用户所属的所有组的命令是 groups 命令。在没有参数的情况下执行时,该命令将打印当前登录用户所属的所有组的列表:
groups
第一组是主要组。
linuxidc adm cdrom sudo dip plugdev lpadmin sambashare
要获取特定用户所属的所有组的列表,请将该用户名作为 groups 的参数提供:
groups linuxidc
与第一组是主要组之前相同。
linuxidc : linuxidc adm cdrom sudo dip plugdev lpadmin sambashare
使用 id 命令
该 id 命令打印有关指定用户及其组的信息。如果省略用户名,则显示当前用户的信息。
例如,要获取有关用户 linuxidc 的信息,请键入:
id linuxidc
该命令将显示用户名 (uid) ,用户的主要组 (gid) 和用户的辅助组 (groups)
uid=1000(linuxidc) gid=1000(linuxidc) 组=1000(linuxidc),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),116(lpadmin),126(sambashare)
要仅打印用户和组名称而不打印用户 ID 和组 ID ,请使用该 -n 选项。选项 -g 将仅打印主要组, 选项 -G 打印所有组。
以下命令将打印当前用户所属组的名称:
id -nG
linuxidc adm cdrom sudo dip plugdev lpadmin sambashare
列出组的所有成员
要列出组的所有成员,请使用 getent group 命令后跟组名。
例如,要查找具有该名称的组的成员, developers 请使用以下命令:
linuxidc@linuxidc:~/www.linuxidc.com$ getent group linuxidc
如果该组存在,该命令将打印该组及其所有成员:
linuxidc:x:1000:
如果没有输出则表示该组不存在。如下图
列出所有组
要查看系统上存在的所有组,只需打开该 /etc/group 文件即可。此文件中的每一行代表一个组的信息。
less /etc/group
另一个选项是使用 getent 命令显示 /etc/nsswitch.conf 文件中配置的 group 数据库中的条目,包括可用于查询所有组列表的数据库。
要获取所有组的列表,请键入以下命令:
getent group
输出与显示 /etc/group 文件内容时的输出相同。如果使用 LDAP 进行用户身份验证, getent 则将显示 /etc/group 文件和 LDAP 数据库中的所有组。
您还可以使用 awk 或 cut 仅打印包含组名称的第一个字段:
getent group | awk -F: '{ print $1}'
getent group | cut -d: -f1
结论