我想更改/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脚本来更改根密码sed或awk或类似的东西?
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)
这是一个命令,它将使用上面命令中新生成的密码字段更改现有条目。
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 和空密码登录。
希望有帮助