Linux kernel Linux内核:记录所有文件访问

Linux kernel Linux内核:记录所有文件访问,linux-kernel,filesystems,ext3,Linux Kernel,Filesystems,Ext3,在一个非常受限的嵌入式Linux系统上,我希望记录所有打开/映射/任何读写操作的文件。换句话说,所有至少访问一次的文件。最好的方法是什么?由于“某些”限制,我不希望修改/破解文件系统、初始化脚本和用户空间级别。。。我想我更喜欢在内核中做事情。即使在正确的函数中插入printk也是可以接受的。如果这很重要,我将使用ext3文件系统。回答我自己的问题。修补内核文件系统驱动程序是一个有效的解决方案: char *buf = (char*)__get_free_page(GFP_USER); char

在一个非常受限的嵌入式Linux系统上,我希望记录所有打开/映射/任何读写操作的文件。换句话说,所有至少访问一次的文件。最好的方法是什么?由于“某些”限制,我不希望修改/破解文件系统、初始化脚本和用户空间级别。。。我想我更喜欢在内核中做事情。即使在正确的函数中插入printk也是可以接受的。如果这很重要,我将使用ext3文件系统。

回答我自己的问题。修补内核文件系统驱动程序是一个有效的解决方案:

char *buf = (char*)__get_free_page(GFP_USER);
char *name = dentry_path_raw(file->f_dentry, buf, PAGE_SIZE);
printk("FILE OPEN read: %d write: %d %s\n", file->f_mode & FMODE_READ, file->f_mode & FMODE_WRITE, name);
free_page((unsigned long)buf);

您想更改内核,但不想修改FS堆栈?你能澄清一下吗?无论如何,在可堆叠文件系统中拦截FS调用如何,记录并转发给本机FS。如果要跟踪整个FS,请将此可堆叠FS装载到/':检查此处:正确。我想避免修改FS堆栈,我可以在内核中做任何事情。inotify怎么样?如果这没用,也许我不明白你的问题。您需要
auditd
,Linux审计守护进程。谢谢我真的更喜欢在内核内部做一些事情,因为我需要监控一旦init启动就会发生的棘手的事情。我已经准备好修补内核了。我只是在问什么是拦截所有开放fs呼叫的最佳位置。