我正在尝试为.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文件标记为可执行文件。)
发布于 2015-11-30 01:54:11
如果您在Ubuntu22.04 (或更低)上,那么您仍然在使用旧版本的PolKit,其中没有.rules文件,只有.pkla和.conf文件。
在命令提示符下,执行以下操作:
pkaction --version如果它写的是< 0.106,那么您只能使用旧的语法。
您可以在.pkla中创建/etc/polkit-1/localauthority/文件,有关说明和示例,请参阅man pklocalauthority。
发布于 2014-10-13 16:11:05
发布于 2023-03-05 04:48:35
以下内容适用于我(ubuntu22.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)https://askubuntu.com/questions/536591
复制相似问题