更改密码,python,linux

Rik*_*137 1 python linux change-password

如何通过python脚本更改ubuntu root用户的密码?谢谢.

Eli*_*ins 5

有两种主要方法可以解决这个问题 -

一个是从python 调用passwd命令行工具(例如通过stdlib的进程模块).如果您的脚本没有以root用户身份运行,则需要使用"su"或"sudo"命令进行换行以提升为root权限.将预期数据写入stdin应该足够了,但如果您发现需要根据sudo/passwd提示的确切内容执行不同的操作,那么pexpect模块可能会有所帮助.

第二种是直接写入存储密码哈希值的/ etc/shadow文件.这肯定要求您的脚本以root身份运行,以便在/ etc/shadow上具有读/写权限.Stdlib提供了用于访问/ etc/shadow 的spwd模块,但是它是只读的,所以你必须滚动你自己的读/写器... csv模块可能有用,/ etc/shadow 接近于 csv文件带有":"分隔符,但有一些细微差别.

如果选择第二条路径,则需要能够生成替换密码的新哈希值,并将它们插入到影子文件中.linux上最快的方法是使用stdlib crypt模块,但你必须处理salt生成,并设置适当的密码哈希前缀("$ 5 $","$ 6 $"等).或者,Passlib库中的host_context对象可以为您处理大部分内容(免责声明:我是该库的作者).

一般情况下,如果可能的话,我建议使用第一条路径 - 直接修改/ etc/shadow会带来危险 - 如果你弄乱/ etc/shadow文件,你将无法登录.如果你走这条路线,备份文件很多.