我想利用fanotify(7) http://man7.org/linux/man-pages/man7/fanotify.7.html我遇到的问题是在某些内核上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)
函数 fanotify 权限处理在当前运行的内核上是否可用?
我正在考虑一种类似于返回的方法ENOSYS
when fanotify_mark()
未实施(fanotify_mark(2) http://man7.org/linux/man-pages/man2/fanotify_mark.2.html),但在文档中找不到类似的内容。
看起来fanotify_mark()
回报EINVAL
when FAN_ALL_PERM_EVENTS
已通过但是CONFIG_FANOTIFY_ACCESS_PERMISSIONS
被禁用。
See fs/notify/fanotify/fanotify_user.c http://lxr.free-electrons.com/source/fs/notify/fanotify/fanotify_user.c#L843在内核源代码中:
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;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)