我希望组foogroup
中的用户能够:
systemctl start foo.service
,systemctl stop foo.service
,systemctl status foo.service
, 和journalctl -u foo.service
不使用提升的权限。那可能吗?
我有一个 systemd 服务,它看起来像:
[Unit]
Description=foo service
[Service]
Type=simple
ExecStart=/bin/sleep infinity
User=foobot
Group=foogroup
foobot
系统用户在哪里。
我知道我们可以安装单元文件以~/.config/systemd/user/
允许非特权用户使用 systemd,但这并不能真正帮助一个组。
注意:我计划使用sd-bus API from libsystem-dev
and cockpit,所以添加systemctl
到/etc/sudoers
不会有帮助。
我不太在乎systemctl enable
,如果我需要提升特权也没关系。
这是我最终想出的解决方案。我建立:
请注意,这特别适用于 Debian/Ubuntu 中使用的 polkit <106。其他发行版使用更新版本的 polkit,它会做这样的事情:
如果您想将其限制为单个服务并且仅启动/停止/重新启动,请使用以下内容:
(来自https://wiki.archlinux.org/title/Polkit)
我一直在寻找相同的解决方案,但找不到真正让我满意的解决方案。一个令人满意的解决方案是在
systemd
. 但我找到了这个解决方法。假设您要授予访问权限的用户是ann
、ben
和chris
。他们都应该在一个组awesomeproject
中。awesomeproject
并将用户添加到awesomeproject
.systemctl
该新用户的 sudoers 中。条目必须如下所示:
/etc/sudoers
根据发行版的不同,不要/etc/sudoers.d/awesomeproject
将它们放入sudo visudo -f /etc/sudoers.d/awesomeproject
.相应地管理文件和目录的权限,以便组成员
awesomeproject
可以访问~awesomeproject
.以下命令现在应该适用于
ann
、ben
和chris
: