如何查看是否启用了CONFIG_FANOTIFY_ACCESS_PERMISSIONS?

How to find out whether CONFIG_FANOTIFY_ACCESS_PERMISSIONS is enabled?

我想使用 fanotify(7),我 运行 遇到的问题是在某些内核上 CONFIG_FANOTIFY_ACCESS_PERMISSIONS 不起作用,尽管配置了 CONFIG_FANOTIFY

至少我想报告这种情况。

现在在 Debian 和 Ubuntu 上,我可以使用 grep CONFIG_FANOTIFY_ACCESS_PERMISSIONS /boot/config-$(uname -r) 的等效项来验证该功能是否可用。在其他一些系统上,我可以使用 zgrep CONFIG_FANOTIFY_ACCESS_PERMISSIONS /proc/config.gz 的等价物,但可能还有更多的系统没有被这两种方法覆盖。

有没有办法在任何 fanotify(7) 函数中确定当前 运行ning 内核是否提供 fanotify 权限处理?

fanotify_mark() 未实现 (fanotify_mark(2)) 时,我正在考虑类似于返回 ENOSYS 的方法,但在文档中找不到类似的方法。

似乎fanotify_mark() returns EINVALFAN_ALL_PERM_EVENTS 通过但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;