在Linux中,组是用户的集合。这些组的主要目的是为给定资源定义一组权限,如读取、写入或执行权限,这些权限可以在组内的用户之间共享。还可以可以将用户添加到现有的用户组以利用其授予的权限。本教程将介绍如何显示用户所属的所有组以及如何列出组中的所有成员。

Linux中的用户可以分为两种类型的组:主要或登录组和辅助或补充组。主要或登录组是分配给用户创建的文件的组,通常,主组的名称与用户的名称相同。每个用户必须属于一个主要组。辅助或补充组用于向一组用户授予某些特权,用户可以是零个或多个辅助组的成员。

要列出用户所属的所有组,有多种方法可以实现。主用户的组存储在 /etc/passwd 文件中,补充组(如果有)列在 /etc/group 文件中。可以使用 cat、less 或 grep 这些命令列出这些文件的内容。另一个更简单的选择是使用一个命令,其目的是提供有关系统用户和组的信息。最常用的列出用户所属的所有组的命令是 groups 命令。在没有参数的情况下执行时,该命令将打印当前登录用户所属的所有组的列表。

要获取特定用户所属的所有组的列表,请将该用户名作为 groups 的参数提供。例如,要获取有关用户 buzheng 的信息,请键入:groups buzheng。这将显示用户名(uid)、用户的主要组(gid)和用户的辅助组(groups)。

除了 groups 命令外,还可以使用 id 命令来获取有关指定用户及其组的信息。id 命令会打印出用户名(uid)、用户的主要组(gid)和用户的辅助组(groups)。如果省略用户名,则显示当前用户的信息。要仅打印用户和组名称而不打印用户 ID 和组 ID,请使用该 -n 选项。选项 -g 将仅打印主要组,选项 -G 将打印所有组。

以下是一个示例命令,用于打印当前用户所属组的名称:id -nG

在Linux系统中,您可以使用getent命令列出组的所有成员。要执行此操作,请输入以下命令: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等Linux发行版。