不得不感嘆一下,網(wǎng)上的水軍真是多,今天就搜了“l(fā)inux批量修改密碼”,發(fā)現(xiàn)網(wǎng)上的博客,都是一個樣,我要的是sha512的密碼……
1、批量創(chuàng)建用戶
創(chuàng)建用戶,需要用到useradd和newusers,useradd就不多說了,newusers是用來批量創(chuàng)建和修改用戶的命令。
使用它需要先建立一個用戶賬號文件,文件格式需要和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、批量設置密碼
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)點:方便快捷,不需要交互式更改密碼,這樣就可以在shell腳本中直接使用這個命令修改密碼了
缺點:如果你輸入的指令能被別人通過history或者其他方式捕獲,那么這樣的方式是很不安全的,更重要的是如果密碼同時含有單引號和雙引號,那么則無法通過這種方法修改。另外其它的一些發(fā)行版(如Debian/Suse)所提供的passwd并不支持--stdin這個參數(shù)
2.2使用chpasswd
2.2.1chpasswd未加密密碼
chpasswd其實是通過用戶輸入'用戶名:密碼'來更改一組用戶的密碼,還是讀取文件里的內(nèi)容,文件格式也是'用戶名:密碼',也就成為了一個可以批量修改密碼的工具。
格式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選項是可以使用加密方式來加密的,讓我們先來生成密碼
[root@CentOS7 root]# openssl passwd -1 12345678 > file
#然后進入file里面,添加上用戶名,讓其符合user:passwd形式
[root@CentOS7 root]# cat file |chpasswd -e #就成功了
說明:openssl passwd用來生成MD5的加密密碼。
密碼雖然一樣,但是如果你執(zhí)行第二次,則會發(fā)現(xià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)默認都是sha512進行加密的,因為使用MD5加密早就被破解了,但是使用生成的MD5也可以當做密碼,是因為每一個密碼前面都有一個字符來表示密碼加密的算法,比如上面的密碼,1代表MD5,6則代表sha512.
網(wǎng)上說了一大堆,都只是生成了MD5,沒人生成sha512的密碼,后來網(wǎng)上一查,發(fā)現(xiàn)要想生成sha512需要使用腳本來生成-_-.(以后一定自己寫一個可以生成sha512密碼的腳本)