问题描述
作为 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
谢谢,
泽维尔
解决方法
似乎组合 Sytemd 219 + PolKit 0.112 不支持“动词”语句。向规则添加了一些日志记录,向我展示了这一点:
/etc/polkit-1/rules.d/01-nagios.rules:7: verb=undefined
看起来像是 Polkit 0.112 中的一个错误。
泽维尔