如何在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