【发布时间】:2016-11-23 07:57:31
【问题描述】:
现在,我有一个 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)
如果已经在 ubuntu 上安装了 ssh-askpass,这工作正常。但似乎有些 ubuntu 系统默认不安装它,而我无法为它们安装它。
所以,我需要知道是否有其他方法可以让我获得 sudo 权限。
提前致谢。
编辑:应用程序不应该以root权限启动。只有在运行时才需要获得root权限。
【问题讨论】:
-
对我来说这是一个非常有趣的问题。我认为您应该在启动应用程序之前使用
gksu / gksudo(How can I run an application with a GUI as admin) 作为前端应用程序以获得root 权限。在此之后,您应该执行一个根命令,然后您应该关闭权限。如果应用程序在没有 root 权限的情况下启动,您应该通知用户它。这就是我的看法。您可以在 wireshark 应用程序中看到类似的行为。 -
@first。这个解决方案不适合我,因为我们的应用程序是用于工作的,用户将无法以root权限运行它。另外,我不能给他们一个工具提示,因为其他功能不需要root权限,这会导致糟糕的用户体验。所以,我可以做的是在命令确实需要root权限时获得临时root权限来做某事.
-
ssh-askpass只是一个显示对话窗口并将用户输入的密码写入标准输出的程序。我希望你可以做一些工具应用程序来完成这项工作并将其指定为SUDO_ASKPASS程序sudo。 -
@first。似乎有道理。我是否可以在ubuntu14.04和ubuntu16.04上用Qt编写一个工具应用程序。
标签: python linux user-interface ubuntu pyqt