给予python GUI应用程序的root权限以在ubuntu中运行命令

现在,我有一个python GUI应用程序需要运行sudo权限的命令,如下所示:

import commands iStat, askpassPath = commands.getstatusoutput("which ssh-askpass") cmd = "export SUDO_ASKPASS=%s;sudo -A mkdir -p /usr/lib/test"%(askpassPath) commands.getstatusoutput(cmd) 

在这里输入图像说明

这工作正常,如果ssh-askpass已经安装在ubuntu.But似乎有些Ubuntu系统不安装它默认情况下,我不能安装它们。

所以,我需要知道是否有另一种方法让我获得sudo特权。

提前致谢。

编辑:应用程序不应该以root权限启动。只有在运行时才需要root权限。

既然你是“为我获得sudo特权的另一种方式”。 你可以,也可能不应该用提升的特权运行应用程序。

我看到的一个选项是安装一个辅助二进制文件,并用SUID位存储它。 然后你可以调用这个二进制文件来执行你的操作。

如果你想用提升的特权运行,你可能想看看consolehelper 。 甚至Qt wiki也提到了这个方法。

为了给出更完整的答案,我将尝试阐明你需要做什么步骤。 这不是一个全面的指示。 请参阅文档。

本质上,尝试

 ln -s /usr/sbin/consolehelper /usr/bin/yourapp-root 

然后配置PAM(例如/etc/pam.d/yourapp-root):

 #%PAM-1.0 auth include config-util account include config-util session include config-util 

然后/etc/security/console.apps/yourapp-root:

 USER=root PROGRAM=/usr/bin/yourapp