0

我的程序正在运行cap_sys_admin,cap_setgid+i
当然,我知道它们可以跨 execve 继承,但除此之外:它们的行为方式是否与我根本没有它们一样,因为它们既不有效也不被允许?

4

2 回答 2

1

是的,在您设置有效功能之前,继承会一直休眠。如手册中所述,继承的意思是:“在执行时,将继承的复制到继承并允许的孩子”:

This is a set of capabilities preserved across an execve(2).  Inheritable capa‐
bilities remain inheritable when executing any program, and  inheritable  capa‐
bilities  are  added to the permitted set when executing a program that has the
corresponding bits set in the file inheritable set.

http://man7.org/linux/man-pages/man7/capabilities.7.html

于 2017-05-12T01:51:59.763 回答
1

好的,所以您的进程正在运行一些可继承的功能。这对您的流程意味着什么?几乎什么都没有。您不能调用setcap()使任何这些功能有效,因为它们不在您的许可集中,并且无法将它们放入您的有效集中,您的流程无法使用这些功能本身。

但是,它们在您的 Inheritable 集中的存在可能会对您启动的其他进程产生影响。例如。如果您要访问exec()一个二进制文件,其文件cap_setgid同时在其有效集和可继承集中,则该子进程将从cap_setgid其有效集中开始。

如果在上面的示例cap_setgid不在您的进程的 Inheritable 集中,则文件已cap_setgid+ie成为无关紧要的事实,并且子进程将具有所述能力。

于 2017-05-13T12:28:48.990 回答