《Ubuntu – 年終大掃除,盤點目前系統使用者帳號 – 學習筆記》

Telegram share !

年底將近,各種系統攻擊開始蠢蠢欲動,駭客會透過APT等各種方式發動攻擊,所以這時候預警性的帳號盤點就很重要,這次我會透過幾種方式教大家輕鬆做好使用者帳號盤點,於是就有了寫這篇文章的契機,希望能讓Ubuntu系統管理人員都能透過本文的相關技巧快速掌握,盤點系統所有自建帳號,就趁這次教學把設定與驗證過程中記錄下來,也希望藉由此次分享讓系統管理者能更快掌握Linux主機目前的狀況。

透過檔案方式取得帳號清單

透過cat 印出/etc/passwd使用者帳號資訊

> cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
:
略

透過cut擷取部分字串,產生帳號清單

❯ cut -d: -f1 /etc/passwd
root
daemon
bin
:
略

透過aws擷取部分字串,產生帳號清單

❯ awk -F: '{print $1}' /etc/passwd
root
daemon
bin
:
略

透過查詢系統資料庫方式取得帳號清單

印出passwd中的帳號資訊

❯ getent passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
:
略

透過cut擷取部分字串,產生帳號清單

❯ getent passwd | cut -d: -f1
root
daemon
bin
:
略

透過aws擷取部分字串,產生帳號清單

❯ getent passwd | awk -F: '{print $1}'
root
daemon
bin
:
略

檢查單一使用者的帳戶資訊

❯ getent passwd username
username:x:1002:1002:NickHuang,,,:/home/username:/bin/bash

檢查單一使用者所屬群組資訊

❯ id username
uid=1002(username) gid=1002(username) groups=1002(username),4(adm),33(www-data)

印出自建的使用者帳號(排除系統帳號)

取得UID_MIN 與UID_MAX的設定值

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

取得UID_MIN=1000與UID_MAX=60000之間的使用者列表

❯ getent passwd {1000..60000}
ubuntu:x:1000:1000:Ubuntu:/home/ubuntu:/bin/bash
user:x:1001:1001:user,,,:/home/user:/bin/bash
:
略

※RDPAPA小提醒:大部分第一筆使用者帳號都是從1001開始建立

整合透過查詢UID_MIN 與UID_MAX的設定值,列出所有自建使用者帳號資訊(完整資訊)

❯ eval getent passwd {$(awk '/^UID_MIN/ {print $2}' /etc/login.defs)..$(awk '/^UID_MAX/ {print $2}' /etc/login.defs)}
ubuntu:x:1000:1000:Ubuntu:/home/ubuntu:/bin/bash
user:x:1001:1001:user,,,:/home/user:/bin/bash
:
略

整合透過查詢UID_MIN 與UID_MAX的設定值,列出所有自建使用者帳號資訊(只印出使用者)

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

Reference