我正在编写一个 python3 应用程序,以用户身份使用 GUI(不在终端中)运行。当这个应用程序以用户身份运行时,我还需要执行一个需要 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 运行 root 命令?
提前感谢您提供的任何明确的帮助!