如何查看是否启用了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 EINVAL
当FAN_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;
我想使用 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 EINVAL
当FAN_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;