如何查看软件使用的 pkaction

PKM*_*PKM 6 permissions password policykit gksu visudo

因此,我有一个软件在启动时总是要求输入密码。我想运行这个软件而不是gksu每次都弹出这个密码提示。

我尝试的第一件事是将其路径添加到 sudoers。然而,这没有用。后来我发现有一个叫做policykit的东西,如果某个程序想要使用一些policykit操作,它总是会提示用户输入密码(sudoers对其没有影响)。

我按照如何防止 PolicyKit 要求输入密码? 中的指南进行操作。,但它仍然不起作用,所以我想我可能添加了错误的操作。

问题:如何查看pkaction我的程序使用了什么,以便将其输入到我的 .pkla 文件中?

Win*_*nix 2

Ask Ubuntu 有这个答案(How to configure pkexec to not Ask for password?),它比您之前找到的链接更接近您需要的内容。

作为查找应用程序的快速示例,我将使用我自己的脚本进行说明。我想替换gksu正在弃用的,所以我编写了一个名为gsupkexec的包装器脚本。

我从命令行调用gsu :

gsu pkexec

请注意“详细信息”下拉箭头。点击它,就会显示:

gsu pkexec 详细信息

在我的示例中,pkla由org.gnome.gedit控制。我将在下一个示例中使用它,您可以将其替换为您自己的:

gsu pexec 当局

如果您想在没有密码提示的情况下运行,您需要设置以下内容:

  <allow_any>yes</allow_any>
  <allow_inactive>yes</allow_inactive>
  <allow_active>yes</allow_active>
Run Code Online (Sandbox Code Playgroud)

就个人而言,我不喜欢自己重复输入密码,但不会更改gedit为在使用 更改根文件时从不询问密码pkexec。但是,我希望它在给定会话中多次运行时不要重复询问密码。您可以执行此操作,sudo并且可以将时间从 10 分钟延长到 120 分钟,就像我在系统上所做的那样。我想要政策工具包具有类似的功能。


Eld*_*eek 1

绕过策略包授权的安全性似乎违反直觉。在没有任何进一步细节的情况下,我最好的建议是不要这样做。

是因为它可能,

机制需要声明一组操作才能使用 polkit。操作对应于客户端可以请求该机制执行的操作,并在该机制安装到 /usr/share/polkit-1/actions 目录中的文件中定义。

pkaction --verbose

将生成有关所有策略包操作的详细输出。这在查看本地配置文件时非常有用。您可以将此输出重定向到文本文件,以便以后以通常的方式查看>later.review.txt

这些配置文件可在您发出命令时列出的目录中找到sudo ls /var/lib/polkit-1/localauthority/

10-vendor.d  20-org.d  30-site.d  50-local.d  90-mandatory.d
Run Code Online (Sandbox Code Playgroud)

仔细查找并找到与您的身份不明的软件对应的 .pkla 文件。例如,如果没有任何有用的信息,我会假装它是 Unity Greeter。Action=我们可以查看以命令 Which开头的行,sudo grep "Action=" /var/lib/polkit-1/localauthority/10-vendor.d/unity-greeter.pkla结果为

Action=org.freedesktop.NetworkManager.enable-disable-network;org.freedesktop.NetworkManager.enable-disable-wifi;org.freedesktop.NetworkManager.enable-disable-wwan;org.freedesktop.NetworkManager.enable-disable-wimax;
Action=org.freedesktop.NetworkManager.sleep-wake
Action=org.freedesktop.NetworkManager.wifi.share.protected;org.freedesktop.NetworkManager.wifi.share.open
Action=org.freedesktop.NetworkManager.settings.modify.own;org.freedesktop.NetworkManager.settings.modify.system;org.freedesktop.NetworkManager.settings.modify.hostname
Action=org.freedesktop.NetworkManager.use-user-connections
Action=org.freedesktop.NetworkManager.network-control
Run Code Online (Sandbox Code Playgroud)

如需了解更多信息,可以在此处找到最新的 polkit 参考手册,并且可以在此处找到有关 systemd 的相关信息

正如 @muru 指出的,这里还有一个相关的问答

资料来源:

https://www.freedesktop.org/software/polkit/docs/latest/polkit.8.html

如何防止 PolicyKit 要求输入密码?