如何通过python脚本更改ubuntu root用户的密码?感谢。
答案 0 :(得分:5)
有两种主要方法可以解决这个问题 -
一个是从python调用passwd命令行工具(例如通过stdlib的subprocess模块)。如果您的脚本没有以root用户身份运行,则需要使用“su”或“sudo”命令进行换行以提升为root权限。将预期数据写入stdin应该已足够,但如果您发现需要根据sudo / passwd提示的确切内容执行不同的操作,pexpect模块可能会有所帮助。
第二种是直接写入存储密码哈希值的/etc/shadow文件。这将肯定要求您的脚本以root身份运行,以便在/ etc / shadow上具有读/写权限。 Stdlib提供用于访问/ etc / shadow的spwd模块,但它是只读的,因此您必须滚动自己的读取器/写入器... csv模块可能有用,/ etc / shadow close 是一个带有“:”分隔符的csv文件,但有一些细微差别。
如果选择第二条路线,则需要能够生成替换密码的新哈希值,并将其插入影子文件中。 linux上最快的方法是使用stdlib crypt模块,但你必须处理salt生成,并设置适当的密码哈希前缀(“$ 5 $”,“$ 6 $”等)。或者,Passlib库中的host_context对象可以为您处理大部分内容(免责声明:我是该库的作者)。
一般情况下,如果可能的话,我建议使用第一条路径 - 直接修改/ etc / shadow会带来危险 - 如果你弄乱/ etc / shadow文件,你将无法登录。如果你走这条路,备份很多文件。
答案 1 :(得分:2)
您可以使用Python脚本修改/etc/passwd
(/etc/shadow
),这需要root权限sudo python modify.py /etc/passwd
(其中modify.py
是您将更改密码的脚本)
答案 2 :(得分:0)