我们正在尝试标准化 passwd
更改 *nix 密码。在Linux上,这是一个简单的问题:
printf "secret\nsecret\n" | passwd username
但 FreeBSD 已经重写了他们的版本来passwd
使用该pam
库。该pam
系统使用openpam_ttyconv读取密码,它会跳过一些环节来挫败管理员重定向标准输入的尝试。
如果您在 FreeBSD 上尝试上述方法,它仍然会提示 tty 并等待交互式响应。如果你尝试 fork 并强制 stdin 重定向,你会得到一个pam_chauthtok: conversation failure
据我所知,在 FreeBSD 上我们可以使用
printf "secret\nsecret\n | pw usermod -n username -h0
但我希望(也许是在做梦)有人可能知道让 pam 库接受 stdin 重定向的技巧?
答案1
答案2
涉及交互式密码输入问题的标准答案是使用预计在本例中运行命令 - passwd 。