如何使用 libcap 中的 cap_dac_override

如何使用 libcap 中的 cap_dac_override

我正在尝试测试 cap_dac_override。我写了一个简单的hello world。我已经编译了该程序,并删除了可执行文件的所有权限。

目前我无法通过运行 ./hello 来执行我的程序,这是正确的。现在我想应用一种能力,以便即使用户没有执行权限,程序仍然可以执行。

请问如何设置 cap_dac_override 以便我仍然可以执行程序,或者我使用 cap_dac_override 完全错误吗?

setcap cap_dac_override=ep hello

答案1

您混淆了功能和权限。

文件模式位或者权限描述文件可以做什么。当您从文件中删除所有权限时,您指示操作系统您不希望任何人读取该文件、写入该文件或执行该文件。

另一方面,文件功能描述了文件可以做什么或者确切地说,源自该程序文件的进程可以做什么,否则它不能做什么。

setcap cap_dac_override=ep hello允许程序hello在运行时覆盖通常的权限检查。但这并没有改变尝试执行时应用通常的权限检查hello

相关内容