Linux

更改 Linux 伺服器上所有使用者的密碼

  • December 13, 2009

通過一次性重置每個使用者的密碼,我需要鎖定 10 台 Linux 伺服器。這背後的故事很長,但總的想法是我需要它在特定時間很快發生。我將為所有使用者帳戶使用一個單一的、嚴格的密碼(只是最初),因此不需要從密碼文件或類似的東西中讀取。

所以我需要的是最好的編寫腳本的方法,這樣我就可以一次重置所有密碼。我可以使用該cat /etc/passwd | cut -f1 -d:命令提取使用者帳戶列表,但最終會包括所有帳戶,包括我認為不應該亂用的系統帳戶。

那麼我在這裡最好的選擇是什麼?

**筆記!**重置密碼時,您還需要確保從~/.ssh/authorized_keys文件中擦除任何額外內容。直到後來才記得這一點——謝天謝地,我幾乎把伺服器鎖得很緊,除了伺服器到伺服器的東西之外,authorized_keys 中沒有任何東西。

您可以選擇 UID >= 500 以確保您只獲得真實使用者而不是系統帳戶,然後使用選項 –stdin 的 passwd 更改密碼。

像這樣的東西應該​​工作:

while IFS=: read u x nn rest; do  if [ $nn -ge 500 ]; then echo "YOURSTRONGPASSWORD" |passwd --stdin $u; fi  done < /etc/passwd

您可以使用類似“newusers”的命令在批處理模式下更新使用者密碼。創建一個包含 user:password 組合的文件並通過 newusers 載入它… 輸入的密碼未加密,但在此過程中將被加密。

newusers userpass.txt

userpass.txt 看起來像 /etc/passwd 文件。相同的格式。

我會將 /etc/passwd 複製到一個新文件,刪除系統帳戶行並將第二個欄位“x”替換為您希望使用的通用密碼,然後使用 newusers 命令重新導入。

引用自:https://serverfault.com/questions/93216