不得不感嘆一下箱沦,網(wǎng)上的水軍真是多,今天就搜了“l(fā)inux批量修改密碼”雇庙,發(fā)現(xiàn)網(wǎng)上的博客谓形,都是一個(gè)樣,我要的是sha512的密碼……
1状共、批量創(chuàng)建用戶
創(chuàng)建用戶套耕,需要用到useradd和newusers,useradd就不多說了峡继,newusers是用來批量創(chuàng)建和修改用戶的命令冯袍。
使用它需要先建立一個(gè)用戶賬號文件,文件格式需要和passwd文件格式一樣碾牌。
下面我來創(chuàng)建用戶文件:
[root@CentOS7 root]# newusers users.txt
[root@CentOS7 root]# tail -4 /etc/passwd #下面是user.txt文件的內(nèi)容康愤,發(fā)現(xiàn)已經(jīng)創(chuàng)建成功
user1:x:1011:1011::/home/user:/bin/bash
user2:x:1012:1011::/home/user:/bin/bash
user3:x:1013:1011::/home/user:/bin/bash
user4:x:1014:1011::/home/user:/bin/bash
2、批量設(shè)置密碼
2.1使用passwd和--stdin組合
我們通常使用的命令是這樣的:
[root@CentOS7 root]# echo "centos" |passwd --stdin user1
Changing password for user user1.
passwd: all authentication tokens updated successfully.
優(yōu)點(diǎn):方便快捷舶吗,不需要交互式更改密碼征冷,這樣就可以在shell腳本中直接使用這個(gè)命令修改密碼了
缺點(diǎn):如果你輸入的指令能被別人通過history或者其他方式捕獲,那么這樣的方式是很不安全的誓琼,更重要的是如果密碼同時(shí)含有單引號和雙引號检激,那么則無法通過這種方法修改肴捉。另外其它的一些發(fā)行版(如Debian/Suse)所提供的passwd并不支持--stdin這個(gè)參數(shù)
2.2使用chpasswd
2.2.1chpasswd未加密密碼
chpasswd其實(shí)是通過用戶輸入'用戶名:密碼'來更改一組用戶的密碼,還是讀取文件里的內(nèi)容叔收,文件格式也是'用戶名:密碼'齿穗,也就成為了一個(gè)可以批量修改密碼的工具。
格式1
:# echo 用戶名:密碼 | chpasswd
[root@CentOS7 root]# echo "user1:redhat"|chpasswd
格式2:
:#cat passwd.txt | chpasswd(centos7)
:#chpasswd < passwd.txt(centos 6以前)
[root@CentOS7 root]# cat file |chpasswd #即可成功
#注意文件不能有空行
#文件符合user:passwd形式
2.2.2chpasswd加密密碼
chpasswd -e選項(xiàng)是可以使用加密方式來加密的饺律,讓我們先來生成密碼
[root@CentOS7 root]# openssl passwd -1 12345678 > file
#然后進(jìn)入file里面窃页,添加上用戶名,讓其符合user:passwd形式
[root@CentOS7 root]# cat file |chpasswd -e #就成功了
說明:openssl passwd用來生成MD5的加密密碼复濒。
密碼雖然一樣脖卖,但是如果你執(zhí)行第二次,則會(huì)發(fā)現(xiàn)不一樣巧颈,是因?yàn)樗且詴r(shí)間來“加鹽”畦木?
加鹽就是使用一個(gè)字符串來對另一個(gè)字符串進(jìn)行加密,如果使用的鹽不一樣洛二,則生成的密碼自然就不一樣馋劈。
使用同樣的"鹽",則生成密碼一樣
[root@CentOS7 root]# openssl passwd -1 -salt 'abc' 123456
$1$abc$mJPQCTATLDV5aNzcHMYLr/
[root@CentOS7 root]# openssl passwd -1 -salt 'abc' 123456
$1$abc$mJPQCTATLDV5aNzcHMYLr/
注意:我們centos6以后的系統(tǒng)默認(rèn)都是sha512進(jìn)行加密的,因?yàn)槭褂肕D5加密早就被破解了晾嘶,但是使用生成的MD5也可以當(dāng)做密碼妓雾,是因?yàn)槊恳粋€(gè)密碼前面都有一個(gè)字符來表示密碼加密的算法,比如上面的密碼垒迂,1代表MD5械姻,6則代表sha512.
網(wǎng)上說了一大堆,都只是生成了MD5机断,沒人生成sha512的密碼楷拳,后來網(wǎng)上一查,發(fā)現(xiàn)要想生成sha512需要使用腳本來生成-_-.(以后一定自己寫一個(gè)可以生成sha512密碼的腳本)