在 Linux 中鎖定和解鎖用戶的三種方法
在多用戶操作的服務器中鎖定(禁用)用戶可能有多種原因,比如某個用戶的登錄密碼被泄露,或者某個用戶離職,但是該用戶下還有部分文檔未完成轉移,而因為歸檔的目的暫時不刪除該用戶,而只是鎖定等等。
今天我們來介紹 3 種在Linux命令行中鎖定用戶的方法,同時也包含如何解鎖用戶。
注意,要執行鎖定用戶的操作,需要有管理員權限,可以是 root 用戶,或者是具有 sudo 權限的用戶。
方法1:使用 passwd 命令鎖定和解鎖用戶
關于 passwd 命令,我們在之前的文章(使用 passwd 命令在 Linux 中處理用戶密碼)中介紹過,它主要用于處理賬戶的密碼,也可以用于鎖定用戶。現在我們再來回顧一下。
在先前那篇文章中我們提到過,passwd 命令主要適用于 /etc/passwd 文件,這個文件可以手動修改,但我們一般不這樣做,而且也不建議手動修改。
要使用 passwd 命令鎖定用戶,可以使用 -l 或 -lock 選項:
鎖定(或解鎖)后,可以使用 passwd 命令的 -S 或 -status 選項來檢查用戶的當前狀態:
其輸出及說明,我們在《使用 passwd 命令在 Linux 中處理用戶密碼》一文中介紹過,大家可參閱一下,本文就不在贅述了。
解鎖用戶,使用 -u 或 –unlock 選項:
通過這種方式鎖定用戶存在一個問題,由于它是作用于 /etc/passwd 文件,因此,被鎖定的用戶仍然可以通過 SSH 密鑰登錄(如果設置了通過 SSH 密碼登錄)。關于這個問題,我們在下面一節來介紹下如何處理。
方法2:使用 usermod 命令鎖定和解鎖用戶
usermod 命令主要用于修改 Linux 中的用戶賬戶,也可以用來鎖定或解鎖用戶。
鎖定用戶,可以使用 usermod 命令的 -L 選項:
解鎖用戶,使用 -U 選項:
鎖定或解鎖后,如何驗證操作是否成功了呢?usermod 命令也適用于 /etc/passwd 文件,因此也可以使用 passwd -S <username> 命令來檢查用戶的狀態。
既然 usermod 用戶也作用于 /etc/passwd 文件,那么這也意味著被鎖定的用戶仍然可以通過 SSH 密鑰登錄,如何解決這個問題呢?
有一種辦法,是可以將用戶的 shell 更改為 nologin,這樣將不允許用戶登錄 shell。至于如何修改 shell,我們將在以后單獨介紹,感興趣的朋友可以先行查閱相關資料。
另外一種辦法,是為用戶設置一個過去的日期作為過期日期,意思是在過去的那個日期禁用賬戶,這樣也可以鎖定它。
過去的這個日期,需要確保是在 1970-01-02 和當前日期之間。
通過上述方法鎖定的用戶,解鎖的時候,可以使用如下方法:
方法3:使用 chage 命令鎖定和解鎖用戶
chage 命令用于更改用戶密碼到期信息。它可以用于在非活動的特定天數后自動鎖定非活動用戶。
基本上,通過上面方法 2 所做的工作,也可以通過如下所示的 chage 命令來實現:
使用上述命令,就可以將過期日期設置為 1970-01-02,可以通過如下方式查看詳細信息:
要解鎖用戶,可以通過如下方式刪除到期日期:
在 Linux 命令行中,要完成某個任務,一般來說都會有多種方法。我們在本文中介紹了三種鎖定/解鎖用戶的方法,大家如有其他更好的方法,歡迎討論。