Linux 列出组与成员
在Linux,组是用户的集合。组的主要目的是为指定资源定义一组权限
在Linux,组是用户的集合。组的主要目的是为指定资源定义一组权限。
例如读,写或执行权限,这些权限可以在组内的用户之间共享。可以将用户加入组,并授予组的权限。
本教程说明如何显示用户所属的组。我们还将解释如何列出组的所有成员。用户可以拥有属于两种类型的组,分别是主要组和次要组。
通常,主要组的名称与用户的名称相同。每个用户拥有一个主要组。次要组用于向一组用户授予权限。次要组的成员可以是零个或多个。
列出所有组
有多种方法可以找出用户所属的组。用户主要组存储在/etc/passwd
文件中,次要组在/etc/group
文件中列出。
找到用户组的一种方法是查看这些文件的内容,你可使用cat
,less
或grep
命令查看两个文件的内容。
另一个更简单的选择是使用groups命令,groups命令的目的是提供系统用户和组的信息。
groups 命令列出所有组
列出用户所属的所有组的最常用的命令是groups
。当不带任何参数运行groups
命令时。
groups
命令将打印当前登录用户所属的所有组。第一个是主要组,其它都是次要组。
如需要获取指定用户所属的组,请为groups
命令提供用户名作为参数。同样第一个是用户的主要组,其它都是次要组。
groups
groups myfreax
myfreax adm cdrom sudo dip plugdev lpadmin sambashare
id 命令列出所有组
id
命令显示指定用户及其所属组的信息。如果省略用户名,则会显示当前用户的信息。
要仅打印名称而不包含用户和组ID,请使用-n
选项。 -g
选项将仅打印主要组,-G
选项将打印所有组。例如命令id -nG myfreax
将打印当前用户所属的组的名称。
例如,要获取用户myfreax
的信息,请运行命令id myfreax
。命令将显示用户名uid
,用户的主要组gid
和用户的次要组groups
。
id myfreax
id -nG myfreax
uid=1001(myfreax) gid=1001(myfreax) groups=1001(myfreax),27(sudo)
列出组成员
要列出组的所有成员,请使用getent group
命令,后跟组名称。如果该组存在,getent group
命令将打印指定组名称及其所有成员。
例如,要查找developers
组的成员,请运行命令getent group developers
。如果没有输出,则表示该组不存在。
getent group developers
developers:x:126:frank,mary
列出所有组
要查看系统上存在的所有组,只需使用cat命令或less命令查看/etc/group
文件即可。该文件中的每一行代表一个组的信息。
另一个选择是使用getent
命令,getent
命令显示/etc/nsswitch.conf
文件中的组数据记录,可用于查询所有组的数据。
如果要在/etc/group文件获取所有组,请运行命令less /etc/group
。要使用getent
命令获取所有组,请运行命令getent group
。
less /etc/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。如有任何疑问,请随时发表评论。