在 /etc/shadow 中更改用户的密码

Joh*_*hv1 13 password

我想更改/etc/shadow. 我不能使用密码更改程序,如passwd. 必须通过编辑/etc/shadow. 该/etc/shadow是在安装硬盘的chroot不工作。

例如:

root:$asdf.1AH.MJ3sivd4$YFoFnasdf4cZW9H6G6cbT4.1VBmasdfmv.a0wCU/i3zEFasdfasdf4W.:15843:0:99999:7:::
otheruser:$asdf.1AH.MJ3sivd4$YFoFnasdf4cZW9H6G6cbT4.1VBmasdfmv.a0wCU/i3zEFasdfasdf4W.:15843:0:99999:7:::
Run Code Online (Sandbox Code Playgroud)

有谁能够给我提供一个shell脚本来更改根密码sedawk或类似的东西?

slm*_*slm 15

您可以使用 mkpasswd 工具来执行此操作。在cyberciti.biz 上有一本关于如何使用它的很好的入门书,标题为:Linux / UNIX:使用 mkpasswd 生成随机密码

例子

mkpasswd --char=10 --crypt-md5
Run Code Online (Sandbox Code Playgroud)

包通常称为makepasswd,但工具通常称为mkpasswd

有关更多详细信息,请参阅手册页

/etc/shadow直接生成内容

以下 python 命令将生成进入/etc/shadow文件的部分:

Python

$ python -c "import crypt, getpass, pwd; \
         print crypt.crypt('password', '\$6\$SALTsalt\$')"
Run Code Online (Sandbox Code Playgroud)

珀尔

$ perl -e 'print crypt("password","\$6\$saltsalt\$") . "\n"'
Run Code Online (Sandbox Code Playgroud)

这会生成以下输出:

$6$SALTsalt$UiZikbV3VeeBPsg8./Q5DAfq9aj7CVZMDU6ffBiBLgUEpxv7LMXKbcZ9JSZnYDrZQftdG319XkbLVMvWcF/Vr/
Run Code Online (Sandbox Code Playgroud)

更改 /etc/shadow

这是一个命令,它将使用上面命令中新生成的密码字段更改现有条目。

perl -pe 's|(root):(\$.*?:)|\1:\$6\$SALTsalt\$UiZikbV3VeeBPsg8./Q5DAfq9aj7CVZMDU6ffBiBLgUEpxv7LMXKbcZ9JSZnYDrZQftdG319XkbLVMvWcF/Vr/:|' /etc/shadow > /etc/shadow.new
Run Code Online (Sandbox Code Playgroud)

注意:这是一个粗略的例子,但有效。您需要从生成散列密码的命令中获取结果,并使用斜杠 (\$) 对美元符号 ($) 进行转义。

结果存储在新文件 /etc/shadow.new 中。确认结果后,您可以/etc/shadow用新文件替换/etc/shadow.new.


小智 8

如果密码为空对您来说不是问题,最简单的解决方案是更改 /etc/passwd 文件而不是 /etc/shadow。

/etc/passwd 文件的示例行是:

root:x:0:0:root:/root:/bin/bash

此行中的“x”表示密码实际上以散列形式存储在影子文件中。您可以做的一件事就是像这样删除它:

root::0:0:root:/root:/bin/bash

然后,您实际上可以使用用户名 root 和空密码登录。

希望有帮助