首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何确定是否启用了CONFIG_FANOTIFY_ACCESS_PERMISSIONS?

如何确定是否启用了CONFIG_FANOTIFY_ACCESS_PERMISSIONS?
EN

Stack Overflow用户
提问于 2016-01-13 12:15:33
回答 1查看 1.3K关注 0票数 3

我想使用fanotify(7),我遇到的问题是,在某些内核上,尽管配置了CONFIG_FANOTIFYCONFIG_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)的方法,但在文档中找不到类似的东西。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-13 12:30:19

似乎fanotify_mark()在传递FAN_ALL_PERM_EVENTS时返回EINVAL,但CONFIG_FANOTIFY_ACCESS_PERMISSIONS被禁用。

请参阅内核源代码中的fs/notify/fanotify/fanotify_user.c

代码语言:javascript
复制
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;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34766479

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档