如何用busybox和openssl在脚本中更改用户密码?

我需要将用户帐户和密码同步到安装了busyboxopenssl的系统上的外部源。 当外部来源告诉我的系统更新凭证时,如何在脚本中更改用户的密码? 我将以纯文本的密码。

这必须是自动的,从我所知道的busybox passwd是交互式的,我不特别想为passwd写一个expecttypes的脚本,如果甚至可能的话。 它看起来像openssl可以生成密码哈希( openssl passwd -1 -salt“abcdefgh”{密码} ),但我将不得不直接修改/ etc / shadow?

Busybox有这些命令可用。

你可以写一个像这样的小脚本来更新密码。 将下面的文本放在一个文件中并执行它。 它会改变你的密码。

#!/ bin / sh的
passwd << EOF
<旧密码>
<新密码>
<新密码>
EOF

发现当前版本的busybox有chpasswd ( 源代码 )。 chpasswd在stdin上使用冒号分隔的一对username:password。 我不知道是否可以更新我的系统上的busybox,但是我会留下这个答案,以防其他人来看。

从busybox文档:

chpasswd chpasswd [--md5|--encrypted] Read user:password from stdin and update /etc/passwd Options: -e,--encrypted Supplied passwords are in encrypted form -m,--md5 Use MD5 encryption instead of DES