多平台修改密码

多平台修改密码

我们正在尝试标准化 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

您可以使用chpass从 *BSD 上的脚本更改密码,以及类似的实用程序chpasswd在 Linux 上。两者都允许您为帐户设置“加密”密码 - 实际上是密码哈希。您可以致电cryptPerl 或 Python 脚本中的函数来计算哈希(不要忘记选择哈希函数、随机盐和良好的迭代计数)。

答案2

涉及交互式密码输入问题的标准答案是使用预计在本例中运行命令 - passwd 。

相关内容