现在,我有一个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