运行 bash 具有来自子进程 python 多线程调用的提升权限的脚本

run bash script with elevated privileges from subprocess python multithreaded call

我在 linux 上使用 python 进行编程,我正在使用 multiprocessing_pool.apply_async 调用 bash 脚本,使用 subprocess.check_output

bash 脚本正在调用 alien 和 rpmbuild。 alien 命令需要 运行 作为 root,因此 rpmbuild 命令也需要,在 root sed 命令之后纠正一些 rpm 特性。

目前,如果我想将几个 deb 转换为 rpm,我必须多次输入我的管理员密码。

有没有办法让我只输入一次管理员密码? 也就是说,脚本总是以其不同的变量作为新进程被调用,但总是在输入一个密码后提升权限? 目前我正在使用 pkexec 调用脚本,脚本本身使用了 sudo。

非常感谢

如果您 运行 作为超级用户执行 python 脚本,脚本不应该询问您密码:

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

所以 运行 一切如常,但 sudopython 之前。如果您需要 运行 多个 python 脚本并且只需输入一次密码,请输入 sudo su。然后,在关闭终端会话之前,您将成为所有命令的根用户(无需预先设置 sudo)。

提供密码的其他方法:

  1. 如果您希望出现输入密码的 gui 提示,您可以使用 sudo -A
  2. 如果您想将密码作为标准输入传递,您可以使用sudo -S

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