Linux設(shè)置鎖定和解鎖用戶的三種辦法
在多用戶操作的服務(wù)器中,有時需要鎖定(禁用)用戶。這可能是由于多個原因,例如某個用戶的登錄密碼被泄露,或者某個用戶已經(jīng)離職,但該用戶賬戶下還有未完成轉(zhuǎn)移的文檔。為了歸檔目的,我們不會立即刪除該用戶,而只是暫時鎖定賬戶
方法1:使用 passwd 鎖定和解鎖用戶
關(guān)于 passwd 命令,該命令主要用于管理賬戶密碼,也可以用于鎖定用戶。passwd命令主要操作的是 /etc/passwd 文件。盡管這個文件可以手動修改,但一般不建議這樣做。要使用 passwd 命令鎖定用戶,可以使用 -l 或 --lock 選項:
passwd -l username
鎖定(或解鎖)后,可以使用 passwd 命令的 -S 或 -status 選項來檢查用戶的當(dāng)前狀態(tài):
passwd -S username
其輸出及說明,本文就不在贅述了。解鎖用戶,使用 -u 或 –unlock 選項:
passwd -u username
通過這種方式鎖定用戶存在一個問題,因為它是作用于 /etc/passwd 文件。因此,被鎖定的用戶如果設(shè)置了通過 SSH 密鑰登錄,仍然可以通過 SSH 訪問。我們將在下一節(jié)介紹如何處理這個問題
方法2:使用 usermod 命令鎖定和解鎖用戶
usermod命令主要用于修改 Linux 系統(tǒng)中的用戶賬戶,也可以用于鎖定或解鎖用戶賬戶。要鎖定用戶,可以使用 usermod 命令的 -L 選項:
usermod -L username
解鎖用戶,使用 -U 選項:
usermod -U username
鎖定或解鎖用戶后,如何驗證操作是否成功呢?由于 usermod 命令也作用于 /etc/passwd 文件,可以使用 passwd -S 命令來檢查用戶的狀態(tài)。
不過,既然 usermod 也作用于 /etc/passwd 文件,這意味著被鎖定的用戶仍然可以通過 SSH 密鑰登錄。如何解決這個問題呢?有幾種方法可以考慮:
- 將用戶的 shell 更改為 nologin,這樣用戶將無法登錄 shell。關(guān)于如何修改 shell,我們將在以后單獨介紹,感興趣的朋友可以先行查閱相關(guān)資料。
- 為用戶設(shè)置一個已過期的日期作為賬戶的過期日期,這樣賬戶也會被鎖定。這個日期需要確保在 2024-01-02 和當(dāng)前日期之間。
usermod -L --expiredate 2024-01-02 username
通過上述方法鎖定的用戶,解鎖的時候,可以使用如下方法:
usermod -U --expiredate '' username
方法3:使用 chage 命令鎖定和解鎖用戶
chage 命令用于更改用戶的密碼到期信息。它還可以設(shè)置在特定天數(shù)不活動后自動鎖定用戶。
實際上,上述方法 2 的操作也可以通過以下所示的 chage 命令來實現(xiàn):
chage -E 1 username
使用上述命令,就可以將過期日期設(shè)置為 2024-01-02,可以通過如下方式查看詳細(xì)信息:
$ sudo chage -l standard
Last password change: Nov 07, 2019
Password expires: never
Password inactive: never
Account expires: Jan 02, 2024
Minimum number of days between password change: 0
Maximum number of days between password change: 99999
Number of days of warning before password expires: 7
要解鎖用戶,可以通過如下方式刪除到期日期:
chage -E -1 username