我在尝试为 Android 创建自定义文件访问记录器时遇到麻烦。我检查了 FileObsever,但我需要获取有权访问某个文件列表的进程的 PID(USERID 也很有用)。
我也尝试了不同的选择,但没有成功。
是否可以使用 PID 访问某些文件进行记录?
问候!
我在尝试为 Android 创建自定义文件访问记录器时遇到麻烦。我检查了 FileObsever,但我需要获取有权访问某个文件列表的进程的 PID(USERID 也很有用)。
我也尝试了不同的选择,但没有成功。
是否可以使用 PID 访问某些文件进行记录?
问候!
有一些关于将 PID 报告添加到 Linux inotify() 机制的讨论(这可能是 FileObserver 的基础),但我没有从最初的搜索中发现它是否真的被合并并因此被 Android 继承 - 如果它是的,它可能只适用于具有管理权限的监视器的外国 UID。
您可以尝试使用 FileObserver,然后通过扫描 /proc 以查找 fd 来模仿 lsof,无论您在 Android 上被允许这样做的程度(有限?)。然而,这会给您带来竞争条件问题 - 在您看到“谁做的”之前,文件可能会再次关闭。
如果您真的想这样做,您可能需要一个自定义 ROM - 您可以应用任何必要的补丁来进行 inotify 并为您的安全应用程序授予权限,或者(如果您更喜欢那样)禁用报告的权限检查。
我对补丁的发现 - 当前合并状态未知:
http://lwn.net/Articles/307536/
直接使用 inotify() 的介绍(没有 PID 报告):