PolicyKit规则永远不会生效


12

我正在尝试.rules为PolicyKit 编写一个新文件。我的测试尝试(在目录中/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文件标记为可执行文件。)

Answers:


15

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

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

pkaction --version

如果它表示<0.106,则只能使用旧语法。

您可以在中创建一个.pkla文件 /etc/polkit-1/localauthority/


1
Ubuntu 15.10仍然是旧版本。 pkaction --versionpkaction version 0.105
罗杰·宾恩斯

5
Ubuntu 18.04仍带有0.105 !!!! 天啊!!!!
奥斯基(Osqui)'17

1
而且甚至没有针对Ubuntu的0.106+版本!我的天啊!
捕手

2
ubuntu 19.04 pkaction version 0.105。不支持使用JavaScript编写新规则文件。
Denis Denisov

0

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

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

请注意,它也应解决此问题


将文件移到那里似乎没有任何改变。另外,根据polkit文档Arch Wiki/etc/polkit-1/rules.d应将其用于用户配置。因此,我不确定更改目录会有什么不同。
Keidax

@Keidax:.rules文件的名称是什么?
西尔文·皮内

当前/usr/share/polkit-1/rules.d/10-udisks-personal.rules
Keidax
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.