Ssh

完全鎖定伺服器上的使用者帳戶,包括 ssh

  • May 2, 2022

如果可能的話,我需要鎖定一些使用者帳戶,而不要弄亂他們的 HOME。

正常的方法是usermod -L user,但它似乎使用公鑰身份驗證(通常在此伺服器上使用)保持開放的 ssh 登錄。

我知道我可以只是mv /home/user/.ssh /home/user/_ssh或類似的東西,但這是正確的做法嗎?

我錯過了什麼?

文件man usermod為您提供了推薦的解決方案:

-L,**--lock**鎖定使用者密碼。!這會在加密密碼前面放置一個,從而有效地禁用密碼。您不能將此選項與-p或一起使用-U

注意:如果您想鎖定帳戶(不僅僅是使用密碼訪問),您還應該EXPIRE_DATE1.

接著

-e,**--expiredate EXPIRE_DATE**使用者帳戶將被禁用的日期。日期以格式指定YYYY-MM-DD

EXPIRE_DATE參數將禁用帳戶到期。

所以,把它變成一個真實的例子

usermod -L -e 1 someuser     # Lock
usermod -L -e '' someuser    # Unlock

如果您可能在其中設置了預設到期日期,/etc/default/useradd則可以將其值(如果有)作為解鎖過程的一部分包括在內:

usermod -U -e "$( . /etc/default/useradd; echo "$EXPIRE")" someuser

對於帳戶過期的使用者,計劃通過cron的作業也會被禁用,但不僅僅是鎖定帳戶。journalctl -u cron來自顯示過期使用者帳戶名的錯誤消息(在本例中test2):

Apr 30 11:47:01 pi CRON[26872]: pam_unix(cron:account): account test2 has expired (account expired)
Apr 30 11:47:01 pi cron[472]: Authentication failure
Apr 30 11:47:01 pi CRON[26872]: Authentication failure

計劃的作業at仍未嘗試。(我不清楚他們是否會在超過到期日後執行;從經驗上看似乎不是。)

已在鎖定和過期帳戶下執行的其他程序不受影響並繼續執行。

引用自:https://unix.stackexchange.com/questions/700826