从子进程python多线程调用以提升的特权运行bash脚本

时间:2019-02-19 20:02:34

标签: python bash subprocess sudo

我正在Linux上用python编程,并且我正在使用multiprocessing_pool.apply_async使用subprocess.check_output调用bash脚本

bash脚本正在调用Alien和rpmbuild。 Alien命令需要以root身份运行,因此rpmbuild命令也必须以root sed身份执行,以更正某些rpm特质。

此刻,如果我想将多个deb转换为rpm,则必须多次输入管理员密码。

是否可以只输入一次管理员密码? 即,该脚本始终以不同的变量作为新进程被调用,但总是在输入一个密码后获得更高的特权? 目前,我正在使用pkexec调用脚本,而脚本本身使用了sudo。

非常感谢

1 个答案:

答案 0 :(得分:1)

如果您以超级用户身份运行python脚本,则该脚本不应询问您密码:

$ sudo python -c "import os ; os.system('whoami')"
root

因此,像往常一样运行您的设备,但在sudo之前使用python。如果您需要运行多个python脚本并仅输入一次密码,请输入sudo su。然后,您将是所有命令的root用户(不带sudo),直到关闭终端会话为止。

提供密码的替代方法:

  1. 如果您想显示用于密码的GUI提示,则可以使用sudo -A
  2. 如果要将密码作为stdin传递,则可以使用sudo -S

每个进程都有自己的用户,您必须创建多个进程才能拥有多个用户。