因多台linux需要批量修改密码,又不想密码明文保存在history里,网上看到一个贴子,可以使用openssl生成密文密码,然后结合chpasswd -e设置密码。
试了一下,结果悲催了。
首先生成密文密码
[root@localhost ~]# openssl passwd -1
Password:
Verifying - Password:
$1$hH4zNPU8$ypQVL.BrtFXJlpNWMVnRQ/
然后使用echo结合chpasswd -e 修改密码
[root@localhost ~]echo 'root:$1$gRaFjZHg$/CamLI.QiekK01So21SBz1'|chpasswd -e
执行完后再ssh登陆发现密码错误。
幸好我另一个ssh会话没关,登陆上,查看shadow文件
发现shadow文件被截断了,正常应该是root:$1$gRaFjZHg$/CamLI.QiekK01So21SBz1:19132:0:99999:7:::
实际上是root:$/CamLI.QiekK01So21SBz1:19132:0:99999:7:::
怀疑是echo在执行命令时把$1 $/之类的都给当做参数给解释了,所以用echo 结合chpasswd修改密码是不靠谱的!!!!容易把用户密码改错导致用户登陆不上。