文档说功能是每个线程的属性。确实在任何
/proc/[PID]/task/[LWP]/status
我们可以找到与此线程相关的功能:
CapInh: 0000000000000000
CapPrm: 0000000000000000
CapEff: 0000000000000000
CapBnd: 0000003fffffffff
CapAmb: 0000000000000000
但与此同时,有关能力的类似信息位于
/proc/[PID]/status
所以进程,显然有它自己的能力。这让我感到困惑 - 是进程还是线程的功能属性?当执行一些需要能力的命令时,内核会检查什么集合?
能力确实是每个线程的,一个线程可以改变它自己的能力(在当前能力允许的范围内),
capset
而不影响其他现有线程的能力。/proc/[PID]/status
显示与 pid 匹配的线程的功能,或者更准确地说,是线程组 id(在 Linux 中是进程 id)。内核总是检查相关线程的能力。