本篇文章完整介紹 Linux 使用者與權限管理,包括 useradd、usermod、chmod、chown、groupadd 及 sudo 設定。透過實務案例、指令對照表與排錯技巧,幫助系統管理者快速掌握使用者權限與安全管理策略。
Linux 使用者與權限管理概述
Linux 採多使用者、多群組架構管理系統安全與檔案存取權限,確保不同租戶或使用者間的資料隔離與操作安全。了解使用者、群組與權限的概念,是維護系統安全與執行自動化任務的基礎。
- 新增、修改、刪除使用者帳號
- 群組管理與附加群組設定
- 檔案與目錄權限調整 (chmod / chown)
- sudo 權限授予與限制
- 實務排錯與安全案例分析
- 批次管理與自動化操作
Linux 使用者與權限指令對照表
| 指令 | 功能 | 範例 | 安全建議 / 注意事項 |
|---|---|---|---|
| useradd | 新增使用者帳號 | sudo useradd -m username | 建立前先確認帳號名稱唯一,密碼需設定強度 |
| usermod | 修改使用者屬性,如群組或名稱 | sudo usermod -aG groupname username | 避免誤加使用者至敏感群組 |
| userdel | 刪除使用者帳號及家目錄 | sudo userdel -r username | 刪除前備份重要資料 |
| passwd | 設定或修改使用者密碼 | sudo passwd username | 使用安全密碼並定期更新 |
| groupadd | 新增群組 | sudo groupadd developers | 群組命名需明確,不重複 |
| groups / id | 查看使用者所屬群組 | groups username / id username | 確認授權群組,避免權限混亂 |
| chmod | 調整檔案/目錄權限 | chmod 755 filename | 避免開放敏感目錄給其他使用者 |
| chown | 設定檔案/目錄擁有者與群組 | sudo chown user:group filename | 確保擁有者與群組正確,以免資料外洩 |
| sudo | 以管理權限執行指令 | sudo command | 僅授權必要使用者,並留存操作日誌 |
| 批次操作 | 對多個使用者或檔案同時操作 | for user in alice bob charlie; do sudo useradd -m $user; done | 執行前確認列表及順序,避免覆蓋或錯誤 |
實務案例與批次操作
案例一:useradd – 建立新使用者
# 建立單一使用者 alice 並建立家目錄
sudo useradd -m alice
# 設定 alice 的登入密碼(互動模式)
sudo passwd alice
# 批次建立使用者 bob、charlie、david
for user in bob charlie david; do
sudo useradd -m $user # 建立使用者及家目錄
sudo passwd $user # 設定密碼(互動模式)
done
# 版本註解:useradd 與 passwd 指令均正確,適用於所有現代 Linux 系統
案例二:usermod – 修改使用者屬性
# 將 alice 加入 developers 群組
sudo usermod -aG developers alice
# 將使用者名稱 alice 改為 alice_new
sudo usermod -l alice_new alice
# 批次將 bob、charlie、david 加入 developers 群組
for user in bob charlie david; do
sudo usermod -aG developers $user
done
# 版本註解:usermod -aG 與 -l 語法正確,批次操作無誤
案例三:userdel – 刪除使用者
# 刪除單一使用者 alice_new 並刪除家目錄
sudo userdel -r alice_new
# 批次刪除使用者 bob、charlie、david
for user in bob charlie david; do
sudo userdel -r $user
done
# 版本註解:userdel -r 可刪除家目錄與使用者帳號,語法正確
案例四:passwd – 修改密碼
# 修改使用者 bob 密碼(互動模式)
sudo passwd bob
# 版本註解:passwd 指令正確,需手動輸入新密碼
案例五:groupadd – 新增群組
# 建立新的群組 testers
sudo groupadd testers
# 版本註解:groupadd 語法正確,適用於現代 Linux
案例六:groups / id – 查看群組
# 查看 alice 所屬群組
groups alice
# 查看 alice UID、GID 及群組資訊
id alice
# 版本註解:groups 與 id 指令正確,可顯示群組及使用者資訊
案例七:chmod – 調整檔案權限
# 設定 /projectA 權限為 rwxr-xr-x
chmod 755 /projectA
# 設定 /projectB 權限為 rwx------
chmod 700 /projectB
# 批次修改 /projectA 下所有檔案權限為 644
for f in /projectA/*; do
chmod 644 "$f"
done
# 版本註解:chmod 語法正確,迴圈加雙引號可避免空格問題
案例八:chown – 修改擁有者與群組
# 將 /projectA 擁有者改為 alice,群組改為 developers
sudo chown alice:developers /projectA
# 批次修改 /projectA 下所有檔案擁有者與群組
for f in /projectA/*; do
sudo chown alice:developers "$f"
done
# 版本註解:chown 語法正確,適用於批次修改擁有者與群組
案例九:sudo – 以管理權限執行指令
# 系統更新
sudo apt update
# 重新啟動 Apache 服務
sudo systemctl restart apache2
# 版本註解:sudo apt 與 systemctl 語法正確,適用於現代 Linux 系統
FAQ 常見問題
如何查看使用者所屬群組?
使用 groups username 或 id username 指令查看使用者所屬群組,必要時可比對 /etc/group 檔案。
chmod 755 與 chmod 700 差別?
755:擁有者可讀寫執行,其他使用者可讀執行;700:僅擁有者可讀寫執行。使用 700 適合私人資料夾,避免其他群組或使用者存取。
如何授權使用者執行特定命令?
透過 sudoers 設定,或將使用者加入 sudo 群組,再搭配命令限制,如 visudo 編輯,指定允許執行的命令,防止濫用。
如何查看使用者密碼最後更改時間?
使用 chage -l username 指令可以查看使用者密碼最後更改時間及過期資訊。
如何限制使用者只能登入特定終端?
編輯 /etc/ssh/sshd_config 或 /etc/security/access.conf 來限制使用者登入特定終端或 IP。
如何批次修改多個檔案權限?
使用 for 迴圈搭配 chmod,如 for f in /dir/*; do chmod 644 $f; done,可快速批次修改。
如何批次變更檔案擁有者?
使用 chown 搭配 for 迴圈,如 for f in /dir/*; do chown user:group $f; done。
如何檢查 sudo 執行紀錄?
查看 /var/log/auth.log 或使用 sudo journalctl _COMM=sudo,確認使用者執行指令與授權。
