如何在 Ubuntu 中檢視用戶列表|完整指南:登入、管理與刪除

目次

1. 簡介

Ubuntu 是一款廣受使用者歡迎的 Linux 發行版,適用於個人用戶到企業伺服器環境。管理 Ubuntu 系統時,使用者帳戶管理至關重要。特別是,檢視已註冊的使用者列表有助於安全管理與帳戶整理。

本文章將詳細介紹在 Ubuntu 中檢視使用者列表的方法,從基本指令到獲取詳細資訊的方式,適用於初學者到進階管理員。

2. 如何在 Ubuntu 中檢視使用者列表

在 Ubuntu 中,可以透過特定的檔案或指令來輕鬆獲取使用者資訊。以下是幾種檢視使用者列表的方法。

2.1 使用 /etc/passwd 檔案來顯示使用者列表

在 Ubuntu 中,所有使用者資訊都存儲在 /etc/passwd 檔案中。透過檢視該檔案,可以確認系統中所有註冊的使用者。

指令範例

cat /etc/passwd

執行此指令後,將顯示如下格式的資訊:

root:x:0:0:root:/root:/bin/bash
user1:x:1000:1000:User One,,,:/home/user1:/bin/bash
user2:x:1001:1001:User Two,,,:/home/user2:/bin/bash

每一行的欄位由「:(冒號)」分隔,包含以下資訊:

  1. 使用者名稱
  2. 密碼(目前顯示為 x,代表已加密)
  3. 使用者 ID(UID)
  4. 群組 ID(GID)
  5. 使用者資訊(註解)
  6. 家目錄(Home Directory)
  7. 預設 Shell

該檔案包含系統使用者與一般使用者,因此若想僅提取可登入的使用者,可使用以下方法。

2.2 獲取使用者名稱列表

若只想列出所有使用者名稱,可以使用以下指令:

cut -d: -f1 /etc/passwd

或者使用 awk 指令:

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

範例輸出:

root
user1
user2

2.3 搜尋特定使用者

若想確認某個特定使用者是否存在,可使用 grep 指令:

grep 'user1' /etc/passwd

執行後,將只顯示 user1 的相關資訊。

2.4 使用 /etc/group 來獲取群組列表

若想確認使用者所屬的群組,可以檢視 /etc/group 檔案:

cat /etc/group | cut -d: -f1

此外,若要檢視特定使用者所屬的群組,可使用以下指令:

groups user1

範例輸出:

user1 : user1 sudo

這表示 user1 也屬於 sudo 群組。

年収訴求

3. 如何檢視當前登入的使用者

在 Ubuntu 中,有多種方法可以檢視當前登入的使用者。透過特定的指令,可以獲取目前開啟的使用者工作階段及詳細的登入資訊。

3.1 使用 who 指令檢視登入使用者

who 指令可列出目前所有已登入的使用者。

指令範例

who

範例輸出:

user1    tty1         2025-02-16 10:05
user2    pts/0        2025-02-16 11:30

欄位說明:

  1. 使用者名稱(目前登入的使用者)
  2. 終端名稱(例如 tty1 表示本地登入,pts/0 表示遠端登入)
  3. 登入時間

who 指令適用於快速檢視登入使用者。

3.2 使用 w 指令檢視詳細登入資訊

w 指令比 who 提供更詳細的資訊,包括系統運行狀態與使用者活動。

指令範例

w

範例輸出:

 11:35:25 up 2:15,  2 users,  load average: 0.03, 0.02, 0.00
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
user1    tty1                      10:05    1:30m  0.10s  0.10s -bash
user2    pts/0    192.168.1.10      11:30    0.00s  0.05s  0.02s sshd

欄位說明:

  • 系統運行時間(up 2:15)
  • 當前登入的使用者數量(2 users)
  • CPU 負載(load average)
  • 使用者名稱(USER)
  • 終端名稱(TTY)
  • 遠端登入來源(FROM)
  • 登入時間(LOGIN@)
  • 閒置時間(IDLE)
  • CPU 使用率(JCPU, PCPU)
  • 當前執行的指令(WHAT)

此指令可用於監控遠端登入的使用者及其執行的程序。

3.3 使用 users 指令快速檢視登入使用者

若只想簡單列出登入使用者名稱,可以使用 users 指令。

指令範例

users

範例輸出:

user1 user2

此指令僅顯示當前登入的使用者名稱,類似 who 的簡化版。

3.4 使用 whoami 指令檢視當前使用者

若想知道當前終端執行的使用者身份,可使用 whoami 指令。

指令範例

whoami

範例輸出:

user1

該指令適用於確認當前執行的使用者名稱。

3.5 使用 last 指令檢視最近的登入紀錄

last 指令可顯示過去登入的使用者紀錄。

指令範例

last

範例輸出:

user1    pts/0        192.168.1.10     Mon Feb 15 10:20   still logged in
user2    tty1                          Mon Feb 15 09:30 - 10:00  (00:30)
root     tty1                          Sun Feb 14 22:15 - 23:45  (01:30)

欄位說明:

  • 使用者名稱
  • 終端名稱(tty1, pts/0 等)
  • 遠端登入來源(IP 位址)
  • 登入開始時間
  • 登出時間(若顯示 still logged in,代表目前仍登入)
  • 登入持續時間

此指令可用於監控系統的登入紀錄,並檢測是否有異常登入行為。

4. 如何檢視使用者的詳細資訊

在 Ubuntu 中,有多種指令可以獲取已註冊使用者的詳細資訊,例如 UID(使用者 ID)、群組、登入 Shell 及密碼到期日等。這些資訊對於權限管理與系統安全至關重要。

本節將介紹 idgroupsfingerchage 等指令的使用方法。

4.1 使用 id 指令查看使用者 UID、GID 和群組

id 指令可以顯示指定使用者的 UID(使用者 ID)、GID(群組 ID)以及該使用者所屬的所有群組。

指令範例
id user1
範例輸出
uid=1001(user1) gid=1001(user1) groups=1001(user1),27(sudo),1002(docker)
欄位說明
  • uid=1001(user1) → 使用者 ID(UID),系統內的唯一識別碼
  • gid=1001(user1) → 使用者的主要群組 ID(GID)
  • groups=1001(user1),27(sudo),1002(docker) → 該使用者所屬的所有群組

若要查詢當前使用者的 UID、GID 和群組,可直接執行:

id

4.2 使用 groups 指令查看使用者所屬群組

若只想檢視使用者所屬的群組名稱,可以使用 groups 指令。

指令範例
groups user1
範例輸出
user1 : user1 sudo docker

這比 id 指令的輸出更加簡潔,只列出使用者所屬的群組名稱。

查詢當前使用者的群組
groups

4.3 使用 finger 指令查詢使用者詳細資訊

finger 指令可顯示使用者的全名、登入資訊、家目錄及 Shell 類型。

安裝 finger

Ubuntu 預設未安裝 finger,需先執行以下指令安裝:

sudo apt install finger
指令範例
finger user1
範例輸出
Login: user1                    Name: User One
Directory: /home/user1           Shell: /bin/bash
Last login: Mon Feb 16 10:20 (UTC) on pts/0
欄位說明
  • Login → 使用者名稱
  • Name → 設定的全名(若未設定則可能為空)
  • Directory → 使用者的家目錄
  • Shell → 預設使用的 Shell
  • Last login → 最後一次登入時間

系統管理員可透過此指令快速查看使用者資訊。

4.4 使用 chage 指令查看密碼有效期限

系統管理員可以使用 chage 指令來檢視與設定使用者密碼的有效期限。

指令範例
sudo chage -l user1
範例輸出
Last password change            : Jan 15, 2025
Password expires                : Mar 15, 2025
Password inactive               : never
Account expires                 : never
Minimum number of days between password change : 7
Maximum number of days between password change : 60
Number of days of warning before password expires : 5
欄位說明
  • Last password change → 最後一次修改密碼的日期
  • Password expires → 密碼到期日
  • Password inactive → 密碼失效時間(若顯示 never,表示無失效時間)
  • Account expires → 帳戶到期時間
  • Minimum number of days between password change → 兩次密碼變更的最短間隔天數
  • Maximum number of days between password change → 密碼的最大有效天數
  • Number of days of warning before password expires → 密碼到期前幾天開始發出警告

此資訊可用於確保使用者定期更改密碼,以提升系統安全性。

5. 如何在 Ubuntu 中管理使用者(新增、刪除、修改)

在 Ubuntu 中,系統管理員可以新增、刪除或修改使用者帳戶,以確保系統安全性與有效管理。本節將介紹如何使用 adduserdeluserusermod 等指令來管理使用者。

5.1 新增使用者

在 Ubuntu 中,可以使用 adduseruseradd 來新增使用者。

5.1.1 使用 adduser 指令(推薦)

adduser 是一個互動式指令,能自動建立使用者帳戶及家目錄。

指令範例
sudo adduser newuser
互動過程
Adding user `newuser' ...
Adding new group `newuser' (1002) ...
Adding new user `newuser' (1002) with group `newuser' ...
Creating home directory `/home/newuser' ...
Copying files from `/etc/skel' ...
Enter new UNIX password: ********
Retype new UNIX password: ********
passwd: password updated successfully
Changing the user information for newuser
Enter the new value, or press ENTER for the default
        Full Name []: 
        Room Number []: 
        Work Phone []: 
        Home Phone []: 
        Other []: 
Is the information correct? [Y/n] 

執行後系統會自動:

  • 建立使用者帳戶
  • 建立專屬群組
  • 設定家目錄(/home/newuser
  • 要求設定登入密碼
  • 可選填額外的使用者資訊

5.1.2 使用 useradd 指令(進階用法)

useradd 指令適合自動化腳本,但不會自動建立家目錄。

指令範例
sudo useradd -m -s /bin/bash newuser
sudo passwd newuser
選項說明
  • -m → 自動建立家目錄
  • -s /bin/bash → 指定使用者的預設 Shell

5.2 刪除使用者

若不再需要某個使用者帳戶,可使用 deluseruserdel 指令刪除。

5.2.1 使用 deluser 指令(推薦)

刪除使用者帳戶
sudo deluser newuser
刪除使用者及其家目錄
sudo deluser --remove-home newuser

5.2.2 使用 userdel 指令(進階用法)

指令範例
sudo userdel newuser
刪除使用者及其家目錄
sudo userdel -r newuser

5.3 修改使用者資訊

已建立的使用者帳戶可以透過 usermod 指令進行修改,例如變更名稱、群組或家目錄。

5.3.1 變更使用者名稱

指令範例
sudo usermod -l newname oldname

此指令會將 oldname 更改為 newname

5.3.2 變更家目錄

指令範例
sudo usermod -d /new/home/path user1
同時移動家目錄
sudo usermod -d /home/newuser -m user1

5.3.3 變更使用者群組

新增使用者至 sudo 群組
sudo usermod -aG sudo user1
檢視使用者群組
groups user1

5.3.4 變更使用者密碼

指令範例
sudo passwd user1
範例輸出
Enter new UNIX password: ********
Retype new UNIX password: ********
passwd: password updated successfully

6. 根據不同情境管理 Ubuntu 使用者

Ubuntu 的使用者管理不僅僅是檢視列表、添加或刪除使用者,還需要根據特定的需求進行調整。本節將介紹一些常見的情境,並提供相應的指令來有效管理使用者。

6.1 查找特定類型的使用者

6.1.1 查找具有 sudo 權限的管理員

如果需要檢查系統中所有擁有 sudo 權限的使用者,可以執行以下指令:

指令範例
getent group sudo
範例輸出
sudo:x:27:user1,user2

這表示 user1user2 擁有 sudo 權限。

6.1.2 查找可以登入的使用者

通常,系統帳戶不允許登入,而一般使用者則有 /bin/bash/bin/sh 這類的 shell,可以透過以下指令篩選可登入的使用者:

指令範例
grep '/bin/bash' /etc/passwd
範例輸出
user1:x:1001:1001::/home/user1:/bin/bash
user2:x:1002:1002::/home/user2:/bin/bash

這些使用者擁有互動式 shell,表示他們可以登入系統。

6.1.3 查找系統帳戶(無法登入的使用者)

系統帳戶通常使用 /usr/sbin/nologin/bin/false,可以使用以下指令篩選出來:

指令範例
grep -E '/usr/sbin/nologin|/bin/false' /etc/passwd
範例輸出
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
syslog:x:104:110::/home/syslog:/bin/false

這些帳戶是系統服務使用的,通常不應刪除。

6.2 定期清理不活躍的使用者

6.2.1 檢查最後登入時間

若想查找長時間未登入的使用者,可使用 lastlog 指令:

指令範例
lastlog
範例輸出
Username         Port     From             Latest
root            tty1                      Mon Feb 12 14:02:08 +0000 2025
user1           pts/0    192.168.1.10      Mon Jan 15 10:30:12 +0000 2025
user2           pts/1    192.168.1.20      Never logged in

其中 Never logged in 表示該使用者從未登入過。

刪除不活躍的使用者
sudo deluser --remove-home user2

6.2.2 檢查密碼最後修改時間

可使用 chage 指令來查看使用者最後一次更改密碼的日期:

指令範例
sudo chage -l user1
範例輸出
Last password change            : Jan 15, 2025
Password expires                : Mar 15, 2025
強制使用者修改密碼
sudo passwd --expire user1

執行後,user1 下次登入時將被要求變更密碼。

6.3 檢視目前透過 SSH 連線的使用者

若想知道有哪些使用者正透過 SSH 連線到伺服器,可以使用:

指令範例
who | grep pts
範例輸出
user1    pts/0        192.168.1.10     11:30

這表示 user1192.168.1.10 透過 SSH 登入。

6.4 將所有使用者資訊匯出為 CSV

若需要將所有使用者資訊儲存至 CSV 檔案,可使用 getent 指令:

指令範例
getent passwd | awk -F: '{print $1 "," $3 "," $4 "," $6}' > users.csv
CSV 檔案內容範例
root,0,0,/root
user1,1001,1001,/home/user1
user2,1002,1002,/home/user2

此檔案可用於 Excel 或 Google Sheets 進一步分析。

7. FAQ(常見問題)

以下是有關 Ubuntu 使用者管理的常見問題與解答,幫助解決管理上的疑問。

7.1 可以直接編輯 /etc/passwd 檔案來修改使用者資訊嗎?

回答

不建議直接編輯 /etc/passwd,因為該檔案是系統的核心設定之一,若格式輸入錯誤,可能導致登入問題。

建議方法

可以使用 vipw 指令安全地編輯:

sudo vipw

7.2 whousers 指令的區別?

回答

指令功能
who顯示目前登入的使用者,包含登入時間與來源
users僅列出登入的使用者名稱

7.3 如何查詢特定使用者的登入歷史?

回答

可使用 last 指令:

last user1

7.4 如何更改使用者的密碼?

回答

sudo passwd user1

7.5 如何暫時停用使用者帳戶?

回答

鎖定帳戶
sudo usermod -L user1
解鎖帳戶
sudo usermod -U user1

7.6 如何將使用者加入 sudo 群組?

回答

sudo usermod -aG sudo user1

7.7 如何變更使用者的家目錄?

回答

sudo usermod -d /new/home/path -m user1

7.8 如何刪除使用者及其所有資料?

回答

sudo deluser --remove-home user1

7.9 如何查詢當前登入使用者的詳細活動?

回答

w
範例輸出
 11:35:25 up 2:15,  2 users,  load average: 0.03, 0.02, 0.00
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
user1    tty1                      10:05    1:30m  0.10s  0.10s -bash
user2    pts/0    192.168.1.10      11:30    0.00s  0.05s  0.02s sshd

此指令可用於監控當前使用者活動。

年収訴求