我还创建了一个systemd单元文件,以便在需要时正确启动,停止和重新启动服务器(例如,对于所述更新).
但是,为了实际调用systemctl或service< game>启动/停止/重启我仍然需要以root用户或具有sudo功能的用户身份登录.
有没有办法告诉systemd对于< game>服务,非特权用户gamesrv是否允许运行启动/停止/重启命令?
解决方法
一种方法是使服务成为用户服务而不是系统服务.
systemd单元不是创建系统单元,而是放在服务用户的主目录下,位于$HOME / .config / systemd / user / daemon-name.service.然后,同一用户可以使用systemctl进行manage the service –user< action>守护程序name.service.
要允许用户单元到start at boot,root必须为帐户启用逗留,即sudo loginctl enable-linger username.该单位也必须是WantedBy = default.target.
另一种方法是允许用户访问通过PolicyKit管理系统单元.这需要systemd 226或更高版本(并且对于JavaScript rules.d文件,PolicyKit> = 0.106 – 请使用pkaction –version进行检查).
您将创建一个新的PolicyKit配置文件,例如/etc/polkit-1/rules.d/57-manage-daemon-name.rules检查您要允许的属性.对于example:
// Allow alice to manage example.service; // fall back to implicit authorization otherwise. polkit.addRule(function(action,subject) { if (action.id == "org.freedesktop.systemd1.manage-units" && action.lookup("unit") == "example.service" && subject.user == "alice") { return polkit.Result.YES; } });
然后,指定的用户可以使用systemctl管理命名服务,而无需使用sudo.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。