歡迎光臨
每天分享高質量文章

列出 Linux 系統上所有使用者的 3 種方法 | Linux 中國

透過使用 /etc/passwd 檔案,getent 命令,compgen 命令這三種方法檢視系統中使用者的資訊
— Magesh Maruthamuthu


致謝
編譯自 | 
https://www.2daygeek.com/3-methods-to-list-all-the-users-in-linux-system/
 
 作者 | Magesh Maruthamuthu
 譯者 | SunWave 共計翻譯:4 篇 貢獻時間:367 天

透過使用 /etc/passwd 檔案,getent 命令,compgen 命令這三種方法檢視系統中使用者的資訊。

大家都知道,Linux 系統中使用者資訊存放在 /etc/passwd 檔案中。

這是一個包含每個使用者基本資訊的文字檔案。當我們在系統中建立一個使用者,新使用者的詳細資訊就會被新增到這個檔案中。

/etc/passwd 檔案將每個使用者的基本資訊記錄為檔案中的一行,一行中包含 7 個欄位。

/etc/passwd 檔案的一行代表一個單獨的使用者。該檔案將使用者的資訊分為 3 個部分。

  1. * 1 部分:`root` 使用者資訊

  2. * 2 部分:系統定義的賬號資訊

  3. * 3 部分:真實使用者的賬戶資訊

第一部分是 root 賬戶,這代表管理員賬戶,對系統的每個方面都有完全的權力。

第二部分是系統定義的群組和賬戶,這些群組和賬號是正確安裝和更新系統軟體所必需的。

第三部分在最後,代表一個使用系統的真實使用者。

在建立新使用者時,將修改以下 4 個檔案。

  1. * `/etc/passwd` 使用者賬戶的詳細資訊在此檔案中更新。

  2. * `/etc/shadow` 使用者賬戶密碼在此檔案中更新。

  3. * `/etc/group` 新使用者群組的詳細資訊在此檔案中更新。

  4. * `/etc/gshadow` 新使用者群組密碼在此檔案中更新。

** 建議閱讀 : **

◈ 如何在 Linux 上檢視建立使用者的日期 [1]
◈ 如何在 Linux 上檢視 A 使用者所屬的群組 [2]
◈ 如何強制使用者在下一次登入 Linux 系統時修改密碼 [3]

方法 1 :使用 /etc/passwd 檔案

使用任何一個像 catmoreless 等檔案操作命令來列印 Linux 系統上建立的使用者串列。

/etc/passwd 是一個文字檔案,其中包含了登入 Linux 系統所必需的每個使用者的資訊。它儲存使用者的有用資訊,如使用者名稱、密碼、使用者 ID、群組 ID、使用者 ID 資訊、使用者的家目錄和 Shell 。

/etc/passwd 檔案將每個使用者的詳細資訊寫為一行,其中包含七個欄位,每個欄位之間用冒號 : 分隔:

  1. # cat /etc/passwd

  2. root:x:0:0:root:/root:/bin/bash

  3. bin:x:1:1:bin:/bin:/sbin/nologin

  4. daemon:x:2:2:daemon:/sbin:/sbin/nologin

  5. adm:x:3:4:adm:/var/adm:/sbin/nologin

  6. lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

  7. sync:x:5:0:sync:/sbin:/bin/sync

  8. shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

  9. halt:x:7:0:halt:/sbin:/sbin/halt

  10. mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

  11. ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

  12. postfix:x:89:89::/var/spool/postfix:/sbin/nologin

  13. sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

  14. tcpdump:x:72:72::/:/sbin/nologin

  15. 2gadmin:x:500:10::/home/viadmin:/bin/bash

  16. apache:x:48:48:Apache:/var/www:/sbin/nologin

  17. zabbix:x:498:499:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin

  18. mysql:x:497:502::/home/mysql:/bin/bash

  19. zend:x:502:503::/u01/zend/zend/gui/lighttpd:/sbin/nologin

  20. rpc:x:32:32:Rpcbind Daemon:/var/cache/rpcbind:/sbin/nologin

  21. 2daygeek:x:503:504::/home/2daygeek:/bin/bash

  22. named:x:25:25:Named:/var/named:/sbin/nologin

  23. mageshm:x:506:507:2g Admin - Magesh M:/home/mageshm:/bin/bash

7 個欄位的詳細資訊如下。

◈ 使用者名稱 (magesh): 已建立使用者的使用者名稱,字元長度 1 個到 12 個字元。
◈ 密碼x):代表加密密碼儲存在 `/etc/shadow 檔案中。
◈ **使用者 ID(506):代表使用者的 ID 號,每個使用者都要有一個唯一的 ID 。UID 號為 0 的是為 root 使用者保留的,UID 號 1 到 99 是為系統使用者保留的,UID 號 100-999 是為系統賬戶和群組保留的。
◈ **群組 ID (507):代表群組的 ID 號,每個群組都要有一個唯一的 GID ,儲存在 /etc/group 檔案中。
◈ **使用者資訊(2g Admin - Magesh M):代表描述欄位,可以用來描述使用者的資訊(LCTT 譯註:此處原文疑有誤)。
◈ **家目錄(/home/mageshm):代表使用者的家目錄。
◈ **Shell(/bin/bash):代表使用者使用的 shell 型別。

你可以使用 awk 或 cut 命令僅打印出 Linux 系統中所有使用者的使用者名稱串列。顯示的結果是相同的。

  1. # awk -F':' '{ print $1}' /etc/passwd

  2. or

  3. # cut -d: -f1 /etc/passwd

  4. root

  5. bin

  6. daemon

  7. adm

  8. lp

  9. sync

  10. shutdown

  11. halt

  12. mail

  13. ftp

  14. postfix

  15. sshd

  16. tcpdump

  17. 2gadmin

  18. apache

  19. zabbix

  20. mysql

  21. zend

  22. rpc

  23. 2daygeek

  24. named

  25. mageshm

方法 2 :使用 getent 命令

getent 命令顯示 Name Service Switch 庫支援的資料庫中的條目。這些庫的配置檔案為 /etc/nsswitch.conf

getent 命令顯示類似於 /etc/passwd 檔案的使用者詳細資訊,它將每個使用者詳細資訊顯示為包含七個欄位的單行。

  1. # getent passwd

  2. root:x:0:0:root:/root:/bin/bash

  3. bin:x:1:1:bin:/bin:/sbin/nologin

  4. daemon:x:2:2:daemon:/sbin:/sbin/nologin

  5. adm:x:3:4:adm:/var/adm:/sbin/nologin

  6. lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

  7. sync:x:5:0:sync:/sbin:/bin/sync

  8. shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

  9. halt:x:7:0:halt:/sbin:/sbin/halt

  10. mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

  11. ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

  12. postfix:x:89:89::/var/spool/postfix:/sbin/nologin

  13. sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

  14. tcpdump:x:72:72::/:/sbin/nologin

  15. 2gadmin:x:500:10::/home/viadmin:/bin/bash

  16. apache:x:48:48:Apache:/var/www:/sbin/nologin

  17. zabbix:x:498:499:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin

  18. mysql:x:497:502::/home/mysql:/bin/bash

  19. zend:x:502:503::/u01/zend/zend/gui/lighttpd:/sbin/nologin

  20. rpc:x:32:32:Rpcbind Daemon:/var/cache/rpcbind:/sbin/nologin

  21. 2daygeek:x:503:504::/home/2daygeek:/bin/bash

  22. named:x:25:25:Named:/var/named:/sbin/nologin

  23. mageshm:x:506:507:2g Admin - Magesh M:/home/mageshm:/bin/bash

7 個欄位的詳細資訊如上所述。(LCTT 譯註:此處內容重覆,刪節)

你同樣可以使用 awk 或 cut 命令僅打印出 Linux 系統中所有使用者的使用者名稱串列。顯示的結果是相同的。

方法 3 :使用 compgen 命令

compgen 是 bash 的內建命令,它將顯示所有可用的命令,別名和函式。

  1. # compgen -u

  2. root

  3. bin

  4. daemon

  5. adm

  6. lp

  7. sync

  8. shutdown

  9. halt

  10. mail

  11. ftp

  12. postfix

  13. sshd

  14. tcpdump

  15. 2gadmin

  16. apache

  17. zabbix

  18. mysql

  19. zend

  20. rpc

  21. 2daygeek

  22. named

  23. mageshm


via: https://www.2daygeek.com/3-methods-to-list-all-the-users-in-linux-system/

作者:Magesh Maruthamuthu[5] 選題:lujun9972 譯者:SunWave 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出

贊(0)

分享創造快樂