我正在尝试让所有 unix 进程由使用不同用户/组身份的主进程分叉。我不希望父进程或子进程运行,因此root
我希望使用另外 2 个身份foo
和。应该用于运行主应用程序并对文件系统具有有限的访问权限,然后应该由分叉进程使用,并且访问权限比更有限。bar
foo
bar
foo
问题是,当我尝试调用setuid
或setgid
分叉子进程后,setuid failed: Operation not permitted
无论我做什么,我都会得到返回结果。我甚至确认,当我以用户身份运行 shell 时,capsh --print
我有能力做到这一点,所以我认为这应该被允许。CAP_SETUID
foo
我肯定误解了此功能的功能,因此我错误地使用了这些工具。在进程和用户之间建立关系的最佳方法是什么,这样父进程和子进程都不会以 的身份运行root
?