如何使用 setuid 和 setgid 有效地保护进程及其分叉的子进程?

如何使用 setuid 和 setgid 有效地保护进程及其分叉的子进程?

我正在尝试让所有 unix 进程由使用不同用户/组身份的主进程分叉。我不希望父进程或子进程运行,因此root我希望使用另外 2 个身份foo和。应该用于运行主应用程序并对文件系统具有有限的访问权限,然后应该由分叉进程使用,并且访问权限比更有限。barfoobarfoo

问题是,当我尝试调用setuidsetgid分叉子进程后,setuid failed: Operation not permitted无论我做什么,我都会得到返回结果。我甚至确认,当我以用户身份运行 shell 时,capsh --print我有能力做到这一点,所以我认为这应该被允许。CAP_SETUIDfoo

我肯定误解了此功能的功能,因此我错误地使用了这些工具。在进程和用户之间建立关系的最佳方法是什么,这样父进程和子进程都不会以 的身份运行root

相关内容