linux – systemd:授予非特权用户权限以更改某个特定服务

linux – systemd:授予非特权用户权限以更改某个特定服务,第1张

概述我在无头 linux机器上运行私人游戏服务器.因为我不是白痴,所以服务器作为自己的非特权用户运行,只需要下载更新和修改世界数据库所需的最低访问权限. 我还创建了一个systemd单元文件,以便在需要时正确启动,停止和重新启动服务器(例如,对于所述更新). 但是,为了实际调用systemctl或service< game>启动/停止/重启我仍然需要以root用户或具有sudo功能的用户身份登录. 有 我在无头 linux机器上运行私人游戏服务器.因为我不是白痴,所以服务器作为自己的非特权用户运行,只需要下载更新和修改世界数据库所需的最低访问权限.

我还创建了一个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.

总结

以上是内存溢出为你收集整理的linux – systemd:授予非特权用户权限以更改某个特定服务全部内容,希望文章能够帮你解决linux – systemd:授予非特权用户权限以更改某个特定服务所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1043713.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存