一行命令找出 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/C++的SDK,沒有搜尋到一個合適的封裝了的C#庫,故自己動手,簡單的封裝了一下,方便大家也方便自己使用和二次開發 ...
  • 前言 MediatR 是 .NET 下的一個實現消息傳遞的庫,輕量級、簡潔高效,用於實現進程內的消息傳遞機制。它基於中介者設計模式,支持請求/響應、命令、查詢、通知和事件等多種消息傳遞模式。通過泛型支持,MediatR 可以智能地調度不同類型的消息,非常適合用於領域事件處理。 在本文中,將通過一個簡 ...
  • 前言 今天給大家推薦一個超實用的開源項目《.NET 7 + Vue 許可權管理系統 小白快速上手》,DncZeus的願景就是做一個.NET 領域小白也能上手的簡易、通用的後臺許可權管理模板系統基礎框架。 不管你是技術小白還是技術大佬或者是不懂前端Vue 的新手,這個項目可以快速上手讓我們從0到1,搭建自 ...
  • 第1章:WPF概述 本章目標 瞭解Windows圖形演化 瞭解WPF高級API 瞭解解析度無關性概念 瞭解WPF體繫結構 瞭解WPF 4.5 WPF概述 ​ 歡迎使用 Windows Presentation Foundation (WPF) 桌面指南,這是一個與解析度無關的 UI 框架,使用基於矢 ...
  • 在日常開發中,並不是所有的功能都是用戶可見的,還在一些背後默默支持的程式,這些程式通常以服務的形式出現,統稱為輔助角色服務。今天以一個簡單的小例子,簡述基於.NET開發輔助角色服務的相關內容,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 第3章:佈局 本章目標 理解佈局的原則 理解佈局的過程 理解佈局的容器 掌握各類佈局容器的運用 理解 WPF 中的佈局 WPF 佈局原則 ​ WPF 視窗只能包含單個元素。為在WPF 視窗中放置多個元素並創建更貼近實用的用戶男面,需要在視窗上放置一個容器,然後在這個容器中添加其他元素。造成這一限制的 ...
  • 前言 在平時項目開發中,定時任務調度是一項重要的功能,廣泛應用於後臺作業、計劃任務和自動化腳本等模塊。 FreeScheduler 是一款輕量級且功能強大的定時任務調度庫,它支持臨時的延時任務和重覆迴圈任務(可持久化),能夠按秒、每天/每周/每月固定時間或自定義間隔執行(CRON 表達式)。 此外 ...
  • 目錄Blazor 組件基礎路由導航參數組件參數路由參數生命周期事件狀態更改組件事件 Blazor 組件 基礎 新建一個項目命名為 MyComponents ,項目模板的交互類型選 Auto ,其它保持預設選項: 客戶端組件 (Auto/WebAssembly): 最終解決方案裡面會有兩個項目:伺服器 ...
  • 先看一下效果吧: isChecked = false 的時候的效果 isChecked = true 的時候的效果 然後我們來實現一下這個效果吧 第一步:創建一個空的wpf項目; 第二步:在項目裡面添加一個checkbox <Grid> <CheckBox HorizontalAlignment=" ...
  • 在編寫上位機軟體時,需要經常處理命令拼接與其他設備進行通信,通常對不同的命令封裝成不同的方法,擴展稍許麻煩。 本次擬以特性方式實現,以兼顧維護性與擴展性。 思想: 一種命令對應一個類,其類中的各個屬性對應各個命令段,通過特性的方式,實現其在這包數據命令中的位置、大端或小端及其轉換為對應的目標類型; ...