默认情况下,只能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。