我正在尝试以编程方式更改用户的密码,并在此过程中收到一些我无法解释的消息。
我首先运行这个命令:
sudo usermod -p "$(openssl passwd -1 newpassword)" theuser
没有打印错误,但下次登录时,我收到以下消息:
Debian GNU/Linux 系统中包含的程序是自由软件;每个程序的确切分发条款在 /usr/share/doc/*/copyright 中的各个文件中进行了描述。
在适用法律允许的范围内,Debian GNU/Linux 不附带任何保证。上次登录:2017 年 1 月 30 日星期一 16:22:41,来自 193.50.110.1 盐长度错误:当 8 <= n <= 16 时为 0 字节。
我尝试了另一种加密方法:
sudo usermod -p "$(openssl passwd -crypt newpassword)" theuser
仍然没有错误,但消息发生了变化:
错误的盐长度:当预期 8 <= n <= 16 时为 0 字节。
我终于尝试了其他方法,使用mkpasswd
更强的加密(与这个帖子):
sudo usermod -p "$(mkpasswd --method=sha-512 newpassword)" theuser
这次错误消失了,所以我相信这与哈希算法的强度有关。我不明白的是哪种算法可以并且应该用于生成密码。
可以安全地使用哪些算法来mkpasswd
避免消息错误?这是否也意味着mkpasswd
命令在启动时运行?
更新:我忘了提及我使用 Raspbian Jessie Lite 收到了这些消息。我还在 mkpasswd.c 源中发现了一些包含此错误消息的字符串rfc1036/whoisGitHub 存储库。