在利用ebpf监控文件变更操作中,记录一些内核参数获取的过程。
1.环境信息
openeuler 2203
2.常用的修改文件的方式或者命令
1).直接使用文件系统的操作接口,比如write等;
2.)系统命令,比如vim/vi,sed,echo,cp,mv
涉及到的系统调用主要有:
sys_enter_write
sys_enter_renameat2
sys_enter_rename
sys_enter_copy_file_range
sys_enter_unlinkat
3.监控中参数获取遇到问题
1),根据fd获取文件的名称
在ebpf中函数sys_enter_write函数的参数:
# bpftrace -vl tracepoint:syscalls:sys_enter_write
tracepoint:syscalls:sys_enter_write
int __syscall_nr
unsigned int fd
const char * buf
size_t count
如果需要在sys_entrer_write中获取fd对应文件名称,通过以下方式:
unsigned int fd;
struct task_struct* t;
struct task_struct* p;
struct files_struct* f;
struct fdtable* fdt;
struct file** fdd;
struct file* file;
struct path path;
struct dentr