抱歉,我是 Linux 新手,我正在寻找信息,如何使用预定义的加密密码在 Debian 中创建新用户帐户。
我在 bash 中有一个函数,如果我的 /etc/passwd 文件中没有出现新用户的 id,那么我运行 bash 命令:
adduser -m -p <encrypted-password> <username>
到目前为止一切顺利,但我的所有数据(包括用户名和密码)都存储在 JSON 输出中,并且用户密码已经通过 SHA-512 进行了哈希处理(出于安全原因)。用户的密码由 PHP 脚本加密并发送到 JSON:
$hashed_password = crypt('Test007', '$6$rounds=5000$StJ.1Wji$');
echo looks like this: $6$rounds=5000$StJ.1Wji$cm6ZVl.XoIiQXaJAVHkqiteUGAqZoJ1Ee3dpHP2a6x6rG/kHg4k7ucMLrzHCvQA1TpQYP4eKnoFITVGcviqjU0
在 adduser 函数之后,当我查看/etc/shadow
文件时,我发现散列密码与 PHP 生成的原始密码不同,当然我无法使用该密码以纯文本形式登录新用户(即使我知道纯文本形式)。
有没有一种简单的方法,如何使用预定义的加密密码创建用户帐户?如何生成 Linux useradd 函数接受的哈希密码?我在互联网上找不到任何解决方案。
答案1
这$6$rounds=5000
可能是问题的一部分,因为除了前导 之外$6
,整个值都传递给adduser
必须是有效的哈希。另外(在脚本片段中不明显),应该引用该值以避免参数扩展,例如,
adduser -m -p '$6$gehr8sgkkX$lMZ5bmb7c4HY76pnn0uUXA5wH51YE0Byp4rIfcA94gWrVvfeNVQsMwoW2erVuxzFScxRvaHOLFMqVSYCjVlTV/' oneshot
我使用 mkpasswd 来获取建议的值如何为影子创建 SHA-512 哈希密码?
在这里快速检查一下,存储的值与/etc/shadow
我运行 adduser 时使用的值匹配。