我的程序正在使用cap_sys_admin,cap_setgid+i
运行
当然,我知道它们可以在execve中继承,但除此之外:它们的行为方式是否与我根本没有它们一样,因为它们既不有效也不允许?
答案 0 :(得分:1)
好的,所以你的进程正在运行一些可继承的功能。这对您的流程意味着什么?几乎没有。您无法调用setcap()
使这些功能生效,因为它们不在您的允许集中,并且无法将它们置于您的有效集中,您的流程无法使用这些功能。
但是,它们在您的可继承集中的存在可能会对您启动的其他进程产生影响。例如。如果您要exec()
其文件在其有效和可继承集合中具有cap_setgid
的二进制文件,则该子进程将在其有效集中以cap_setgid
开头。
如果上一个示例中您的进程的可继承集中cap_setgid
不,那么该文件具有cap_setgid+ie
的事实将变得无关紧要,并且子进程将 具有所述的能力。
答案 1 :(得分:0)
是的,继承会一直保持睡眠状态,直到您设置有效功能。如手册中所述,继承意味着:“当execve,复制继承给子继承和允许”:
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.