linux-kernel - 是否可以使用 eBPF 来做到这一点?即,我可以在文件被删除之前捕获事件吗?并收回
问题描述
我正在尝试使用 ebpf 跟踪文件的删除,并希望在删除文件之前进行备份,然后删除文件。
为了跟踪文件的删除,其他社区成员告诉我使用三种方法
- 跟踪 security_path_unlink(const struct path *dir, struct dentry *dentry); 功能。
但是一天结束时,我需要文件路径来备份,以便获取文件路径,我再次获得了两个选项
long bpf_d_path(struct path *path, char *buf, u32 sz) 不幸的是,bpf_d_path 允许列表没有 security_path_unlink() 函数。
同时,您仍然可以使用 kfunc 或 kprobe 附加到 security_path_unlink() 函数,但您需要自己进行路径遍历,类似于 bpf 程序中的内核代码。
但不确定用第二种方法获取文件的天气
- 使用 LSM_PROBE 挂钩 security_path_unlink,拒绝此类调用并进行备份,然后删除文件。
但捕获仍然不确定如何获取路径
- aquasecurity tracee项目使用security_inode_unlink函数来跟踪文件的删除,但是tracee项目使用dentry到文件路径的方法来获取文件路径并遍历它
是否可以使用 eBPF 来做到这一点?即,我可以在文件被删除之前捕获事件吗?并获取文件路径。但是无法与其中任何一个合作,请建议我解决此问题的正确方法
解决方案
推荐阅读
- python - 如何使圆形精灵出现 - pygame
- c++ - 'vlq' 的初始化没有匹配的构造函数
- javascript - 如何在nestjs graphql中实现用户保护
- c++ - 如何在 C++ 中为 SSH_SCP API (libssh) 提供超时时间
- swift - @EnvironmentObject Initializer 'init(_:)' 要求 'Binding
' 符合 'StringProtocol' - laravel - 如何使用 laravel 将对象存储到数据库中
- python - 字符串中出现的字符,如何用python删除它们
- python - Anaconda 无法初始化
- swift - 使用 Vapor4 时无法创建有效、有效的新项目
- c# - 无法在 asp dotnet core web api 中创建 HttpGet 和 HttpDelete