我正在 Linux 上使用 python 进行编程,并且使用 multiprocessing_pool.apply_async 来使用 subprocess.check_output 调用 bash 脚本
bash 脚本正在调用alien 和rpmbuild。 Alien 命令需要以 root 身份运行,因此 rpmbuild 命令也需要以 root 身份运行,遵循 root sed 命令来纠正一些 rpm 特性。
目前,如果我想将多个 deb 转换为 rpm,我必须多次输入管理员密码。
有没有办法让我只能输入一次管理员密码? 也就是说,脚本总是以其不同的变量作为新进程被调用,但总是在输入一个密码后提升权限? 目前我正在使用 pkexec 来调用脚本,并在脚本本身中使用 sudo。
非常感谢
最佳答案
如果您以 super 用户身份运行 python 脚本,该脚本不应询问您密码:
$ sudo python -c "import os ; os.system('whoami')"
root
所以像平常一样运行你的东西,但在python
之前使用sudo
。如果您需要运行多个 python 脚本并且只需输入一次密码,请输入 sudo su
。然后,您将成为所有命令的 root 用户(无需预先添加 sudo),直到关闭终端 session 。
提供密码的其他方法:
- 如果您希望出现输入密码的 GUI 提示,可以使用
sudo -A
。 - 如果您想将密码作为标准输入传递,可以使用
sudo -S
。
每个进程都有自己的用户,您必须创建多个进程才能拥有多个用户。
关于python - 从子进程python多线程调用中以提升的权限运行bash脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54774092/