
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 myfreaxuid=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。如有任何疑问,请随时发表评论。
