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

来源:https://www.cnblogs.com/edisonfish/p/18008524
-Advertisement-
Play Games

哈嘍大家好,我是鹹魚。 接觸過 Linux 的小伙伴們都知道在 Linux (或者說類 Unix)中,有三種類型的用戶: 超級用戶(UID 為 0):即 root 用戶,擁有最高許可權。 系統用戶(UID 為 1~999):系統內建用戶,用於運行系統服務和守護進程。 普通用戶(UID 為 1000~6 ...


哈嘍大家好,我是鹹魚。

接觸過 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.1
127.0.0.1       localhost localhost.localdomain localhost4 localhost4.localdomain4

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

[root@localhost ~]# getent passwd user1
user1:x:1000:1000::/home/user1:/bin/bash

3、從 /etc/group 資料庫中檢索指定組信息。

[root@localhost ~]# getent group user1
user1:x:1000:

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

方法一:

getent passwd | awk -F: '$3 >= 1000 && $3 < 65344 || $3 == 0 {print $1}'
  • getent passwd 用於檢索 /etc/passwd 資料庫中的所有用戶信息
  • awk 命令:
    • -F::指定欄位分隔符為冒號 (:)
    • $3 >= 1000 && \$3 < 65344:表示判斷第三個欄位(用戶 ID)大於或等於 1000 且小於 65344。
    • \$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 的用戶信息。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 實驗介紹: 本文會詳細介紹創建虛擬站點的三種方法 一:IP地址建立站點 1.打開安裝了IIS的windows,進入ip配置頁面。 添加幾個ip,我這裡添加的是192.168.1.209,192.168.1.210,192.168.1.211 2.打開IIS管理頁面,展開樹形菜單,右鍵網站,點擊添加網 ...
  • Linux環境下非GUI製作圖形界面方法 如題,即就是僅僅使用ANSI轉義字元實現Linux環境的頁面效果,如字體顏色、背景顏色、高亮、固定位置游標、將游標放到指定位置、隱藏字元串等等。 具體實現方法在如下代碼中,使用方法在註釋里可以看到。 // #ifndef lxx_print_h #defin ...
  • why 為什麼要搭建此開發環境? 在linux環境下開發可以利用shell命令實現對文件的批處理 偉大的程式員應該都用類unix系統! 可以實現對底層編譯技術的瞭解,以便於更好的掌握嵌入式技術 通用性,採用開源工具,從底層開發項目,可以不受制於特定廠商的ide工具.可以實現通用架構! what 開發 ...
  • 目錄一、LVM概述二、基本術語三、PE、PV、VG、LV之間的關係四、LVM的工作原理五、LVM的使用1、部署邏輯捲第一步:還原快照,併在虛擬機添加兩塊新硬碟設備,開機第二步:讓新添加的兩塊硬碟設備支持LVM技術第三步:把兩塊硬碟設備加入到storage捲組中,查看捲組狀態第四步:切割出一個148M ...
  • docker-compose-nacos.yml services: mysql-nacos: restart: always image: mysql:5.7.18 container_name: mysql-lable volumes: - /Users/docker/mysql/source/ ...
  • 一:配置預設文檔 輸入ip打開哪個頁面是由預設文檔設定的 1.打開IIS配置頁面,點擊網站。我們的預設站點已經啟動,可以看到綁定的ip和網頁的路徑 2.選中Default Web Site,可以看到有個預設文檔 3.打開預設文檔發現已經有五個條目,右鍵添加我們想要的預設文檔名 如果想要預設文檔名為f ...
  • 實驗介紹:IIS的作用 IIS是web伺服器中常見的一種。當客戶端想訪問某個功能變數名稱時,向web伺服器發出請求。web伺服器返回網頁的代碼做出回應。客戶端解析代碼生成網頁。 一:安裝IIS 1.打開一臺windows伺服器,修改IP為192.168.1.208 2.打開伺服器管理器,安裝web伺服器(I ...
  • 故障如圖: 即所有原本顯示【桌面】的地方,變成英文Desktop了,雖說本體目錄名就是desktop,只是顯示出來的名稱做了本地化,但顯示故障也是故障。 解決辦法: 先看desktop目錄的屬性,正常的屬性是這樣的: 即只有一個R屬性,如果你的不是這樣,就要讓它變成這樣,我的情況是缺乏R屬性,所以要 ...
一周排行
    -Advertisement-
    Play Games
  • 在C#中使用SQL Server實現事務的ACID(原子性、一致性、隔離性、持久性)屬性和使用資料庫鎖(悲觀鎖和樂觀鎖)時,你可以通過ADO.NET的SqlConnection和SqlTransaction類來實現。下麵是一些示例和概念說明。 實現ACID事務 ACID屬性是事務處理的四個基本特征, ...
  • 我們在《SqlSugar開發框架》中,Winform界面開發部分往往也用到了自定義的用戶控制項,對應一些特殊的界面或者常用到的一些局部界面內容,我們可以使用自定義的用戶控制項來提高界面的統一性,同時也增強了使用的便利性。如我們Winform界面中用到的分頁控制項、附件顯示內容、以及一些公司、部門、菜單的下... ...
  • 在本篇教程中,我們學習瞭如何在 Taurus.MVC WebMVC 中進行數據綁定操作。我們還學習瞭如何使用 ${屬性名稱} CMS 語法來綁定頁面上的元素與 Model 中的屬性。通過這些步驟,我們成功實現了一個簡單的數據綁定示例。 ...
  • 是在MVVM中用來傳遞消息的一種方式。它是在MVVMLight框架中提供的一個實現了IMessenger介面的類,可以用來在ViewModel之間、ViewModel和View之間傳遞消息。 Send 接受一個泛型參數,表示要發送的消息內容。 Register 方法用於註冊某個對象接收消息。 pub ...
  • 概述:在WPF中,通過EventHandler可實現基礎和高級的UI更新方式。基礎用法涉及在類中定義事件,併在UI中訂閱以執行更新操作。高級用法藉助Dispatcher類,確保在非UI線程上執行操作後,通過UI線程更新界面。這兩種方法提供了靈活而可靠的UI更新機制。 在WPF(Windows Pre ...
  • 概述:本文介紹了在C#程式開發中如何利用自定義擴展方法測量代碼執行時間。通過使用簡單的Action委托,開發者可以輕鬆獲取代碼塊的執行時間,幫助優化性能、驗證演算法效率以及監控系統性能。這種通用方法提供了一種便捷而有效的方式,有助於提高開發效率和代碼質量。 在軟體開發中,瞭解代碼執行時間是優化程式性能 ...
  • 概述:Cron表達式是一種強大的定時任務調度工具,通過配置不同欄位實現靈活的時間規定。在.NET中,Quartz庫提供了簡便的方式配置Cron表達式,實現精準的定時任務調度。這種靈活性和可擴展性使得開發者能夠根據需求輕鬆地制定和管理定時任務,例如每天備份系統日誌或其他重要操作。 Cron表達式詳解 ...
  • 概述:.NET提供多種定時器,如System.Windows.Forms.Timer適用於UI,System.Web.UI.Timer用於Web,System.Diagnostics.Timer用於性能監控,System.Threading.Timer和System.Timers.Timer用於一般 ...
  • 問題背景 有同事聯繫我說,在生產環境上,訪問不了我負責的common服務,然後我去檢查common服務的health endpoint, 沒問題,然後我問了下異常,timeout導致的System.OperationCanceledException。那大概率是客戶端的問題,會不會是埠耗盡,用ne ...
  • 前言: 在本篇 Taurus.MVC WebMVC 入門開發教程的第四篇文章中, 我們將學習如何實現數據列表的綁定,通過使用 List<Model> 來展示多個數據項。 我們將繼續使用 Taurus.Mvc 命名空間,同時探討如何在視圖中綁定並顯示一個 Model 列表。 步驟1:創建 Model ...