我想使用fanotify(7),我遇到的问题是,在某些内核上,尽管配置了CONFIG_FANOTIFY,CONFIG_FANOTIFY_ACCESS_PERMISSIONS还是不能工作。
至少我想报告一下这个情况。
现在,在Debian和Ubuntu上,我可以使用等效的grep CONFIG_FANOTIFY_ACCESS_PERMISSIONS /boot/config-$(uname -r)来验证该特性是否可用。在其他一些系统上,我可以使用相当于zgrep CONFIG_FANOTIFY_ACCESS_PERMISSIONS /proc/config.gz的方法,但可能还有更多的系统没有被这两种方法所涵盖。
是否有一种方法可以在任何fanotify(7)函数中确定当前正在运行的内核上是否可以使用fanotify权限处理?
当ENOSYS未实现(fanotify_mark(2))时,我想到了一个类似于返回的fanotify_mark(2)的方法,但在文档中找不到类似的东西。
发布于 2016-01-13 12:30:19
似乎fanotify_mark()在传递FAN_ALL_PERM_EVENTS时返回EINVAL,但CONFIG_FANOTIFY_ACCESS_PERMISSIONS被禁用。
请参阅内核源代码中的fs/notify/fanotify/fanotify_user.c:
SYSCALL_DEFINE5(fanotify_mark, int, fanotify_fd, unsigned int, flags,
__u64, mask, int, dfd,
const char __user *, pathname)
{
...
#ifdef CONFIG_FANOTIFY_ACCESS_PERMISSIONS
if (mask & ~(FAN_ALL_EVENTS | FAN_ALL_PERM_EVENTS | FAN_EVENT_ON_CHILD))
#else
if (mask & ~(FAN_ALL_EVENTS | FAN_EVENT_ON_CHILD))
#endif
return -EINVAL;https://stackoverflow.com/questions/34766479
复制相似问题