作为sudo运行python脚本的一部分

问题描述:

我试图在sudo模式下仅运行我的脚本task.py的一部分。理想情况下我会用以下结构运行task.py作为sudo运行python脚本的一部分

if __name__ == '__main__': 
    print('running normal parts')   
    .   .    . 
    . [running normal commands] . 
    .   .    . 

    print('running sudo parts') 
    .   .    . 
    . [running sudo commands] . 
    .   .    . 

,我不必为脚本的须藤部分输入密码,这样我可以只是让命令行单个呼叫$ python task.py

是否有一个很好的告诉Python运行第二个块为sudo?我看到subprocess模块有办法用sudo privelages调用命令,但我宁愿不将“sudo部分”放入单独的脚本中以执行“运行sudo命令”部分。

+0

可能的诱惑:[this](https://*.com/questions/34189165/python-running-select-sections-of-code-as-sudo)和[this](https://*.com /问题/ 34281235 /怎么办 - 你 - 临时运行的代码,如根)。 – ForceBru

+1

''sudo'不会以root用户的身份运行命令,除非您在'/ etc/sudoers'中为用户或root用户运行一个没有密码的命令的规则。你需要格外谨慎。 – direprobs

我会高度建议把sudo件到一个单独的脚本只是作为文档建议。这种方法极大地提高了脚本的安全状态,因为只有使用提升特权执行的部分才能完成(又称“最小特权” - 安全原则)。

我还没有详细阅读该文档,但我怀疑它还提到限制对脚本sudo部分的写权限以及它可以读取的任何文件或资源。