策略工具包不允许重新启动服务,尽管有足够的规则



作为nagios用户,我无法执行systemctl。追踪到pkexec,我得到:

-sh-4.2$ pkexec systemctl reload nagios
==== AUTHENTICATING FOR org.freedesktop.policykit.exec ===
Authentication is needed to run `/bin/systemctl' as the super user

然而,我有一个非常非常宽松的polkit规则(这不是一个生产系统(

polkit.addRule(function(action, subject) {
if (action.id == "org.freedesktop.systemd1.manage-units") {
var verb = action.lookup("verb");
if (verb == "start" || verb == "stop" || verb == "restart" || verb == "reload") {
return polkit.Result.YES;
}
}
});

我在重新启动polkit.service时仔细检查它是否已编译问题出在哪里?

OS : RHEL7
Sytemd version 219
PolKit version : 0.112

谢谢,

Xavier

似乎组合Sytemd 219+PolKit 0.112不支持"动词";陈述在规则中添加了一些日志显示:

/etc/polkit-1/rules.d/01-nagios.rules:7: verb=undefined

看起来像是Polkit 0.112中的一个错误。

Xavier

这不是Polkit中的错误;相反,它是这个版本的Systemd中的bug(或者至少是一个限制(。原因是"操作"是由使用Polkit的机制提供的,在这种情况下,它是由SystemD提供的。

您可以在polkit(8(中对此进行交叉检查

请参阅systemd发行说明(https://github.com/systemd/systemd/blob/main/NEWS)

226的变化:

* When systemd requests a polkit decision when managing units it
will now add additional fields to the request, including unit
name and desired operation. This enables more powerful polkit
policies, that make decisions depending on these parameters.

因此,对于RHEL7这样的产品,我想这意味着使用sudo来解决这个问题,而这在RHEL8中确实很好。

真遗憾,我很期待使用它。

最新更新