我计划使用 cgrules.config 将用户关注的进程移动到我的 cgroup。手册页(https://linux.die.net/man/8/cgrulesengd)cgrulesengd 表示,每当进程更改其有效 UID 或 GID 时,都会调用它并根据配置移动进程。但是“进程更改其有效 UID 或 GID”这句话到底意味着什么?它是否包括进程启动时的所有场景,即任何新进程都将根据配置进行移动。
我一直在玩一些配置,发现是的,新进程确实被移动,但想确定一下,因为文档中不清楚。
答案1
你应该阅读https://man7.org/linux/man-pages/man7/credentials.7.html
有效用户ID和有效组ID。内核使用这些 ID 来确定进程在访问消息队列、共享内存和信号量等共享资源时所拥有的权限。在大多数 UNIX 系统上,这些 ID 还确定访问文件时的权限。但是,Linux 使用下面描述的文件系统 ID 来执行此任务。进程可以使用 geteuid(2) (getegid(2)) 获取其有效用户(组)ID。
请注意,在大多数情况下,进程的有效 UID 等于真实 UID。但在执行 set-uid 可执行文件时,这可能会改变。
例如,执行时su user
,将有效uid更改为root,则su
有可能将uid更改为指定用户。但真实的 uid 会被检查,因为普通用户如果su
不提供密码就无法检查。