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 并mkpasswd从whois包中使用。
我在这里做错了什么?
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
登录就好了!
好的,我锁定了问题。由于 的输出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