问题标签 [fanotify]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
614 浏览

android - Android内核在没有root的情况下运行fanotify?

我想为 Android x86 实现一个fanotify(由内核> 2.6.37 支持 - 在 Android 5+ 中提供)接口 - 首先用于金鱼模拟器。我喜欢使用fsmon工具来启动文件系统监视器(一个具有基本结构的 C 程序,可以使用 fanotify 系统调用fanotify_init(2)fanotify_mark(2))。我通过自己的访问权限扩展了 fsmon 代码。此权限应该能够稍后由 Android 中的系统应用程序进行编辑。(例如:我可以稍后选择,拒绝哪些文件类型)

问题如下:

“fanotify 的另一个大缺点是它目前是 root-only(更具体地说是 CAP_SYS_ADMIN-only)。这意味着只有 root 用户可以请求使用 fanotify 提供的监控功能 [...]” [来源]

有根手机是必须的吗?但是,没有其他方法可以在内核启动 fsmon 二进制文件时/之后运行而不使设备生根吗?

我的第一个想法是在每次启动后执行一个文件/服务init.d。但是要使用它,您需要一部有根电话。然后我发现了这个:init.d 脚本支持

“如果您的设备已植根,则可以使用超级用户权限执行脚本,但普通用户也可以执行。”

但我不明白这是如何工作的(我还没有测试过)这可能是一个可能的解决方案吗?为了在其他设备上运行它(不安装此应用程序),我需要了解该应用程序如何绕过问题。并init.d在用户空间中执行,甚至可以在那里以 root 身份运行监视器吗?

接下来的想法是运行一个 crontab,但同样的故事- 植根电话。

现在我更深一层 - 在内核启动序列中链接/执行二进制文件(或 c 代码).. 老实说 - 我不是专业的内核开发人员。我知道,我需要execve系统调用才能在内核中运行文件。但是我的方法对吗?如果这可能是正确的方式,我以后如何与系统应用程序通信?我是否需要创建一个双方都可以访问的小型“数据库”?哪种方式最适合从系统应用程序访问提供的数据?( kernel-userspace-communication: Procfs, Sysfs, Configfs, ... ) 哪里是启动监视器的正确位置?(当然 - 在设置文件系统之后)

还是绝对不可能在不root手机的情况下使用fanotify

如果有人能给我一些建议,我会很高兴...

0 投票
1 回答
530 浏览

android - Android fanotify_init:功能未实现

我正在尝试在 Android 上使用fanotify,并希望将其存档为可执行文件(使用 ndk 编译)。我正在使用fsmon(调用 fanotify 系统调用的小应用程序)来启动监视器。但是在执行文件时(在根设备上以根用户身份)我收到以下错误:

fanotify 在内核版本 > 2.6.37 中可用(在 Android 5+ 中提供)。

我曾在 x86 模拟器(Android 7)和带有 CM13(均已植根)的三星 I9300 armeabi-v7a(Android 6)上尝试过它。x86 模拟器的内核版本:3.4.67+和三星设备的内核版本:3.0.101-CM-g9c98896

然后我查看了 x86-emulator goldfish 内核文件/goldfish/fs/notify/fanotify/Kconfig

所以,我将两者都设置为 Y,make clean然后重新编译内核 - 但和以前一样的问题......我忽略了什么吗?

0 投票
0 回答
182 浏览

windows - 当进程想要打开文件时如何得到通知?

我想编写一个程序,每次进程想要打开文件时都会收到通知并执行某个事件,我们是否能够允许进程访问新文件或禁止它。
例如:我希望它像 linux 中的fanotify API 一样工作。
有没有办法在 windows 下做同样的事情?

我希望它在 OpenFile 或 CreateFile 或其他处理文件的函数运行时通知我: CreateFile Example

0 投票
0 回答
516 浏览

linux - 为 linux 制作一个类似于驱动程序的微过滤器

我是 Linux 文件系统的新手。我想使用像 Linux 驱动程序这样的迷你过滤器,我遇到了各种选项,如 Hooks、DazukoFS(现在不使用)fanotify。所以我选择了 fanotify。我想在打开文件之前对其进行修改。类似的工作是由杀毒软件在打开之前扫描每个文件执行的。我没有任何方法来完成这项任务。即使没有获得任何适当的 fanotify 文档,我也可以使用它来实现这一点。我遇到了 FAN_OPEN_PERM,同样没有例子。任何帮助将不胜感激。提前致谢。

0 投票
1 回答
410 浏览

linux - fanotify:是否可以通过同一进程监控整个文件系统并在受监控的文件系统中写入少量日志/配置?

如果我尝试通过同一进程将某些内容登录到文件中,我的系统就会挂起。

实际上,我想用 fanotify 监控整个文件系统(“/”),并且还想记录错误以防“/tmp”中出现任何错误,但这会导致系统挂起。

请找到以下代码:

这是我调用handle_events的主要功能

0 投票
1 回答
525 浏览

c++ - fanotify - 内核 5.1 中引入的新标志的问题

从 Kernel 5.1 开始,引入了新标志FAN_ATTRIBFAN_CREATEFAN_DELETEFAN_DELETE_SELF、和。不幸的是,当我在函数中使用它们时,我得到了这个错误:FAN_MOVED_FROMFAN_MOVED_TOFAN_MOVE_SELFfanotify_mark()

fanotify_mark:无效参数

但是当我使用 , 和 之类的旧标志时FAN_ACCESSFAN_OPEN一切FAN_CLOSE_WRITE正常。

我不知道这是我的错还是 fanotify 实现中的错误。

这是我的代码:

该代码由 root 用户在 Ubuntu Server 19.10 (GNU/Linux 5.3.0-23-generic x86_64) 上运行。

0 投票
0 回答
60 浏览

c++ - 在 fanotify 中使用 popen,系统在处理 fanotify 事件时挂起

我正在使用Fanotify示例代码来处理文件打开和关闭事件。在 handle_events() 函数中,我被称为我的函数 checkFileIsExecutable()。调用函数后,我的系统挂起,需要硬重启。我正在提供用于检查可执行文件的功能。我添加了我的挂起代码作为参考,请检查它并帮助我解决这个问题。

错误代码:

要执行 cmd:file /root/Test/access 挂起....

0 投票
0 回答
1358 浏览

c++ - fanotify:如何检查内核是否启用或禁用了 fanotify API

我想编写一个功能来检查内核是否启用或禁用了 fanotify API。

如果它被启用,那么只有我的程序应该继续进行,否则它应该返回 FALSE。

我想编写一个适用于所有 linux 发行版的通用函数。有人可以帮忙解决这个问题吗?

做了一些搜索后,我发现它是在 /boot/config-<kernel_version> 文件中配置的。

0 投票
1 回答
122 浏览

c - 为什么 fanotify_fid Linux 手册页示例代码失败(在 open_by_handle_at() 上)?

我正在 Linux 5.4 上测试 fanotify(也在 5.8 上测试过);对于测试,我使用的是手册页fanotify_fid.c中的示例。fanotify(7)

现在,代码似乎很糟糕——我认为至少有几个错误——但我还是设法让它在一定程度上发挥作用。

有一个我无法解决的问题 -open_by_handle_at()失败Invalid argument

以下是我使用的示例代码,带有注释;它是原始代码的简化和更正版本;它适用于 gcc 和 clang。
为了测试它,执行它,然后在另一个终端中执行mktemp(或只是在 下创建一个文件/目录/tmp)。

0 投票
0 回答
27 浏览

linux - Linux 快照应用程序

我想通过 FANOTIFY 监控 snap 安装的 Linux 应用程序,但我无法做到这一点,只是通过“apt-get”或“yum”安装的应用程序。文档非常薄弱,这项任务是使我的应用程序适用于所有情况的必要条件。你有什么建议吗?