mkpasswd -m sha-512 产生不正确的登录

Neu*_*rax 5 bash password login 16.04

我在为新用户设置密码时遇到了麻烦。

我找到了一个教程,表明mkpasswd -m sha-512 "my password here"可以生成一个加盐和散列的密码,可以与 结合使用useradd -m -p "hashed and salted passwd" -s /bin/bash username,但是当我在测试用户上尝试这个时,我一直收到Incorrect Login.

我正在运行 Ubuntu 16.04 并mkpasswdwhois包中使用。

我在这里做错了什么?


确切的步骤

1) apt update

2) apt install whois

3) mkpasswd -m sha-512 "my password here"

产生: $6$1FuuSdKgVke$bc8doOVGZhzomoeafvcQnpYhAxfR4aWdAuYvbxSHw6ZCFZ4NC5j9C762kmvs4Pc66bv4.LYTfrlknm5cWx65g.

4) useradd -m -p $6$1FuuSdKgVke$bc8doOVGZhzomoeafvcQnpYhAxfR4aWdAuYvbxSHw6ZCFZ4NC5j9C762kmvs4Pc66bv4.LYTfrlknm5cWx65g. -s /bin/bash testuser

5) login testuser

密码提示:

6)在这里输入我的密码

说: Login incorrect


想补充一点,我用没有空格的密码尝试了同样的事情,并省略了mkpasswd命令中的引号。两者似乎都没有什么不同。

我还尝试让用户没有 -p 标志(意味着不添加密码)并手动将加盐/散列密码复制到/etc/shadow其中产生与上述相同的结果,登录不正确。


更有趣的是,如果我使用子shell 将值放入,一切似乎都正常。

useradd -m -p $(mkpasswd -m sha-512 "my password") -s /bin/bash test

login test 类型: my password

登录就好了!

Neu*_*rax 5

好的,我锁定了问题。由于 的输出mkpassword将导致$id$salt$hash,当您将其复制并粘贴到useradd命令中时,bash 将尝试在$. 因此,这些需要使用转义,\$id\$salt\$hash以便 bash 在将字符串添加到/etc/shadow.

mkpasswd -m sha-512 "my password" 结果是

$6$5AfGzrQ9u$r6Q7Vt6h8f2rr4TuW4ZA22m6/eoQh9ciwUuMDtVBX31tR3Tb0o9EB1eBdZ2L9mvT.pX3dIEfxipMoQ0LtTR3V1

可以复制和粘贴到useradd确保将每个替换$\$.

useradd -m -s /bin/bash -p \$6\$5AfGzrQ9u\$r6Q7Vt6h8f2rr4TuW4ZA22m6/eoQh9ciwUuMDtVBX31tR3Tb0o9EB1eBdZ2L9mvT.pX3dIEfxipMoQ0LtTR3V1

  • 我的系统在捉弄我,你总是可以执行 `mkpasswd -m sha-512 "my password" | sed 's/\$/\\$/g' > out.txt` 以节省用 `\$` 替换 `$` :-) (2认同)