linux passwd批量修改用戶密碼
對(duì)系統(tǒng)定期修改密碼是一個(gè)很重要的安全常識(shí),通常,我們修改用戶密碼都使用 passwd user 這樣的命令來(lái)修改密碼,但是這樣會(huì)進(jìn)入交互模式,即使使用腳本也不能很方便的批量修改,除非使用expect 這樣的軟件來(lái)實(shí)現(xiàn)linux命令大全,難道修改一下密碼還需要單獨(dú)安裝一個(gè)軟件包嗎? 不,我們其實(shí)還有其他很多方法可以讓我們避開(kāi)交互的,下面具體寫(xiě)一下具體的實(shí)現(xiàn)方式:
第一種:
echo "123456" | passwd --stdin root
優(yōu)點(diǎn):方便快捷
缺點(diǎn):如果你輸入的指令能被別人通過(guò)history或者其他方式捕獲,那么這樣的方式是很不安全的,更重要的是如果密碼同時(shí)含有單引號(hào)和雙引號(hào),那么則無(wú)法通過(guò)這種方法修改。
說(shuō)明:
批量修改linux密碼 passwd --stdin user 從標(biāo)準(zhǔn)輸入中讀取密碼,所以用戶可以在腳本中使用如 echo NewPasswd | passwd --stdin username 這種方式來(lái)批量更改密碼 但在其它的一些發(fā)行版(如Debian/Suse)所提供的passwd并不支持--stdin這個(gè)參數(shù)
第二種:
a. 首先將用戶名密碼一起寫(xiě)入一個(gè)臨時(shí)文件.
cat chpass.txt
root:123456
zhaohang:123456
b. 使用如下命令對(duì)用戶口令進(jìn)行修改:
chpasswd < chpass.txt
c. 可以使用 123456 來(lái)登錄系統(tǒng),密碼修改完畢.
優(yōu)點(diǎn):可以很快速方便的修改多個(gè)用戶密碼
缺點(diǎn):明文密碼寫(xiě)在文件里仍然顯得不夠安全,但是避免了第一種修改方式不能有特殊字符串密碼的情況.
第三種:
a. 用 openssl passwd -1 來(lái)生成用戶口令,連同用戶名一起寫(xiě)入文件.
cat chpass.txt
root:$1$ri2hceVU$WIf.firUBn97JKswK9ExO0
zhaohang:$1$i/Gou7.v$Bh2K6sXmxV6/UCxJz8N7b.
b. 使用如下命令對(duì)用戶口令進(jìn)行修改:
chpasswd -e < chpass.txt
c. 可以使用 123456 來(lái)登錄系統(tǒng),密碼修改完畢.
優(yōu)點(diǎn):可以很快速方便的修改多個(gè)用戶密碼
缺點(diǎn):和上面兩種相比大大增強(qiáng)了安全性
附加介紹:
openssl passwd -1 命令可以輸出shadow里面的密碼,把這個(gè)命令生成的秘串更改為你shadow里的密碼,那么下次你登錄系統(tǒng)就可以用你的生成密碼的口令來(lái)登錄了,使用這個(gè)命令,即使口令一樣,多次執(zhí)行生成的密碼串也不一樣。那個(gè)hash值對(duì)應(yīng)的密碼是完全隨機(jī)的基于64位字符編碼的28位長(zhǎng),因此要破解它是非常困難的,只要不用那些密碼已經(jīng)公布出來(lái)的hash值創(chuàng)建賬號(hào),即使這些密碼文件被公布也還是比較安全的。使用舊的unix哈希可以去掉 -1 參數(shù)。
[root@WEB01 ~]# openssl passwd -1
Password: 123456
Verifying - Password: 123456
$1$ri2hceVU$WIf.firUBn97JKswK9ExO0
也可以直接使用如下命令來(lái)直接生成:
[root@WEB01 ~]# openssl passwd -1 123456
[root@WEB01 ~]# openssl passwd -1 -salt "yoctor" 123456
上面命令中的 salt 自己隨便輸入些東西
由于任何人都可以模擬這些哈希算法,而現(xiàn)實(shí)生活中,又有許多用戶的密碼位數(shù)過(guò)短,或者設(shè)置的是同樣的密碼,這就會(huì)導(dǎo)致一個(gè)結(jié)果:即使經(jīng)過(guò)加密后,很多數(shù)據(jù)庫(kù)中存儲(chǔ)的加密后的密文,由于它們對(duì)應(yīng)的原密碼是相同的,所以經(jīng)過(guò)加密后生成的密文也是一樣的?蛻舳嗽诮邮盏絟ttp服務(wù)器的身份認(rèn)證要求后,會(huì)提示用戶輸入用戶名及密碼linux命令大全,然后將用戶名及密碼以base64加密,加密后的密文將附加于請(qǐng)求信息中,如當(dāng)用戶名為anjuta,密碼為:123456時(shí),客戶端將用戶名和密碼用“:”合并,并將合并后的字符串用base64加密為密文,并于每次請(qǐng)求數(shù)據(jù)時(shí),將密文附加于請(qǐng)求頭(request header)中。不過(guò)蘋(píng)果也發(fā)現(xiàn)了該漏洞,在ios 10.1這個(gè)哈希值漏洞被蘋(píng)果刪除,并在ios 10.2中進(jìn)一步強(qiáng)化了密碼加密程度。