上一篇 下一篇 分享链接 返回 返回顶部

如何在Linux服务器中列出一个组的成员?

发布人:Minchunlin 发布时间:2021-02-27 10:20 阅读量:1710

Linux系统服务器中的所有用户必须是至少一个组的成员。这个组被称为主组。如果一个用户没有主组,他/她就不能登录。除了主组之外,用户还可以成为其他组的成员。主组的设置存储在"/etc/passwd"中。主组的名称在该文件的第4个字段中指定。其他(次要)组的设置存储在"/etc/group "文件中。本教程介绍了在Linux和类似Unix的系统服务器中查找和列出所有组以及列出组成员的不同方法。

列出Linux服务器中的所有组

在列出所有用户属于一个组之前,让我们首先使用“ compgen”命令查找可用组的列表。Compgen 是BASH内置的,用于操纵可编程完成工具。

要列出Linux系统中所有可用的组,请使用-g选项运行“ compgen”命令,如下所示:

$ compgen -g

您还可以使用“getent”命令获取所有组的列表:

$ getent group

在"/etc/group "文件中,第一个字段就是组的名称。因此,我们可以使用 "awk "或 "cut "命令只打印包含组名的第一个字段,如下所示。

$ getent group | awk -F: '{ print $1}'

遇到这样的情况,我们可以通过以下方式来解决。

如果您想逐页查看组,请使用 "more "或 "less "命令,如下所示。

$ more /etc/group 

$ less /etc/group 

现在,让我们来检查一个组的成员。

在Linux中列出一个组的成员

在Linux中,有几种方法可以找到组成员。下面给出了我们用来识别组成员的方法。

使用"/etc/group"文件。

使用 "getent"命令。

使用 "groupmems "命令。

使用 "members"命令。

使用 "lid"命令。

1. 使用/etc/group文件列出组的成员。

当一个组被创建后,该组的信息会被存储在"/etc/group "文件中。让我们用 "cat "命令看一下这个文件的内容。

$ cat /etc/group

正如我前面提到的,"/etc/group "中的第一个字段是为组的名称保留的。从上面的输出中可以看出,一个Linux系统服务器可能包含多个组。

要查看Linux系统中某个组的成员,可以使用 "grep "命令从"/etc/group "文件中过滤组的详细信息,如下所示。

$ grep '^sudo' /etc/group

或者,

$ grep -w sudo /etc/group

上面的命令显示了属于 "sudo "组的用户。

sudo:x:27:sk

从上面的输出中可以看出,"sudo "组只包含一个名为 "sk "的成员。

2. 使用 "getent "命令查看组中的成员。

"getent "命令显示Name Service Switch库支持的数据库中的条目,这些条目在"/etc/nsswitch.conf "文件中配置。

要在Linux中使用 "getent "命令查找某个组的成员,请运行。

运行: $ getent group sudo

该命令显示 "sudo "组的成员。

getent命令有一个明显的优点,就是它不仅可以列出本地用户,还可以列出某个系统上所有配置的userdb后端(例如LDAP)中的所有用户。

3. 使用 "groupmems "命令打印组中的用户。

groupmems "命令允许用户在没有超级用户权限的情况下管理自己的组成员列表。它是 shadow utils 包的一部分。

要使用 "groupmems "命令打印一个组的成员名单,请运行。

$ sudo groupmems -g sudo -l

这个命令有两个缺点。它只处理"/etc/group "文件中的组,而不是LDAP或其他用户数据库中的组。它还需要超级用户权限,因为它试图打开"/etc/gshadow "文件。

4. 使用 "members "命令显示组成员

顾名思义,"members "命令基本上可以显示Linux中的组成员。在大多数Linux发行版中,"members "命令默认是不可用的。你需要使用你的发行版的软件包管理器来安装它。例如,在基于Debian的系统中,你可以使用命令来安装它。

$ sudo apt install members

安装完毕后,你可以在Linux中使用 "members "命令来显示某个组的成员,如下所示。

$ members sudo

默认情况下,"members"命令会显示所有用户。使用-p或-s只显示主组或辅助组的成员。

5. 5. 使用 "libuser-lid "命令列出属于某个组的所有用户。

"libuser-lid "命令用于显示包含用户名的组,或组名中包含的用户的信息。

在许多Linux发行版中,"libuser-lid "命令也不是默认提供的。"libuser "提供了这个命令,所以你需要使用你的发行版的包管理器安装它。例如,在Debian,Ubuntu上,使用命令安装 "libuser "包。

$ sudo apt install libuser

要列出一个组中的所有用户,请运行。

$ sudo libuser-lid -g sudo

请注意,此命令需要超级用户权限才能运行。

以上是Linux系统服务器中查找组中用户列表的几种不同方法,更多细节请参考各命令的手册页面。

目录结构
全文