c - 在 C 中测试 linux CAP_FOWNER 功能?

标签 c linux linux-capabilities

调用之前 chmod()在目录上,如果调用者不拥有该目录,我想测试调用者是否拥有 CAP_FOWNER能力。

从搜索来看,我似乎应该能够测试 CAP_FOWNER通过调用能力 capable(CAP_FOWNER) -- 但是 capable()不在我的手册页中并且似乎没有被 <linux/capability.h> 导出.

capable() 的正确包含文件是什么? ,或者,测试 Linux 功能的最简单/最佳方法是什么?

最佳答案

我认为 capable()在内核源代码中可用,但不用于一般用途。如果您正在编写设备驱动程序或模块,那么它应该可用。

如果您正在编写用户空间程序,那么您可能能够使用 libcap 提供的函数;见 man capabilities(7) man libcap(3) .我建议 #include <sys/capability.h>并使用 cap_get_proc()可能还有 CAP_IS_SUPPORTED(CAP_FOWNER) .

如果这不好,明显的解决方法是尝试 chmod()在目录上并处理可能的故障。

关于c - 在 C 中测试 linux CAP_FOWNER 功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43599961/

相关文章:

c - 从 c 中的地址中删除 LSB

c - 如何在 C 中使用 strtok() 分割字符串?

linux - 如何在 docker 中访问 web app live inside docker

linux - 为什么加载 seccomp 过滤器会影响允许和有效的功能集?

linux-kernel - 仅使用 CAP_BPF 无法在 BPF 程序中直接访问数据包?

linux - 如何找出一个进程需要哪些 linux 功能才能工作?

c - fopen 语句中的文件名

无法覆盖 gdb 之外的返回地址

linux - 我如何使用 cat 命令从我自己的字符设备驱动程序读取字符设备?

linux - 如何将 'grep -L "hello"*' 处的所有文件复制到目录中?