1

我有一个在用户空间中运行的可移植 GTK Python 应用程序。对于大多数用例,它不需要 root 权限,但对于少数需要它的用户,我想让用户能够按下按钮(例如 a Gtk.LockButton),通过 PolicyKit 提供密码并以某种方式能够运行特定的以 root 身份执行命令。

我知道 PolicyKit 处理验证但不处理升级(我只能在用户拥有权限但实际上不能转换我的当前或以 root 身份运行新进程时才能获取信息)并且我知道我可以安装一个使用 root 运行的守护进程允许我可以委派我的操作,但我想知道是否有另一种方法可以让我保持这个应用程序的可移植性(不需要安装)。

另一种解决方案可能是,当用户按下按钮时,使用重新启动我的应用程序,pkexec但我真的很想避免以超级用户身份运行整个应用程序。

我认为我应该做的是,当用户按下按钮时,以某种方式以 root 身份启动一个新的无头进程,并在该进程中查询需要特权权限的操作。该过程应仅在我的用户应用程序运行之前运行,并且理想情况下,只接受来自我的应用程序的连接。

这是一个正确的架构还是有一些我没有看到/考虑的大缺陷?

此外,使用此解决方案,我如何:

  1. 使用 PolicyKit 启动具有 root 权限的无头进程进行身份验证
  2. 在我的主要非特权应用程序和无头根进程之间安全通信
  3. 确保在主非特权应用程序完成时关闭根进程
4

0 回答 0