有没有办法在不检查正在运行的进程的情况下检查 polkit 代理的工作情况?

有没有办法在不检查正在运行的进程的情况下检查 polkit 代理的工作情况?

我需要以与桌面环境无关的方式检查是否有可用的 polkit 代理。

现在,我正在做的是检查 polkit 代理是否正在运行,使用如下代码:

ps aux | grep some-polkit-agent

其中some-polkit-agent可能是:

  • polkit-gnome-authentication-agent-1(适用于 gnome2 和 gnome3-fallback)
  • polkit-kde-authentication-agent-1(对于 kde)
  • polkit-mate-authentication-agent-1(对于伴侣)
  • lxpolkit(对于 LXDE)

“无后备”gnome3(gnome-shell)在 gnome-shell 进程本身中有自己的 polkit 代理,所以我无法 ps-grep 它。我的假设是,如果gnome-shell正在运行,则 polkit 代理已就位。

当系统有问题时就会出现问题hidepid(请参阅http://www.linux-dev.org/2012/09/hide-process-information-for-other-users/)。这一安全措施使得ps即使有 polkit 代理也不会向我显示任何正在运行的代理。

有没有更好的方法可以检查可用的 polkit 代理?

答案1

“我需要检查我是否有可用的 polkit 代理”

大概您希望它可用于特定进程,无论是进程 pid 还是因为您看不到 pid,所以系统总线名称?

在这种情况下,您可以对特定进程使用“pkcheck”并检查其返回值,因为 pkcheck 的手册页显示

   If the specificied process is not authorized because **no suitable**
   **authentication agent is available** or if the --allow-user-interaction
   wasn't passed, pkcheck exits with a return value of 2 and a diagnostic
   message is printed on standard error. Details are printed on standard
   output.

答案2

代理通过 dbus 将自己注册到 polkit 权威机构。如果您可以拦截他们的 dbus 流量,您将确切地知道注册了哪个代理。

答案3

基于这个论坛帖子,您需要安装该policykit-desktop-privileges软件包。

相关内容