Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

Linux 用戶管理避坑指南:創建、切換、刪除用戶常見錯誤與解決方案

編輯:Linux 系統常見問題解答

用戶管理是 Linux 運維基礎操作,但「No directory, logging in with HOME=/」「userdel: user is currently logged in」等報錯讓新手抓狂。本文總結高頻坑點與標準化解決方案。

坑一:創建用戶後切換提示「No directory, logging in with HOME=/」

現象

su - newuser
No directory, logging in with HOME=/

原因

useradd newuser 默認不創建家目錄,也不複製骨架文件(/etc/skel)。用戶登錄時無家目錄可進入,Shell 退回根目錄 /。

標準創建命令

# 一次性完成:創建用戶、家目錄、指定 Shell、指定主組、設置密碼
useradd -m -s /bin/bash -g users newuser
passwd newuser
  • -m / --create-home:創建家目錄(/home/newuser)並複製 /etc/skel 內容。
  • -s /bin/bash:指定登錄 Shell(默認 /bin/sh,體驗差)。
  • -g users:指定主組(默認創建同名組)。

補救已創建用戶

mkdir /home/newuser
cp -r /etc/skel/. /home/newuser/
chown -R newuser:newuser /home/newuser
chmod 700 /home/newuser

坑二:刪除用戶報「user is currently logged in / used by process」

現象

userdel newuser
userdel: user newuser is currently logged in
# 或
userdel: user newuser is currently used by process 1234

原因

用戶有活躍進程(Shell、screen、tmux、服務進程等)或殘留登錄記錄(/var/run/utmp、/var/log/wtmp)。

解決步驟

  1. 查找並終止進程:
    ps -u newuser
    # 或
    pgrep -u newuser
    kill -9 $(pgrep -u newuser)
  2. 清理殘留登錄記錄(謹慎):
    # utmp 記錄當前登錄會話,wtmp 記錄歷史
    # 直接刪除 utmp 會導致 who、w 命令異常,建議重啟或用 utmpdump 修復
    # 簡單暴力:重啟系統(最乾淨)
    reboot
  3. 強制刪除(最後手段):
    userdel -r -f newuser
    # -r 刪除家目錄和郵件池
    # -f 強制刪除即使用戶有進程或殘留文件
    # 可能報警告:cannot remove /var/mail/newuser: No such file 或 home directory not found,但用戶實際已從 /etc/passwd、/etc/shadow、/etc/group 移除

坑三:忘記指定 Shell 導致提示符異常($ 而非 user@host:~$)

默認 /bin/sh(通常指向 dash 或精簡 bash)不支持命令補全、歷史記錄、彩色提示符等交互特性。始終顯式指定 -s /bin/bash。

坑四:修改用戶屬性時組分離

# 修改主組(-g)會清除附加組(-G),需同時指定
usermod -g newgroup -G group1,group2 user

# 僅添加附加組(保留原有)
usermod -aG docker user  # -a 關鍵:append

坑五:刪除用戶後殘留文件佔用空間/UID 衝突

  • userdel -r 會刪除家目錄、郵件池,但不會刪除其他位置屬於該 UID 的文件(如 /tmp、/var/www、數據目錄)。
  • 新建用戶若復用同一 UID,會「繼承」舊文件擁有權,造成安全隱患。
  • 最佳實踐:刪除用戶前 find / -uid 1001 -ls 掃描全盤殘留文件,遷移或刪除;生產環境禁用 UID 復用,分配新 UID。

標準化操作清單(建議收藏)

操作推薦命令關鍵點
創建用戶useradd -m -s /bin/bash -g group user家目錄、Bash、主組一次到位
設置密碼passwd user交互式輸入兩次
添加附加組usermod -aG group user-a 追加不覆蓋
修改 Shellchsh -s /bin/bash user或 usermod -s
鎖定/解鎖usermod -L/-U user在 /etc/shadow 密碼前加 !
刪除用戶userdel -r user先 kill -9 $(pgrep -u user)
查看用戶信息id user、groups user、finger userUID、GID、組列表、家目錄、Shell

原文參考: Linux中添加用戶、刪除用戶時新手可能遇到的問題

Copyright © Windows教程網 All Rights Reserved