我正在努力限制现有的复杂应用程序的功能,并且我一直在寻找一个可靠的来源来证明其中包含的权限cap_dac_override
是cap_dac_read_search
.
根据以下情况,情况确实如此,这似乎是合乎逻辑的capabilities(7)
:
CAP_DAC_OVERRIDE
* 绕过文件读取、写入和执行权限检查。CAP_DAC_READ_SEARCH
* 绕过文件读取权限检查和目录读取和执行权限检查;
* 调用 open_by_handle_at(2);
* 使用 linkat(2) AT_EMPTY_PATH 标志创建指向由文件描述符引用的文件的链接。
此外,我对能力检查跟踪器的实验证实这cap_dac_override
应该足够了。cap_dac_read_search
似乎在cap_dac_override
每次执行读取访问之前都会进行检查。
我还在grsecurity 论坛上找到了以下帖子,不幸的是,这些帖子仅涉及/proc
:
对于这种情况,上游内核的工作方式是首先检查 CAP_DAC_OVERRIDE,然后检查 CAP_DAC_READ_SEARCH。
cap_dac_read_search
如果我想授予我的应用程序对整个文件系统的完全读取访问权限,我仍然不确定是否完全安全。我完全知道cap_dac_override
另外授予写权限,我想要那个。
是否有可能在内核的某个地方有一个地方只检查 forcap_dac_read_search
而不是 for cap_dac_override
?
为了安全起见,我应该同时包含这两种功能还是cap_dac_read_search
在这种情况下完全多余?