![如何在不输入两次密码的情况下更新密码?](https://linux22.com/image/5253/%E5%A6%82%E4%BD%95%E5%9C%A8%E4%B8%8D%E8%BE%93%E5%85%A5%E4%B8%A4%E6%AC%A1%E5%AF%86%E7%A0%81%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%E6%9B%B4%E6%96%B0%E5%AF%86%E7%A0%81%EF%BC%9F.png)
我实际上有一个粘性键盘(主机到 RDP 到 vCenter 到虚拟控制台),但需要更新我正在构建的虚拟机的密码。
使用 CentOS 媒体提供的救援环境,我可以chroot
到已安装的系统并运行passwd
,但是在输入密码一次后,我不可避免地会收到密码令牌不匹配的错误。 (有时在命令行上输入“passwd”会回显“passsswwdddd”或类似内容。)
如何无需输入两次即可更新 root 密码?
因为我不知道密码,所以我无法 ssh (这将消除粘滞键盘问题) - 因此使用救援环境和chroot
.
答案1
如果必须使用交互式提示,我会在脚本中使用此技巧:
yourpass='My supersecret password'
$(echo $yourpass; echo $yourpass) | passwd username
基本上将密码分配给变量并在以下命令中使用它。
答案2
您也许可以使用某种形式:
# echo "Th3P@ssw0rd" | passwd --stdin theUser
假设您的二进制版本passwd
支持该--stdin
选项。
答案3
根据马克·普洛特尼克的评论,
vi passfile
usermod -p `openssl passwd stdin < passfile` root
rm -f passfile
这使您有机会编辑临时文件并确认您已将密码设置为您真正认为的密码。它还可以使密码远离任何历史记录等。
答案4
试试这个:
# echo 'root:PASSWORD' | chpasswd
请将 PASSWORD 替换为您想要的密码。它在 Suse Linux 中对我来说效果很好。