我有一个项目需要我编写脚本/命令序列来更改 CentOS 7 安装上的 root 密码。
我可以假设将执行脚本的用户已经是 root。
目前,我正在使用以下内容,并收到一条成功消息:
[root@localhost]# echo -e ‘password\npassword’ | (passwd --stdin root)
Changing password for user root.
passwd: all authentication tokens updated successfully.
但是,这实际上并没有更改密码。经过进一步检查(手动设置密码),我注意到密码password
没有通过字典检查,但最后仍然报告成功:
[root@localhost]# passwd
Changing password for user root.
New password:
BAD PASSWORD: The password fails the dictionary check - it is based on a dictionary word
Retype new password:
passwd: all authentication tokens updated successfully.
一种可能的解决方案是尝试根据 中提供的方法和盐对给定密码进行哈希处理/etc/shadow
,但我想避免过于复杂的解决方案。我还可以检查中的值是否/etc/shadow
实际更改,但这忽略了密码设置为已经设置的情况,我想支持这种情况。
有没有人建议在实际设置密码之前尝试验证密码,或者最好从 FULL 输出passwd
?