向非 root 用户授予 cpusets 权限

向非 root 用户授予 cpusets 权限

默认情况下,只能root创建 CPU 集(并操作现有 CPU 集中的任务):

$ cset shield -c0
cset: **> [Errno 13] Permission denied: '/cpusets//user'
cset: insufficient permissions, you probably need to be root

如果我授予用户trusted运行权限sudo cset,他/她将运行的命令,例如

sudo cset shield -e command

将归 拥有root,除非我们这样做

sudo cset shield -e sudo -- -u trusted command

command这是相当复杂的,特别是关于通过这些层继承什么环境......

有没有办法trusted在不改变身份的情况下授予操作CPU集的权限?

答案1

根据cpuset 手册页:

cpuset的权限由cpuset文件系统中的目录和伪文件的权限决定,通常挂载在/dev/cpuset。

使用一个小型的、可 sudo 调用的脚本来创建 cpuset 并调整其中相应文件夹和文件的所有权/权限,用户将被允许创建自己的 cpuset。

然后用户无需 root 权限即可直接使用和修改该 cpuset,并为其创建子 cpuset。

也可以看看https://serverfault.com/questions/478946/how-can-i-create-and-use-linux-cgroups-as-a-non-root-user

相关内容