userdel 是 Linux 移除使用者帳號的底層指令,直接操作 /etc/passwd、/etc/shadow、/etc/group、/etc/gshadow 等系統資料庫。正確使用需理解 -r(移除家目錄)、-f(強制移除)選項差異,以及對登入中使用者的影響。本文詳細說明操作模式、風險與最佳實踐。
userdel [選項] 使用者名稱
| 選項 | 功能 |
|---|---|
-r, --remove | 同時移除家目錄(/home/username)與郵件池(/var/mail/username) |
-f, --force | 強制移除:即使使用者正在登入、進程仍在運行、家目錄非擁有者也執行移除 |
-Z, --selinux-user | 移除 SELinux 使用者映射(需 SELinux 啟用) |
sudo userdel john
/etc/passwd、/etc/shadow、/etc/group、/etc/gshadow 中關於 john 的記錄。/home/john 及所有檔案,擁有者顯示為數字 UID(如 1002)。john 為主要群組唯一成員,該群組亦被移除。-rsudo userdel -r john
/home/john 目錄及所有內容。/var/mail/john 郵件池(若存在)。-f(高風險)sudo userdel -f john
john 正在登入(SSH、TTY、圖形介面),強制從系統資料庫移除帳號。-r)。sudo useradd -m -s /bin/bash testuser
echo "testuser:password" | sudo chpasswd
$ userdel testuser
userdel: Permission denied.
# 需 sudo 或 root
sudo userdel testuser
# 無輸出表示成功
ls -ld /home/testuser
# drwx------ 2 1002 1002 4096 Mar 15 10:30 /home/testuser
# 目錄仍在,擁有者變數字 UID
sudo useradd -m -s /bin/bash testuser2
sudo userdel -r testuser2
ls -ld /home/testuser2
# ls: cannot access '/home/testuser2': No such file or directory
# 家目錄已刪除
# 終端機 1: ssh testuser@localhost (保持登入)
# 終端機 2 (root):
sudo userdel -f testuser
# 輸出: userdel: user testuser is currently used by process 12345
# 但指令返回 0,帳號已從 /etc/passwd 移除
id testuser
# id: 'testuser': no such user
# 終端機 1 仍可操作,但登出後無法再登入
sudo deluser --remove-home testuser
# 等同 userdel -r,但提供更友善提示、備份選項(--backup)
userdel -r:確保帳號與資料同步清除。tar czf /backup/user_john_$(date +%F).tar.gz /home/john。pgrep -u john、lsof -u john,必要時 kill -9 或通知使用者登出。crontab -u john -l、atq -u john,避免孤立任務報錯。grep john /etc/sudoers /etc/sudoers.d/*,同步移除授權。-f:除非極端情況且理解風險。userdel 是帳號管理的基石指令。掌握 -r(完整清除)與 -f(危險強制)的行為差異,配合移除前備份、進程檢查、權限清理,即能安全、乾淨地管理 Linux 使用者生命週期。Debian/Ubuntu 系統建議優先使用 deluser 獲得更佳體驗。