Permissions cap_dac_覆盖cap_dac_read_search的超集吗?
我正致力于限制现有复杂应用程序的能力,我一直在寻找一个可靠的来源来证明这一点Permissions cap_dac_覆盖cap_dac_read_search的超集吗?,permissions,linux-kernel,linux-capabilities,Permissions,Linux Kernel,Linux Capabilities,我正致力于限制现有复杂应用程序的能力,我一直在寻找一个可靠的来源来证明这一点 cap\u dac\u override中包含的权限是cap\u dac\u read\u search的超集 从以下几点来看,情况确实如此,这似乎是合乎逻辑的: CAP_DAC_覆盖 *绕过文件读、写和执行权限检查 CAP\u DAC\u READ\u SEARCH *绕过文件读取权限检查和目录读取并执行权限检查 *在(2)处通过句柄调用open *使用linkat(2)AT_EMPTY_PATH标志创建指向文件描述
cap\u dac\u override
中包含的权限是cap\u dac\u read\u search
的超集
从以下几点来看,情况确实如此,这似乎是合乎逻辑的:
CAP_DAC_覆盖*绕过文件读、写和执行权限检查 CAP\u DAC\u READ\u SEARCH
*绕过文件读取权限检查和目录读取并执行权限检查
*在(2)处通过句柄调用open
*使用linkat(2)AT_EMPTY_PATH标志创建指向文件描述符引用的文件的链接 此外,我的能力检查跟踪实验证实
cap\u dac\u override
应该足够了<每次执行读取访问时,在cap\u dac\u覆盖
之前都会选中code>cap\u dac\u read\u search
我还发现了上的以下帖子,令人遗憾的是,它只涉及/proc
:
上游内核的工作方式是首先检查CAP_DAC_覆盖,然后搜索CAP_DAC_READ_以查找这种情况
如果我想授予我的应用程序对整个文件系统的完全读取访问权,我仍然不确定省略cap\u dac\u read\u search
是否完全安全。我完全知道,cap\u dac\u override
额外授予写入权限,我希望这样
在内核的某个地方,是否可能只检查cap\u dac\u read\u search
,而不检查cap\u dac\u override
为了安全起见,我应该包括这两种功能吗?或者在这种情况下,
cap\u dac\u read\u search
是完全冗余的吗?经过一些额外的验证和实际测试,似乎确实是这样的情况,cap\u dac\u override
是cap\u dac\u read\u search
的超集
当从相关应用程序中删除
cap\u dac\u read\u search
时,没有任何操作因权限被拒绝而失败 不,不是CAP_DAC_OVERRIDE
仅允许忽略文件的权限位CAP_DAC_READ_SEARCH
允许忽略读取权限位,并允许执行系统调用open_by_handle_at
,该调用可用于在容器chroot外部读取
有关实际应用,请参阅
如果您的应用程序只需要完全访问文件系统,那么正如您已经得出的结论那样,
CAP\u DAC\u OVERRIDE
。您显然是对的,有趣的是手册页明确提到了它,而我却没有注意到这个细节。在我的例子中,确实只是文件系统访问,所以它起作用了。