在日常工作中,我們修改使用者密碼都使用 passwd user 這樣的指令來修改密碼,但是這樣會進入互動模式,即使使用腳本也不能很友善的批量修改,除非使用expect 這樣的軟體來實作,難道修改一下密碼還需要單獨安裝一個軟體包嗎? 不,我們其實還有其他很多方法可以讓我們避開互動的,下面具體寫一下具體的實作方式:
建立測試使用者
useradd -d /usr/local/testfiles -s /bin/bash testuser
1.第一種
echo "123456" | passwd --stdin testuser
優點:友善快捷
缺點:如果你輸入的指令能被别人通過history或者其他方式捕獲,那麼這樣的方式是很不安全的,更重要的是如果密碼同時含有單引号和雙引号,那麼則無法通過這種方法修改。
注意:批量修改Linux密碼 passwd --stdin user 從标準輸入中讀取密碼,是以使用者可以在腳本中使用如 echo NewPasswd | passwd --stdin username 這種方式來批量更改密碼 但在其它的一些發行版(如Debian/Suse)所提供的passwd并不支援--stdin這個參數
2.第2種
chpasswd其實是通過使用者輸入'使用者名:密碼'來更改一組使用者的密碼,還是一個可以批量修改密碼的工具,具體的用法詳見chpasswd用法:
格式:echo 使用者名:密碼 | chpasswd
修改賬号為testuser的密碼為1234567
echo testuser:1234567 | chpasswd
也可以批量修改多個使用者的密碼
(1).首先将使用者名密碼一起寫入一個臨時檔案
cat users.txt
zhansan:123456
lisi:123456
wangwu:123456
(2).使用如下指令對使用者密碼進行修改
chpasswd < users.txt
此時,可以使用 123456 來登入系統,密碼修改完畢
優點:可以很快速友善的修改多個使用者密碼
缺點:明文密碼寫在檔案裡仍然顯得不夠安全,但是避免了第一種修改方式不能有特殊字元串密碼的情況
3.第3種(強烈推薦此種方式)
(1).用 openssl passwd -1 來生成使用者密碼(此處的使用者的密碼為:123456)
openssl passwd -1
輸出的密碼代碼為:
$1$eqcranCa$KlmtYjHYWp.Qb4GaB/wpq/
然後建立使用者檔案users.txt
cat users.txt
testuser:$1$eqcranCa$KlmtYjHYWp.Qb4GaB/wpq/
(2).使用如下指令對使用者密碼進行修改
chpasswd -e < users.txt
密碼修改完畢可以使用123456來登陸