/* May we inspect the given task?
* This check is used both for attaching with ptrace
* and for allowing access to sensitive information in /proc.
*
* ptrace_attach denies several cases that /proc allows
* because setting up the necessary parent/child relationship
* or halting the specified task is impossible.
*/
经过一些试验和错误,我发现实际上
CAP_SYS_PTRACE
是需要的。相反,
CAP_DAC_READ_SEARCH
并CAP_DAC_OVERRIDE
没有给予所需的访问权限,其中包括readlink()
和类似的操作。我所看到的可以交叉检查:首先,ptrace.c提供了必要的线索
__ptrace_may_access()
:其次,nsfs 相关的函数,例如proc_ns_readlink()(间接)调用
__ptrace_may_access()
.最后,man 7 namespaces提到:
准确的说:进入网络命名空间需要CAP_SYS_PTRACE和CAP_SYS_ADMIN,这里举个例子:
另请参阅此答案