PolicyKit 规则从未生效

PolicyKit 规则从未生效

我正在尝试为 PolicyKit 编写一个新.rules文件。我的测试尝试(在目录中/etc/polkit-1/rules.d/)如下所示:

polkit.addRule(function(action, subject) {
    polkit.spawn(["rm","/home/gabriel/test"]);
    if (action.id == "org.freedesktop.policykit.exec") {
        polkit.log("action=" + action);
        polkit.log("subject=" + subject);
    }
    return polkit.Result.NOT_HANDLED;
});

但据我所知,这段代码从未运行过。该test文件仍在那里,运行类似以下代码后没有日志输出$ pkexec -u otheruser bash

(我已尝试将.rules文件标记为可执行文件。)

答案1

如果你Ubuntu 22.04(或更低版本)那么您仍在使用旧版本的 PolKit,其中没有 .rules 文件,只有 .pkla 和 .conf 文件。

在命令提示符下,执行以下操作:

pkaction --version

如果显示 < 0.106,则您只能使用旧语法。

您可以在 中创建一个 .pkla 文件/etc/polkit-1/localauthority/,请参阅man pklocalauthority以获取说明和示例。

答案2

为了按预期工作,您必须将自己的.rules文件放入:

/usr/share/polkit-1/rules.d

请注意,它也应该解决这个问题问题

答案3

以下对我有用(ubuntu 22.04,带有 pkaction 版本 0.105):

编辑以下文件:

/var/lib/polkit-1/localauthority/10-vendor.d/com.ubuntu.desktop.pkla

并使第一部分看起来像:

[Mounting, checking, etc. of internal drives]
Identity=unix-group:admin;unix-group:sudo
Action=org.freedesktop.udisks.filesystem-*;org.freedesktop.udisks.drive-ata-smart*;org.freedesktop.udisks2.encrypted-unlock-system;org.freedesktop.udisks2.filesystem-fstab;org.freedesktop.udisks2.filesystem-mount-system;org.freedesktop.udisks2.filesystem-mount-other-seat;
ResultAny=yes
ResultInactive=yes
ResultActive=yes

无需重启。编辑文件后即可工作。

注意我在这里添加了“org.freedesktop.udisks2.filesystem-mount-other-seat”。就我而言,当我尝试从命令行安装磁盘时,我收到了以下消息:

$ udisksctl mount -b /dev/sdb1
==== AUTHENTICATING FOR org.freedesktop.udisks2.filesystem-mount-other-seat ===
Authentication is required to mount WD Elements 25A3 (/dev/sdb1)
Authenticating as: User,,, (user)

相关内容