天天看點

在shell腳本中直接使用指令修改賬戶密碼

在日常工作中,我們修改使用者密碼都使用 passwd user 這樣的指令來修改密碼,但是這樣會進入互動模式,即使使用腳本也不能很友善的批量修改,除非使用expect 這樣的軟體來實作,難道修改一下密碼還需要單獨安裝一個軟體包嗎? 不,我們其實還有其他很多方法可以讓我們避開互動的,下面具體寫一下具體的實作方式:

建立測試使用者

useradd -d /usr/local/testfiles -s /bin/bash testuser      

1.第一種

echo "123456" | passwd --stdin testuser      
在shell腳本中直接使用指令修改賬戶密碼

優點:友善快捷

缺點:如果你輸入的指令能被别人通過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      
在shell腳本中直接使用指令修改賬戶密碼

也可以批量修改多個使用者的密碼

(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/      
在shell腳本中直接使用指令修改賬戶密碼

然後建立使用者檔案users.txt

cat users.txt

testuser:$1$eqcranCa$KlmtYjHYWp.Qb4GaB/wpq/      
(2).使用如下指令對使用者密碼進行修改
chpasswd -e < users.txt      

密碼修改完畢可以使用123456來登陸

繼續閱讀