Python 如何在只有一个密码提示的情况下实现具有root权限的多个命令?

Python 如何在只有一个密码提示的情况下实现具有root权限的多个命令?,python,linux,Python,Linux,我正在开发一个GUI应用程序,它分别调用两个系统命令 这两个命令需要根权限才能执行 我采用的第一种方法是调用gksu,然后调用gksu 这很好,但是用户必须分别输入两次密码,从用户体验的角度来看,这不是一个好主意 我试图用第一个命令调用gksu,用第二个命令调用sudo,但我得到了以下错误: sudo:不存在tty,也没有指定askpass程序 因此,我尝试在python文件中分离这些命令,并从原始文件中调用一个类似于gksu python3 commands.py的命令 我不确定在发布整

我正在开发一个GUI应用程序,它分别调用两个系统命令

这两个命令需要根权限才能执行

  • 我采用的第一种方法是调用
    gksu
    ,然后调用
    gksu

    这很好,但是用户必须分别输入两次密码,从用户体验的角度来看,这不是一个好主意

  • 我试图用第一个命令调用
    gksu
    ,用第二个命令调用
    sudo
    ,但我得到了以下错误:
    sudo:不存在tty,也没有指定askpass程序

  • 因此,我尝试在python文件中分离这些命令,并从原始文件中调用一个类似于
    gksu python3 commands.py
    的命令

    我不确定在发布整个项目的编译版本后是否会执行此操作,因为我打算在其上使用
    pyinstaller--onefile


因此,我需要的是,考虑到应用程序的最终状态是一个可执行的二进制文件,不包括使用root权限运行整个应用程序,使应用程序能够以超级用户权限运行特定脚本。

您可以执行以下操作:

gksu -- bash -c 'command1; command2; command3'
它将询问您的密码一次,并以root用户身份执行3个命令

来源:

多亏了,他的回答引导我找到了正确的解决方案,即使用
pkexec
而不是像这样使用
gksu

pkexec bash -c "command_1;command_2"

问题与GUI无关。请不要在问题标题中添加已解决的问题,而是在2天内将答案标记为正确。查看给出此输出的
未能执行子进程“-”(没有这样的文件或目录)
刚刚做了一些研究并找到了可行的替代方法:
pkexec bash-c“whoami;whoami”
谢谢。