Android内核运行fanotify而不生根?

Android内核运行fanotify而不生根?,android,c,linux,linux-kernel,fanotify,Android,C,Linux,Linux Kernel,Fanotify,我想实现一个supported by kernel>2.6.37,它是安卓x86的安卓5+接口中提供的,首先用于goldfish emulator。我喜欢使用这个工具来启动文件系统监视器,使用基本结构的C程序来使用fanotify系统调用fanotify_init2和fanotify_mark2。我通过自己的访问权限扩展了fsmon代码。该权限应该可以在以后由Android系统应用程序进行编辑。例如:我可以稍后选择拒绝哪些文件类型 问题如下: fanotify的另一个大缺点是,为了更具体,它目前

我想实现一个supported by kernel>2.6.37,它是安卓x86的安卓5+接口中提供的,首先用于goldfish emulator。我喜欢使用这个工具来启动文件系统监视器,使用基本结构的C程序来使用fanotify系统调用fanotify_init2和fanotify_mark2。我通过自己的访问权限扩展了fsmon代码。该权限应该可以在以后由Android系统应用程序进行编辑。例如:我可以稍后选择拒绝哪些文件类型

问题如下:

fanotify的另一个大缺点是,为了更具体,它目前是根目录的CAP\u SYS\u ADMIN-only。这意味着只有root用户可以请求使用fanotify[…]提供的监视功能

手机是必备品吗?但是,在内核引导fsmon二进制文件时/之后,是否还有其他方法可以运行而无需对设备进行根操作

我的第一个想法是在每次启动init.d之后执行一个文件/服务。但要使用它,你需要一个根手机。然后我发现了这个:

如果您的设备是根设备,则可以使用超级用户权限执行脚本,但普通用户也可以这样做

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

下一个想法是运行crontab,但根相同的手机

现在我更深入一层——在内核引导序列中链接/执行二进制代码或c代码。。老实说,我不是一个专业的内核开发人员。我知道,我需要systemcall来运行内核中的文件。但我的方法正确吗?如果这是正确的方式,我以后如何与系统应用程序通信?我是否需要创建一个双方都可以访问的小型数据库?从系统应用程序访问提供的数据的最佳方式是什么?显示器的正确启动位置在哪里?当然-在设置文件系统之后

或者,如果不支持手机,使用fanotify是绝对不可能的


如果有人能给我一些提示,我将非常高兴…

您正在尝试使用一个功能,该功能需要用户和应用程序进程的权限CAP\u SYS\u ADMIN或root。您需要为指定的应用程序提供此功能的手机,或者您需要为手机设置根目录。我不知道有哪款手机提供这种功能,因为它会使应用程序破坏系统的安全性。

Ok,对于用户空间和内核空间之间的通信:Android专用绑定器是解决这个问题的正确方法吗?我会继续研究……好的,这是我的答案,谢谢!我已经怀疑这是不可能的。。。然后我会为这个计划找到电话。