作为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中确实很好。
真遗憾,我很期待使用它。