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

run part of python script as sudo

我正在尝试 运行 在 sudo 模式下只 task.py 我的脚本的一部分。理想情况下,我会 运行 task.py 具有以下结构:

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

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

我不必为脚本的 sudo 部分输入密码,这样我就可以从命令行进行一次调用 $ python task.py

有没有什么好告诉Python到运行第二块是sudo?我看到 subprocess 模块有一种方法可以调用具有 sudo 特权的命令,但我不想将 "sudo parts" 放入单独的脚本中来执行 "running sudo commands" 部分.

我会 高度 建议将 sudo 部分放入单独的脚本中,就像文档中推荐的那样。这种方法极大地改善了脚本的安全状况,因为只有以提升的权限执行所需的部分才会这样做(又名 "least privilege"--a fundamental 安全原则).

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