如何从 Python 启动 Linux 提升的权限 window?

How to launch Linux elevated privileges window from Python?

我正在编写一个 python3 应用程序,运行 作为用户的 GUI(不在终端中)。虽然这个应用程序是 运行ning 用户,但我还需要执行一个需要 root 权限的命令。我已经看到很多关于如何在终端中执行此操作的示例,例如这个,它在终端中确实运行良好:

import subprocess
subprocess.call('sudo echo "Hello world!"', shell=True)

...但是我的 python 应用程序未在终端中 运行,并且当我的 GUI 代码调用此方法时,此方法似乎不会自动触发可见的系统提示。

其他应用程序,尤其是 Snap Store,在需要使用 root 权限执行某些操作时,会以某种方式启动看似系统弹出窗口的内容。例如,当我使用 Snap Store 在 Ubuntu 上安装 Notepad++ 时,我得到了这个弹出窗口,我怀疑这是一个系统弹出窗口,而不是 Snap Store 人员定制设计的东西。

我不是很熟悉 Linux 系统,但我认为这不是自定义弹出窗口而不是系统弹出窗口,因为谁愿意将他们的 root 密码提供给他们的应用程序之一的制造商?相反,用户会将其提供给系统(系统已经知道),并且第 3 方应用程序本身无法访问实际密码,但现在可以 运行 作为 root 执行命令。

如何从我的 Python 应用程序启动相同的弹出窗口,以便 运行 需要 root 权限的命令?或者,或者,我还能如何从我的 python GUI 运行 宁作为用户 运行 根命令?

提前感谢您提供的任何明确帮助!

你试过pkexec了吗?

不确定您的 GUI,但 运行 一个简单的 python 脚本(python3.8、pycharm、ubuntu 18.04)会导致弹出窗口desire(不能做弹窗的丝印)

import os

os.system("pkexec ls -l")