如何在Linux中列出组的成员

Linux系统中的所有用户必须是至少一个组的成员。 该组称为主要组。 如果用户没有主要组,则他/她将无法登录。 除主要组外,用户还可以是其他组的成员。 主要组设置存储在 “ / etc / passwd文件”。 主要组的名称在此文件的第4个字段中指定。 其他(辅助)组的设置存储在 “ / etc / group” 文件。 本教程介绍了在Linux和类似Unix的操作系统中查找和列出所有组以及列出组成员的不同方法。

列出Linux中的所有组

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

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

$ compgen -g

样本输出:

rootdaemonbinsysadmttydisklpmailnewsuucpmanproxy...novardmalibvirtlibvirt-qemulibvirt-dnsmasqcockpit-wscockpit-wsinstancelibvirtdbusrootnogroup

使用compgen命令列出Linux中的所有组

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

$ getent group

样本输出:

root:x:0:daemon:x:1:bin:x:2:sys:x:3:adm:x:4:syslog,sktty:x:5:syslogdisk:x:6:sklp:x:7:mail:x:8:news:x:9:...nova:x:134:rdma:x:135:libvirt:x:136:sk,libvirtdbuslibvirt-qemu:x:64055:libvirt-qemulibvirt-dnsmasq:x:137:cockpit-ws:x:138:cockpit-wsinstance:x:139:libvirtdbus:x:998:root:x:0:nogroup:x:65534:

使用getent命令列出Linux中的所有组

使用getent命令列出Linux中的所有组

“ / etc / group”文件中的第一个字段是组的名称。 因此,我们可以使用 “ awk” 或者 “切” 命令仅打印包含组名称的第一个字段,如下所示:

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

如果要逐页查看组,请使用 “更多的” 或者 “较少的” 如下命令:

$ more /etc/group 
$ less /etc/group 

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

列出Linux中的组成员

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

  1. 使用“ / etc / group”文件,
  2. 使用“ getent”命令,
  3. 使用“ groupmems”命令,
  4. 使用“成员”命令,
  5. 使用“ lid”命令。

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

创建群组后,该群组的信息将存储在 “ / etc / group” 文件。 让我们来看一下该文件的内容 “猫” 命令:

$ cat /etc/group

样本输出:

root:x:0:daemon:x:1:bin:x:2:sys:x:3:adm:x:4:syslog,sktty:x:5:syslogdisk:x:6:sklp:x:7:mail:x:8:news:x:9:...systemd-coredump:x:999:nova:x:134:rdma:x:135:libvirt:x:136:sk,libvirtdbuslibvirt-qemu:x:64055:libvirt-qemulibvirt-dnsmasq:x:137:cockpit-ws:x:138:cockpit-wsinstance:x:139:libvirtdbus:x:998:

查看Linux组信息

查看Linux组信息

如前所述,“ / etc / group”中的第一个字段是为组名保留的。 从上面的输出中可以看到,Linux系统可能包含多个组。

要查看Linux计算机中特定组的成员,请使用 “ grep” 命令从“ / etc / group”文件中过滤组详细信息,如下所示:

$ grep '^sudo' /etc/group

或者,

$ grep -w sudo /etc/group

上面的命令显示用户所属的组名为 “须藤”

sudo:x:27:sk

使用grep命令列出Linux中的组成员

使用grep命令列出Linux中的组成员

从上面的输出中可以看到,“ sudo”组仅包含一个名为“ sk”的成员。

2.使用“ getent”命令查看组的成员

“ getent” 命令显示名称服务开关库支持的数据库中的条目,这些条目在 “ /etc/nsswitch.conf” 文件。

要使用“ getent”命令在Linux中查找给定组的成员,请运行:

$ getent group sudo

此命令显示“ sudo”组的成员。

使用getent命令查看Linux中的组成员

使用getent命令在Linux中查找组的成员

getent命令的一个显着优点是,它不仅列出本地用户,而且还列出给定系统上所有已配置的userdb后端(例如LDAP)中的所有用户。

3.使用“ groupmems”命令打印组中的用户

“ groupmems” 命令允许用户在没有超级用户特权的情况下管理自己的组成员资格列表。 它是shadow utils软件包的一部分。

要使用“ groupmems”命令打印组的成员,请运行:

$ sudo groupmems -g sudo -l

在Linux中使用groupmems命令打印组成员

在Linux中使用groupmems命令打印组的成员

该命令有两个缺点。 它仅处理“ / etc / group”文件中的组,而不处理LDAP或其他用户数据库中的组。 尝试打开时,它还需要超级用户特权 “ / etc / gshadow” 文件。

4.使用“成员”命令显示组成员

顾名思义,“ members”命令基本上显示Linux中某个组的成员。 默认情况下,在大多数Linux发行版中,“ members”命令不可用。 您需要使用发行版的软件包管理器进行安装。 例如,在基于Debian的系统上,可以使用以下命令进行安装:

$ sudo apt install members

安装后,您可以使用“ members”命令在Linux中显示给定组的成员,如下所示:

$ members sudo

在Linux中使用Members命令显示组成员

在Linux中使用Members命令显示组成员

默认情况下,“成员”命令显示所有用户。 使用 -p 或者 -s 仅显示主要组或次要组的成员。

5.使用“ libuser-lid”命令列出属于一个组的所有用户

“ libuser-lid” 命令用于显示有关包含用户名的组或包含在组名中的用户的信息。

默认情况下,在许多Linux发行版中,“ libuser-lid”命令也不可用。 这 “ libuser” 提供此命令,因此您需要使用发行版的程序包管理器进行安装。 例如,在Debian,Ubuntu上,使用以下命令安装“ libuser”软件包:

$ sudo apt install libuser

要列出组中的所有用户,请运行:

$ sudo libuser-lid -g sudo

请注意,此命令要求 超级用户 特权运行。

样本输出:

 sk(uid=1000)

使用libuser-lid命令列出Linux中组中的所有用户

使用libuser-lid命令列出Linux中组中的所有用户

有关更多详细信息,请参见相应命令的手册页。

目前为止就这样了。 这些是在Linux中查找组中用户列表的几种不同方法。 希望这可以帮助。

相关阅读:

  • 如何找出Linux中用户所属的组
  • 如何列出Linux中的所有用户

小组成员Linux Linux基础Linux命令Linux小组Linux howto

Sidebar