[英]Changing password, python, linux
如何通过python脚本更改ubuntu根用户的密码? 谢谢。
有两种主要方法可以解决此问题-
一种是从python调用passwd命令行工具(例如通过stdlib的subprocess模块)。 如果您的脚本不是以root身份运行,则需要使用“ su”或“ sudo”命令进行换行,以提升为root特权。 将期望的数据写入stdin应该足够,但是如果您发现您需要根据sudo / passwd提示的确切执行不同的操作,则pexpect模块可能会有所帮助。
第二种是直接写入存储密码哈希的/ etc / shadow文件。 为了在/ etc / shadow上具有读/写权限,这肯定需要您的脚本以root用户身份运行。 Stdlib提供了用于访问/ etc / shadow的spwd模块,但是它是只读的,因此您必须滚动自己的读取器/写入器... csv模块可能很有用,/ etc / shadow 接近于 csv带有“:”分隔符的文件,但有一些细微差别。
如果选择第二种方法,则需要能够生成新的替换密码哈希,并将其插入到影子文件中。 在Linux上最快的方法是使用stdlib crypt模块,但是您必须注意生成盐,并设置适当的密码哈希前缀(“ $ 5 $”,“ $ 6 $”等)。 另外,Passlib库中的host_context对象可以为您解决大部分问题(免责声明:我是该库的作者)。
通常,如果可能的话,我建议第一种方法-直接修改/ etc / shadow充满危险-如果弄乱了/ etc / shadow文件,将无法登录。 , 大量备份文件 。
您可以使用需要根权限的Python脚本修改/etc/passwd
( /etc/shadow
) sudo python modify.py /etc/passwd
(其中modify.py
是您的脚本,它将更改密码)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.