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

时间:2019-01-15 22:06:58

标签: python linux

我正在使用一个GUI应用程序,该应用程序分别调用两个系统命令。

这两个命令需要执行root权限。

  • 我做的第一种方法是先叫gksu <command_1>,然后叫gksu <command_2>

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

  • 我尝试使用第一个命令调用gksu,并使用第二个命令调用sudo,但出现此错误: sudo: no tty present and no askpass program specified

  • 因此,我尝试将这些命令分离到python文件中,并从看起来像gksu python3 commands.py的原始文件中调用命令。

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

因此,我真正需要的是考虑到应用程序的最终状态(该应用程序为可执行二进制文件,并且不包含),使该应用程序能够以超级用户特权运行特定脚本。 / strong>以root权限运行整个应用程序。

2 个答案:

答案 0 :(得分:1)

感谢Itz Wam,他的回答引导我找到了使用pkexec代替gksu这样的正确解决方案:

pkexec bash -c "command_1;command_2"

答案 1 :(得分:0)

您可以执行此操作:

gksu -- bash -c 'command1; command2; command3'

它将一次询问您的密码并以root用户身份执行3个命令

来源:https://askubuntu.com/questions/183608/gksudo-2-commands-with-one-pw-entry