Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux 禁止使用者登入的 3 種方法:帳號鎖定、Shell 變更、nologin 檔案

編輯:Linux 教學

系統維護、安全稽核、帳號異常時,需暫時或永久禁止特定使用者或所有使用者登入。本文介紹三種標準方法,適用於所有主流 Linux 發行版。

方法一:passwd -l / -u 鎖定/解鎖帳號密碼(推薦)

最簡單、標準、可逆的方式。鎖定後使用者無法使用密碼登入(SSH、控制台、圖形介面皆無效),但不影響 SSH 金鑰認證、sudo、cron、systemd 服務帳號等非密碼認證方式。

# 鎖定使用者 lynn
passwd -l lynn
# 輸出:Locking password for user lynn. passwd: Success

# 解鎖
passwd -u lynn

原理:在 /etc/shadow 中該使用者密碼雜湊前加上 !(如 !$6$...),導致密碼驗證永遠失敗。

查詢鎖定狀態:

passwd -S lynn
# 輸出範例:lynn LK 2024-01-15 0 99999 7 -1  (LK = Locked)

方法二:修改登入 Shell 為 /sbin/nologin 或 /bin/false

編輯 /etc/passwd,將使用者的登入 Shell(第 7 欄)改為 /sbin/nologin 或 /bin/false。

# 原始
lynn:x:1000:1000::/home/lynn:/bin/bash

# 修改為
lynn:x:1000:1000::/home/lynn:/sbin/nologin

或使用 usermod 指令:

usermod -s /sbin/nologin lynn
# 恢復
usermod -s /bin/bash lynn

差異:

  • /sbin/nologin:顯示友善訊息「This account is currently not available.」並記錄登入嘗試至 /var/log/secure。
  • /bin/false:直接靜默失敗,無訊息,適合系統服務帳號。

影響範圍:阻擋所有需要登入 Shell 的服務,但不影響 SSH 通道、SCP、SFTP、rsync over SSH、Git over SSH 等非互動式連線(除非在 /etc/ssh/sshd_config 設定 ForceCommand 或使用 Match User 限制)。

方法三:建立 /etc/nologin 禁止所有非 root 使用者登入

系統維護窗口期間,建立此檔案即可阻擋所有一般使用者登入(含 SSH、控制台、圖形介面)。

# 建立檔案(內容會顯示給嘗試登入的使用者)
echo "系統維護中,暫停登入服務,預計 02:00 恢復。" > /etc/nologin

# 維護結束後移除
rm -f /etc/nologin

機制:PAM 模組 pam_nologin.so 在認證階段檢查此檔案存在與否。root 使用者不受影響(可透過 pam_succeed_if.so uid = 0 例外)。

注意:此法不影響已建立的 SSH 連線,僅阻擋新連線認證。

方法比較與選擇建議

方法適用場景影響範圍可逆性備註
passwd -l暫時停用個人帳號、離職交接密碼認證登入高(-u 即時解鎖)不影響 SSH 金鑰、sudo、排程任務
usermod -s /sbin/nologin系統服務帳號、永久停用帳號所有需 Shell 的登入高不影響 SFTP/SCP/SSH 隧道
/etc/nologin系統維護窗口、緊急安全事件所有非 root 使用者高(刪檔即恢復)需配合 PAM,root 不受影響

進階:僅禁止 SSH 密碼登入,保留金鑰登入

編輯 /etc/ssh/sshd_config:

PasswordAuthentication no
PubkeyAuthentication yes
# 針對特定使用者
Match User lynn
    PasswordAuthentication no
    PubkeyAuthentication yes

重啟 SSH:systemctl reload sshd。此法更精準控制遠端存取方式。

總結

  • 臨時停用個人帳號 → passwd -l username
  • 建立服務帳號/永久停用 → usermod -s /sbin/nologin username
  • 系統維護全面封鎖 → echo "維護中" > /etc/nologin
  • 精細控制 SSH 認證方式 → 修改 sshd_config 的 PasswordAuthentication/PubkeyAuthentication

操作前建議備份 /etc/passwd、/etc/shadow、/etc/ssh/sshd_config,並在另一終端機保持 root 連線以防誤鎖自己。

Copyright © Windows教程網 All Rights Reserved