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

列出 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)

分享創造快樂