2010-01-13 46 views
6

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

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

Busybox有these命令可用。

回答

6

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

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

5

结果显示当前版本的busybox有chpasswdsource code)。 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