我正在使用一个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权限运行整个应用程序。
答案 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