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

好吧,我真的不知道这些保护中的哪一个是奇怪的,但只要删除它们就可以了。