systemd 守护进程需要哪些功能来创建 cgroup?
What capabilities does systemd daemon require to create cgroups?
在我的项目中,有时我需要能够以非特权用户的身份创建新的控制组。我决定为此编写一个 systemd 守护进程。
我在 cgroup 操作的守护程序代码中使用 libcgroup。
当我尝试创建 cgroup (cgroup_create_cgroup
) 时,我收到一个 libcgroup 错误 ECGROUPNOTALLOWED
(Cgroup, operation not allowed
)。如何允许我的守护进程创建新的 cgroups?
systemd.service 文件:
[Service]
...
CapabilityBoundingSet=CAP_SYS_ADMIN
PrivateTmp=yes
PrivateDevices=yes
PrivateNetwork=yes
ProtectSystem=yes
ProtectHome=yes
ProtectControlGroups=no
ProtectKernelTunables=no
RestrictRealtime=no
User=root
Group=root
好吧,我真的不知道这些保护中的哪一个是奇怪的,但只要删除它们就可以了。
在我的项目中,有时我需要能够以非特权用户的身份创建新的控制组。我决定为此编写一个 systemd 守护进程。
我在 cgroup 操作的守护程序代码中使用 libcgroup。
当我尝试创建 cgroup (cgroup_create_cgroup
) 时,我收到一个 libcgroup 错误 ECGROUPNOTALLOWED
(Cgroup, operation not allowed
)。如何允许我的守护进程创建新的 cgroups?
systemd.service 文件:
[Service]
...
CapabilityBoundingSet=CAP_SYS_ADMIN
PrivateTmp=yes
PrivateDevices=yes
PrivateNetwork=yes
ProtectSystem=yes
ProtectHome=yes
ProtectControlGroups=no
ProtectKernelTunables=no
RestrictRealtime=no
User=root
Group=root
好吧,我真的不知道这些保护中的哪一个是奇怪的,但只要删除它们就可以了。