我想在ebpf内核程序中获取被删除文件的绝对路径,有什么好的方法?

新手上路,请多包涵

我想在ebpf内核程序中获取被删除文件的绝对路径,有什么好的方法?

我现在使用fexit监控do_ublinkat(删除文件)和vfs_rmdir(删除目录)两个函数,函数的参数中只包含struct dentry,所以bpf_d_path等函数无法使用。我只能尝试从dentry反向遍历parent去获取路径,根据内核资料,创建文件的最大路径长度是4096,但是根据测试这个是从当前路径计算的,不包含根目录到当前目录的长度,当我用mkdir -p $(printf "test%s/" $(seq -s ' ' 1 10000))
命令时,可以在当前目录下创建1W个目录 test10000的绝对路径长度远大于4096,大概60000多字符。我现在如果需要一个缓冲区存储遍历结果的话 这个缓冲区的值并不固定,太大的值ebpf中也无法使用,现在还有什么其他的方案吗

阅读 764
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏