如何在 Linux 中列出用戶

Linux 操作系統提供了創建和刪除用戶以及檢查哪些用戶已登錄的命令。但是,系統上沒有列出用戶(無論是否登錄)的命令。

不過,有幾種方法可以實現這一目標。如果您想了解如何在 Linux 中列出用戶,請按照以下步驟操作。

為什麼你應該檢查你的 Linux 用戶列表

您可能希望在 Linux 中列出用戶的原因有很多。就查找和刪除未使用的帳戶而言,這是一個很好的做法。從安全的角度來看,這也是確保您沒有入侵者創建用戶帳戶的好方法。

這是一項管理任務,您可能應該至少每月執行一次。如果您正在運行企業 Linux 服務器,您可能希望更頻繁地執行此操作。

/etc/passwd 中列出的用戶

所有 Linux 服務器的用戶帳戶在文件/etc/passwd中都有條目。每行代表一個用戶,有七個字段,用冒號分隔。這些字段提供有關用戶的信息。

  • 用戶名。
  • 加密密碼(x表示密碼實際上在/etc/shadow
  • 用戶 ID 號 (UID)。
  • 用戶的組 ID 號 (GID)。
  • 用戶的全名(如果列出)。
  • 用戶主目錄。
  • 登錄外殼

因此,這為我們帶來了一種列出 Linux 上所有用戶的方法。您可以使用less命令查看整個文件,一次一屏。

less /etc/passwd

如何在 Linux 中列出用戶

如果你想檢查某個特定用戶是否存在於 Linux 系統中,那麼命令grep是一個很好的用途:

less passwd | grep jeff

如何在 Linux 中列出用戶

如果您沒有得到任何輸出,則該用戶在 Linux 服務器上不存在。

不過,這是很多信息。您可以將其縮減為僅用戶名,例如,使用awkcut命令:

awk -F: '{print $1}' /etc/passwd cut -d: -f1 /etc/passwd

如何在 Linux 中列出用戶

這往往更容易理解,但它仍然讓您查看與您的人類用戶混合的所有基於系統的用戶帳戶。

如何使用 getent 列出用戶

另一個命令getent更有用。它顯示來自服務器/etc/nsswitch.conf文件中配置的任何數據庫的條目。

getent passwd

輸出看起來與使用less命令完全相同,但列出了 Linux 系統上的所有 LDAP 用戶。再一次,我們的awkcut命令只能幫助查看第一個字段,即用戶名。

如果要檢查特定用戶是否存在於 Linux 系統中,getent可以很容易:

getent passwd jeff

同樣,此命令的任何輸出都不會告訴您用戶不存在。

getent的另一個極好的用途是找出服務器上存在多少用戶帳戶。這是通過wc命令管道getent的輸出來完成的,如下所示:

getent passwd | wc -l

如何在 Linux 中列出用戶

可以看到,我的Linux系統一共有48個賬號。非常有趣,因為我是唯一一個使用它的人,但這只是顯示了在 Linux 中創建了多少系統帳戶。

從普通用戶中剔除系統用戶

在 Linux 眼中,系統用戶和人類用戶沒有區別。每當您安裝操作系統時,它都會創建許多系統用戶。為各種軟件包創建其他系統用戶,例如 Web 或郵件服務軟件。

那麼,如何僅列出 Linux 系統上的常規人類用戶呢?這裡的關鍵是要理解,當你創建一個普通用戶時,它的 UID 是在一定的數字範圍內分配的。通過檢查/etc/login.defs文件,我們可以確定普通用戶帳戶可用的 UID 值的範圍。

grep -E '^UID_MIN|^UID_MAX' /etc/login.defs

如何在 Linux 中列出用戶

根據輸出,我知道普通用戶的 UID 應該在 1000 到 60000 之間。由此,我可以構造一個只顯示普通用戶的getent查詢。

getent passwd {1000..60000}

如何在 Linux 中列出用戶

請記住,即使getent顯示其輸出,它也會出現掛起。您可以按Ctrl-C結束該過程,或等到它完成。完成對passwd數據庫的搜索通常需要不到 15 秒的時間。

此命令的更通用版本考慮了各種服務器可能使用的不同UID_MINUID_MAX值。

eval getent passwd {$(awk '/^UID_MIN/ {print $2}' /etc/login.defs)..$(awk '/^UID_MAX/ {print $2}' /etc/login.defs)}

在該命令中,我們利用了 Linux 同時執行多項操作的能力。awk命令獲取UID_MINUID_MAX值,然後在getent命令中使用它們。

現在,假設我們想要的只是用戶名。再一次,我們通過cut命令管道輸出,如下所示:

eval getent passwd {$(awk '/^UID_MIN/ {print $2}' /etc/login.defs)..$(awk '/^UID_MAX/ {print $2}' /etc/login.defs)} | cut -d: -f1

如何在 Linux 中列出用戶

此命令可能需要 10 到 15 秒才能完成,因此請耐心等待。

有效管理您的 Linux 用戶

跟踪 Linux 系統上存在哪些用戶帳戶非常重要。當您知道員工已經離開時,請及時刪除他們的用戶帳戶。定期列出您的 Linux 用戶將有助於確保您發現任何可能滯留的帳戶。

同時,請務必掌握密碼安全策略,並鼓勵您的用戶定期更改密碼。

Tags: #HOW-TO

Leave a Comment

[已更新] 如何修復 Windows 10 更新錯誤 0x80244022

[已更新] 如何修復 Windows 10 更新錯誤 0x80244022

為了解決 Windows 10 更新錯誤 0x80244022,請參考有效的解決方案,例如運行疑難解答、檢查網絡設定等。

如何在 Discord 上播放 Disney+

如何在 Discord 上播放 Disney+

唯一比觀看 Disney+ 更好的是和朋友一起觀看。通過本指南了解如何在 Discord 上流式傳輸 Disney+。

已修復:Hamachi 無法在 Windows 10 和 11 上獲取適配器配置

已修復:Hamachi 無法在 Windows 10 和 11 上獲取適配器配置

閱讀完整指南以了解如何解決 Windows 10 和 11 上的 Hamachi 無法獲取適配器配置錯誤,解決方案包括更新驅動程序、防火牆設置等

修復 REGISTRY_ERROR 藍屏錯誤 (0x00000051) 的 7 個工作解決方案

修復 REGISTRY_ERROR 藍屏錯誤 (0x00000051) 的 7 個工作解決方案

了解修復 REGISTRY_ERROR 藍屏錯誤 (0x00000051) 的有效方法,解決 Windows 系統中遇到的註冊表錯誤。

如何在 Roku 上更改音量

如何在 Roku 上更改音量

在 Roku 上調整聲音比使用遙控器向上或向下移動更多。以下是如何在 Roku 上更改音量的完整指南。

如何修復 Roblox 錯誤代碼 267 [7 簡單修復]

如何修復 Roblox 錯誤代碼 267 [7 簡單修復]

在 Roblox 中被禁止或踢出遊戲的錯誤代碼 267,按照以下簡單解決方案輕鬆解決...

[已解決] 如何解決 Rust 不斷崩潰的問題?

[已解決] 如何解決 Rust 不斷崩潰的問題?

面對 Rust 在啟動或加載時不斷崩潰,然後按照給出的修復並輕鬆停止 Rust 崩潰問題...

[已修復] 驅動程序 WudfRd 在 Windows 10 中無法加載錯誤 219

[已修復] 驅動程序 WudfRd 在 Windows 10 中無法加載錯誤 219

如果在 Windows 10 中遇到 Driver WudfRd failed to load 錯誤,事件 ID 為 219,請遵循此處給出的修復並有效解決錯誤 219。

如何修復“未知軟件異常(0xe0434352)”?

如何修復“未知軟件異常(0xe0434352)”?

發現修復此處給出的 Windows 10 和 11 上的未知軟件異常 (0xe0434352) 錯誤的可能解決方案

[已解決] Grand Theft Auto V 中的“Script Hook V 嚴重錯誤”

[已解決] Grand Theft Auto V 中的“Script Hook V 嚴重錯誤”

想知道如何修復 GTA 5 中的腳本掛鉤 V 嚴重錯誤,然後按照更新腳本掛鉤應用程序等修復,重新安裝 GTA 5 和其他