如何在Linux中列出组
在Linux中,组是用户的集合。 组的主要目的是为给定资源定义一组特权,例如读,写或执行权限,这些特权可以在组内的用户之间共享。 可以将用户添加到现有组以利用其授予的特权。
本教程说明了如何显示用户所属的所有组。 我们还将说明如何列出组中的所有成员。
Linux组
用户可以属于两种类型的组:
主要或登录组 –是分配给用户创建的文件的组。 通常,主要组的名称与用户的名称相同。 每个用户必须完全属于一个主要组。
次要或补充组 -用于向一组用户授予某些特权。 用户可以是零个或多个辅助组的成员。
列出用户是#的成员的所有组
有多种方法可以找出用户所属的组。
主要用户的组存储在 /etc/passwd
文件和补充组(如果有)列在 /etc/group
文件。
查找用户组的一种方法是使用列出这些文件的内容 cat
, less
要么 grep
。 另一个更简单的选择是使用命令,该命令的目的是提供有关系统用户和组的信息。
使用 groups
命令#
列出用户所属的所有组的最难忘的命令是 groups
命令。 在不带参数的情况下执行该命令时,将打印当前登录用户所属的所有组的列表:
groups
第一组是主要组。
john adm cdrom sudo dip plugdev lpadmin sambashare
要获取特定用户所属的所有群组的列表,请向 groups
命令作为参数:
groups linuxize
与第一个组之前的相同是主要组。
linuxize : linuxize sudo
使用 id
命令#
的 id
命令输出有关指定用户及其组的信息。 如果省略用户名,则显示当前用户的信息。
例如获取有关用户的信息 linuxize
您将输入:
id linuxize
该命令将显示用户ID(uid
),用户的主要组(gid
),以及用户的辅助组(groups
)
uid=1001(linuxize) gid=1001(linuxize) groups=1001(linuxize),27(sudo)
要仅打印名称而不是数字,请使用 -n
选项。 选项 -g
将仅打印主要组和 -G
所有组。
以下命令将打印当前用户所属的组的名称:
id -nG
john adm cdrom sudo dip plugdev lpadmin sambashare
列出组中的所有成员
要列出网上论坛的所有成员,请使用 getent group
命令,后跟组名。
例如,找出名称为“”的组的成员 developers
您将使用以下命令:
getent group developers
如果该组存在,则命令将打印该组及其所有成员:
developers:x:126:frank,mary
如果没有输出,则表示该组不存在。
列出所有组
要查看系统上存在的所有组,只需打开 /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
结论#
在本教程中,您学习了如何查找用户所属的组。 相同的命令适用于任何Linux发行版,包括Ubuntu,CentOS,RHEL,Debian和Linux Mint。
如有任何疑问,请随时发表评论。
终奌站