對系統定期修改密碼是一個很重要的安全常識,通常,我們修改用戶密碼都使用passwd user這樣的命名來修改密碼,但是這樣會進入交互模式,即使使用腳本也不能很方便的批量修改,除非使用expect這樣的軟件來實現,難道修改一下密碼還需要單獨安裝一個軟件包嗎?不,我們其實還有其他很多方法可以讓我們避免交互的,下面具體寫一下具體的實現方式:
一、
echo "123456" | passwd --stdin root
優點:方便快捷
缺點:如果你輸入的指令能被別人通過history或者其他方式捕獲,那么這樣的方式是很不安全,更重要的是如果密碼同時含有單引號和雙引號,那么則無法通過這種方法修改。
二、
a、首先將用戶名密碼一起寫入一個臨時文件。
cat chpass.txt
root:123456
zhaohang:123456
b、使用如下命令對用戶口令進行修改:
chpasswd < chpass.txt
c、可以使用123456來登錄系統,密碼修改完畢。
優點:可以很快速方便的修改多個用戶密碼
缺點:明文密碼寫在文件里仍然顯得不夠安全,但是避免了第一種修改方法不能有特殊字符串密碼的情況。
三、
a、用openssl passwd -1來生成用戶口令,連同用戶名一起寫入文件。
cat chpass.txt
root:$1$ri2hceVU$WIf.firUBn97JKswK9Ex00
b、使用如下命令對用戶口令進行修改:
chpasswd -e < chpass.txt
c、可以使用123456來登錄系統,密碼修改完畢。
優點:可以很快方便的修改多個用戶密碼
缺點:和上面兩種相比大大增強了安全性
附加介紹:
openssl passwd -1命令可以輸出shadow里面的密碼,把這個命令生成的秘串更改為你shadow里的密碼,那么下次你登錄系統就可以用你的生成密碼的口令來登錄了,使用這個命令,即使口令一樣,多次執行生成的密碼串也不一樣。那個hash值對應的密碼是完全隨機的基於64位字符編碼的28位長,因此要破解它是非常困難的,只要不用那些密碼已經公布出來的hash值創建賬號,即使這些密碼文件被公布也還是比較安全的。