为python GUI应用程序授予root权限,以便在ubuntu中运行命令

为python GUI应用程序授予root权限,以便在ubuntu中运行命令,python,linux,user-interface,ubuntu,pyqt,Python,Linux,User Interface,Ubuntu,Pyqt,现在,我有一个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(c

现在,我有一个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上,那么它就可以正常工作。但是看起来有些ubuntu系统默认不安装它,而我无法为它们安装它

所以,我需要知道是否有其他方法让我获得sudo特权

提前谢谢

编辑:应用程序不应以root权限启动。它只需要在运行时获得root权限。

因为您是为了“我获得sudo权限的另一种方式”。您可以,也可能不应该以提升的权限运行应用程序

我看到的一个选项是安装一个helper二进制文件,并将其与。然后可以调用此二进制文件来执行操作

如果您确实希望以提升的权限运行,您可能需要查看。就连政府也提到了这种方法

为了给出更完整的答案,我将尝试列出您需要执行的步骤。这并不是一套完整的说明。请参阅文档

从本质上说,试试看

ln -s /usr/sbin/consolehelper /usr/bin/yourapp-root
然后配置PAM(例如/etc/PAM.d/yourapp root):

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

#%PAM-1.0
auth            include         config-util
account         include         config-util
session         include         config-util
USER=root
PROGRAM=/usr/bin/yourapp

对我来说,这是一个非常有趣的问题。我认为您应该使用
gksu/gksudo
()作为前端应用程序,以便在启动应用程序之前获得root权限。在此之后,您应该执行一个root命令,然后您应该关闭权限。如果应用程序在没有root权限的情况下启动,则应通知用户。这就是我的看法。您可以在wireshark应用程序中看到类似的行为。@first。此解决方案不适合我,因为我们的应用程序用于工作,用户将无法使用root权限运行它。另外,我不能给他们工具提示,因为其他函数不需要root权限,这会导致糟糕的用户体验。所以,我能做的是在命令确实需要root权限时获得临时root权限来执行某些操作。
ssh askpass
只是一个显示对话框窗口并将用户输入的密码写入stdout的程序。我希望你能做一些工具应用程序来完成这项工作,并将其指定为
SUDO\u ASKPASS
程序,用于
SUDO
@first。这似乎是有意义的。我是否可以在ubuntu14.04和ubuntu16.04上编写一个Qt工具应用程序。谢谢你的帮助。有些人可以从我们的网站“deb”获得我们的应用程序格式化。所以我不能为他们做这些。从ubuntu软件中心安装应用程序,它也会弹出一个对话框,如我问题中的图片。所以我认为这是可行的。