最近在看salt stack,需要批量修改用戶的密碼,在腳本中顯示你的明文密碼是不安全的,所以想使用shadow文件中的加密後密碼放在腳本里 就安全很多.
當然你也可以修改一臺機器的密碼然後把shadow裏的密碼部分摘出來,此方法不再討論之列
不是每個發行版都用相同的加密算法,先查查:
[root@localhost ~]# authconfig --test | grep hashing password hashing algorithm is sha512 [root@localhost ~]#
我是centos6.2,默認加密算法是sha512
在有些系統上這個命令不能執行,那還有別的辦法:
cat 出來你的shadow文件,應該是這樣一個結構
user:$6$abcdef…
以':'分割的各個列,1列爲用戶名,2列爲密碼……其他自己查資料去
密碼部分的前3位是加密算法,後面是salt
$1$ md5
$$
$6$ sha512,
$0$ old des
$2$ blowfish
等等具體查看:
http://en.wikipedia.org/wiki/Passwd
下一步就是如何生成這個密碼了
如果你是centos或者rh就好辦了,軟件庫中已經有這個工具了mkpasswd(是在expect包中)
yum -y install expect
ok 我裝了 但是不能生成sha512的密碼 只能隨機生成指定的密碼,反正是不能用了 怒啊
好吧我們自己生成吧:)
可以使用python 或者perl
先生成salt,做飯總要先找好調料吧
openssl rand -base64 16 | tr -d '+=' | head -c 8
結果:
L0Uymjwa
下一步生成密碼,先說python
python -c "import crypt, getpass, pwd; print crypt.crypt('要設置的密碼', '\$6\$上面生成的salt\$')"
我要加密的密碼是123456
python -c "import crypt, getpass, pwd; print crypt.crypt('123456', '\$6\$L0Uymjwa\$')"
結果:
$6$L0Uymjwa$PTTwfi3DY7/tJF9oz.NlOShT.F9mfiIJuSknWNvyItMaN5Ge/91jwut2gYMthi9tpLxf/FcvC/v9Dp6jnCmpw1
分2步還嫌麻煩,味道每次都一樣不好 擦,合起來
python -c "import crypt, getpass, pwd; print crypt.crypt('123456', '\$6\$`openssl rand -base64 16 | tr -d '+=' | head -c 8`\$')"
好了吧 滿意了吧
perl:
perl -e 'print crypt("password","\$6\$saltsalt\$") . "\n"'