首頁 > 軟體

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

2020-06-16 16:48:59

通過使用 /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`新使用者群組密碼在此檔案中更新。

** 建議閱讀 : **

 

方法 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:ZabbixMonitoringSystem:/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:RpcbindDaemon:/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:2gAdmin-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 型別。

你可以使用 awkcut 命令僅列印出 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:ZabbixMonitoringSystem:/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:RpcbindDaemon:/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:2gAdmin-Magesh M:/home/mageshm:/bin/bash

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

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

 

方法 3 :使用 compgen 命令

compgenbash 的內建命令,它將顯示所有可用的命令,別名和函數。

  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 選題:lujun9972 譯者:SunWave 校對:wxy

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

Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx

本文永久更新連結地址https://www.linuxidc.com/Linux/2018-08/153523.htm


IT145.com E-mail:sddin#qq.com