如何在 Linux 中列出所有組?
Linux 中的組是系統中所有使用者的集合。這些組為系統使用者提供了一種便捷且簡單的方式來共享目錄,而不會出現任何問題。一個 Linux 系統可以擁有許多使用者,這些使用者被分成多個組。管理員必須對這些組的每個成員進行排名,以分配資源驅動的許可權特權。使用者主要屬於兩種型別的組:
主組 / 登入組 |
輔助組 / 附加組 |
|---|---|
使用者建立的檔案分配給此組。主組通常與使用者名稱的名稱相同。 |
授予一組使用者某些許可權。 |
使用者只能屬於一個主組。 |
使用者可以是零個或多個輔助組的成員。 |
然而,許多 Linux 使用者對如何列出可用的組感到困惑。在本簡短教程中,我們將解釋在 Linux 中列出所有組的簡單方法。
如何在 Linux 中列出所有組?
您可以使用以下任何命令在 Linux 中顯示所有組:
/etc/group/檔案
compgen 命令
getent 命令
/etc/group 檔案
/etc/group 檔案控制組成員身份並在 Linux 系統中定義組。這是一個簡單的路徑,包含資訊和屬於每個組的使用者列表。如您所知,/etc/group 是一個純文字檔案,因此您可以使用以下任何命令開啟此檔案並列出所有組:
cat /etc/group less /etc/group more /etc/group
此檔案的每一行都提供了一個組的資訊。您可以透過以下 cut 命令從該檔案中提取所有資料:
cut -d: -f1 /etc/group
在上面的命令中,我們使用 cut 命令僅過濾組名。因此,輸出顯示所有組的列表。
getent 命令
使用 getent 命令,您可以顯示在 /etc/nsswitch.conf 檔案中配置的資料庫中的條目,包括組資料庫。您可以使用這些條目查詢所有組的列表。
如果您正在網路系統上工作,則此命令可以從 /etc/group 檔案中讀取本地組,並從網路服務(如 LDAP)中讀取組。因此,您可以使用 getent 命令透過讀取組資料庫來列出所有組。
getent group
此命令的輸出與 /etc/group 檔案的內容相同。當使用 LDAP 進行使用者身份驗證時,getent 會顯示 LDAP 資料庫和 /etc/group 中的所有組。如果您列印組名的第一個欄位,則可以執行以下命令:
getent group | cut -d: -f1
Or
getent group | awk -F: '{ print $1}'
compgen 命令
compgen 命令是屬於 bash 系列的內建命令。您可以透過以下命令顯示所有活動和已註冊的組:
compgen -g
這裡我們使用了 -g 選項來顯示組。現在,讓我們討論在 Linux 中列出所有組的上述所有命令的不同方法。
列出使用者的組
您可以透過兩種方式找出組的成員,即 groups 命令和 id 命令。
將使用者名稱與“groups”命令一起傳遞,您希望找出該使用者的組。
:~$ groups prateek prateek : prateek adm cdrom sudo dip plugdev lpadmin lxd sambashare
當您在沒有使用者輸入的情況下執行“groups”命令時,它會列印當前使用者的組。
:~$ groups prateek adm cdrom sudo dip plugdev lpadmin lxd sambashare
“id”命令詳細說明了指定使用者及其組。例如,我們將使用以下 id 命令列印使用者“prateek”的所有組:
:~$ id prateek uid=1000(prateek) gid=1000(prateek) groups=1008(prateek),4(adm),24(cdrom),27(sudo), 30(dip),46(plugdev) 122(1padmin),134(lxd),135(sambashare)
上面的命令為您提供了與使用者 UID(使用者 ID)、GID(使用者的初級組)和組(使用者的輔助組)相關的資訊。如果您只想列印使用者的組名,則可以使用 -Gn 選項與上述命令一起過濾它。
:~$ id -Gn prateek prateek adm cdrom sudo dip plugdev lpadmin lxd sambashare
與“groups”命令一樣,如果您沒有使用任何使用者名稱傳遞 id 命令,它會提供當前使用者的詳細資訊。
:~$ id -Gn prateek adm cdrom sudo dip plugdev lpadmin lxd sambashare :~$ id uid=1000(prateek) gid=1000(prateek) groups=1008(prateek),4(adm),24(cdrom),27(sudo), 30(dip),46(plugdev) 122(1padmin),134(lxd),135(sambashare)
所有 Linux 組的計數
您可以使用以下任何命令找出 Linux 組的總數:
:~$ cat /etc/group | grep -c "" 76 :~$ getent group | grep -c "" 76 :~$ getent group | wc -l 76
按字母順序排序所有 Linux 組名
您可以將 getent 或 /etc/group 檔案命令與 sort 命令一起使用,以按字母順序對組名進行排序:
getent group | cut -d: -f1 | sort cat /etc/group | cut -d: -f1 | sort
列出組的所有成員
這樣,我們可以使用 getent 命令列出所有組使用者:
getent group <group_name>
例如,這裡我們將找出名為“dip”的組的成員。如果存在此名稱的組,則該命令將列印其名稱作為輸出,反之亦然。如果您收到,則表示沒有輸出,意味著不存在此名稱的組:
getent group dip
:~$ getent group dip dip:x:30:prateek
同樣,您可以找出其他組的成員。
結論
Linux 中的不同檔案都有其組和使用者。有時使用者必須知道他們屬於哪個組。在 Linux 中,您可以藉助一些命令獲取有關使用者、組名和活動使用者的完整資訊。在這裡,我們解釋了一些在 Linux 中列出所有組的示例。
您可以將所有上述命令用於任何 Linux 發行版,包括 Linux Mint、CentOS、Debian 和 RHEL。如您在上面所見,我們主要使用 /etc/group 檔案和 getent 命令來獲取 Linux 的所有組詳細資訊。我們還使用 cut、count 和 sort 命令來更好地呈現從這些命令獲得的輸出。
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP