跳至內容

一行命令找出 Linux 中所有真實用戶

更新時間
快连VPN:速度和安全性最佳的VPN服务
快连VPN:速度和安全性最佳的VPN服务

哈嘍大家好,我是鹹魚。

接觸過 Linux 的小夥伴們都知道在 Linux (或者說類 Unix)中,有三種類型的用戶:

  • 超級用戶(UID 爲 0):即 root 用戶,擁有最高權限。
  • 系統用戶(UID 爲 1~999):系統內建用戶,用於運行系統服務和守護進程。
  • 普通用戶(UID 爲 1000~60000):爲了讓使用者能夠使用 Linux 系統資源而建立的,用戶新建的賬號一般就是普通賬號。

那麼現在問題來了,如何快速找出 Linux 中的真實用戶(root 用戶和普通用戶)?

正式開始之前,我們先介紹一個工具——getent。

getent 命令

getent是"get entries"的縮寫,主要用於檢索系統數據庫中的記錄信息,如/etc/passwd、/etc/shadow、/etc/group、/etc/hosts等。它可以根據指定的數據庫類型和鍵來查詢特定條目。

(1) 查看本地的主機文件(/etc/hosts)中包含的指定域名信息。

[root@localhost ~]# getent hosts 127.0.0.1127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
登錄後複製

(2) 查看本地密碼文件(/etc/passwd)中指定用戶信息。

[root@localhost ~]# getent passwd user1user1:x:1000:1000::/home/user1:/bin/bash
登錄後複製

(3) 從 /etc/group 數據庫中檢索指定組信息。

[root@localhost ~]# getent group user1user1:x:1000:
登錄後複製

我們回到問題上來:如何快速找出 Linux 中的真實用戶(root 用戶和普通用戶)?

方法一:

getent passwd | awk -F: '$3 &gt;= 1000 &amp;&amp; $3 <p>(1) getent passwd 用於檢索 /etc/passwd 數據庫中的所有用戶信息</p><p>(2) awk 命令:</p>
登錄後複製
  • -F::指定字段分隔符爲冒號 (:)
  • $3 >= 1000 && $3
  • $3 == 0:表示判斷第三個字段(用戶 ID)等於 0
  • {print $1}:打印第一個字段(用戶名)

總結一下:這條命令將檢索 /etc/passwd 數據庫中的所有用戶信息,並打印出用戶 ID 大於或等於 1000 且小於 65344,或者用戶 ID 等於 0 的所有用戶的用戶名。

但是有的小夥伴看到這麼一長串的命令就犯難了,”我文本三劍客掌握的不是很好,這條命令尤其是裏面的判斷看的我頭都暈了,還有沒有更簡單的方法呢?”

方法二:

getent passwd 0 {1000..60000} | awk -F: '{print $1}'
登錄後複製
  • getent passwd 0 {1000..60000} 命令用於檢索系統中用戶 ID 爲 0 以及範圍從 1000 到 60000 的所有用戶信息
  • awk -F: ‘{print $1}:表示對前面輸出的內容進行處理——打印第一個字段

這裏補充一下:getent passwd 0 {1000..60000} 命令使用花括號擴展 ({1000..60000}) 來生成一個 0 和從 1000 到 60000 的數字序列。

然後,getent passwd 命令使用這些數字作爲參數,以檢索系統中用戶 ID 爲 0 和從 1000 到 60000 的用戶信息。

以上就是一行命令找出 Linux 中所有真實用戶的詳細內容,更多請關注本站其它相關文章!

更新時間

發表留言

請注意,留言須先通過審核才能發佈。