如何在Linux中列出组

时间:2020-03-05 15:27:24  来源:igfitidea点击:

在Linux中,组是用户的集合。
组的主要目的是为可以在组内用户之间共享的给定资源定义一组特权,例如读,写或者执行权限。
可以将用户添加到现有组以利用其授予的特权。

本教程说明了如何显示用户所属的所有组。
我们还将说明如何列出组中的所有成员。

Linux组

用户可以属于两种类型的组:

  • 主要或者登录组–是分配给用户创建的文件的组。

通常,主要组的名称与用户的名称相同。每个用户必须完全属于一个主要组。

  • 次要或者补充组-用于向一组用户授予某些特权。用户可以是零个或者多个辅助组的成员。

列出用户所属的所有组

有多种方法可以找出用户所属的组。

主要用户组存储在“/etc/passwd”文件中,补充组(如果有)在“/etc/group”文件中列出。

查找用户组的一种方法是使用“ cat”,“ less”或者“ grep”列出这些文件的内容。

另一个更简单的选择是使用命令,该命令的目的是提供有关系统用户和组的信息。

使用“组”命令

列出用户所属的所有组的最难忘的命令是“ groups”命令。
在不带参数的情况下执行该命令时,将打印当前登录用户所属的所有组的列表:

groups

第一组是主要组。

john adm cdrom sudo dip plugdev lpadmin sambashare

要获取特定用户所属的所有组的列表,请将用户名作为参数提供给“ groups”命令:

groups theitroad

与之前的第一个组相同,是主要组。

theitroad : theitroad sudo

使用'id'命令

'id'命令显示有关指定用户及其组的信息。

如果省略用户名,则显示当前用户的信息。

例如,要获取有关用户“ theitroad”的信息,请输入:

id theitroad

该命令将显示用户ID('uid'),用户的主要组('gid')和用户的辅助组('groups')

uid=1001(theitroad) gid=1001(theitroad) groups=1001(theitroad),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 }'
getent group | cut -d: -f1