我的程序正在运行cap_sys_admin,cap_setgid+i
。
当然,我知道它们可以跨 execve 继承,但除此之外:它们的行为方式是否与我根本没有它们一样,因为它们既不有效也不被允许?
问问题
545 次
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.
于 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 回答