linux下批量修改使用者密碼

技術小甜發表於2017-11-08

對系統定期修改密碼是一個很重要的安全常識,通常,我們修改使用者密碼都使用 passwd user 這樣的命令來修改密碼,但是這樣會進入互動模式,即使使用指令碼也不能很方便的批量修改,除非使用expect 這樣的軟體來實現,難道修改一下密碼還需要單獨安裝一個軟體包嗎? 不,我們其實還有其他很多方法可以讓我們避開互動的,下面具體寫一下具體的實現方式:


第一種:

echo “123456” | passwd –stdin root

echo doiido:helloboy |chpasswd

優點:方便快捷

缺點:如果你輸入的指令能被別人通過history或者其他方式捕獲,那麼這樣的方式是很不安全的,更重要的是如果密碼同時含有單引號和雙引號,那麼則無法通過這種方法修改。

說明:

批量修改Linux密碼 passwd –stdin user 從標準輸入中讀取密碼,所以使用者可以在指令碼中使用如 echo NewPasswd | passwd –stdin username 這種方式來批量更改密碼 但在其它的一些發行版(如Debian/Suse)所提供的passwd並不支援–stdin這個引數 


第二種:

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.firUBn97JKswK9ExO0

zhaohang:$1$i/Gou7.v$Bh2K6sXmxV6/UCxJz8N7b.

b. 使用如下命令對使用者口令進行修改:

chpasswd -e < chpass.txt

c. 可以使用 123456 來登入系統,密碼修改完畢.

優點:可以很快速方便的修改多個使用者密碼

缺點:和上面兩種相比大大增強了安全性


附加介紹:

openssl passwd -1 命令可以輸出shadow裡面的密碼,把這個命令生成的祕串更改為你shadow裡的密碼,那麼下次你登入系統就可以用你的生成密碼的口令來登入了,使用這個命令,即使口令一樣,多次執行生成的密碼串也不一樣。那個hash值對應的密碼是完全隨機的基於64位字元編碼的28位長,因此要破解它是非常困難的,只要不用那些密碼已經公佈出來的hash值建立賬號,即使這些密碼檔案被公佈也還是比較安全的。使用舊的unix雜湊可以去掉 -1 引數。


遠端批量新增賬戶並修改密碼:


# cat ip.txt


192.168.197.151

192.168.197.152

192.168.180.101

192.168.180.102


# cat pass.txt

abcd1

abcd2

abcd3

abcd4


# paste ip.txt pass.txt > all.txt

192.168.197.151 abcd1

192.168.197.152 abcd2

192.168.180.101 abcd3

192.168.180.102 abcd4


while read i;do echo -e ”
$i”;ssh -n $i “useradd leo”;done<ip.txt  

while read i;do echo -e ”
$i”;ssh -n $i “tail -1 /etc/passwd”;done<ip.txt

while read i j;do echo -e ”
$i”;ssh -n $i “echo `$j`|passwd –stdin leo”;done<all.txt

while read i j;do echo -e ”
$i”;ssh -n $i “echo `root:$j`|chpasswd”;done<all-ubuntu.txt (ubuntu無法用passwd –stdin)

本文轉自leonardos51CTO部落格,原文連結: http://blog.51cto.com/leomars/1907230,如需轉載請自行聯絡原作者


相關文章