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

2024-04-13

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


因为你支持“我获得 sudo 特权的另一种方式”。您可以而且可能不应该以提升的权限运行应用程序。

我看到的一个选项是安装一个辅助二进制文件并将其存储在SUID-bit https://en.wikipedia.org/wiki/Setuid。然后您可以调用该二进制文件来执行您的操作。

如果您确实想以提升的权限运行,您可能需要看看控制台助手 http://linuxcommand.org/man_pages/consolehelper8.html。即便是Qt wiki https://wiki.qt.io/How_to_get_applications_running_with_root_privileges提到了这个方法。

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

本质上,尝试

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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为 python GUI 应用程序授予 root 权限以在 ubuntu 中运行命令 的相关文章

随机推荐