调用之前 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/