监视、扩展和索引 Linux 文件系统

监视、扩展和索引 Linux 文件系统

我想在 Linux 系统上捕获以下操作。是否可以有效地做到这一点?我的最终目标是提供审计和一组以不同方式索引的附加文件系统元数据。如果答案是“否”,我非常感谢你提供有用的指导。


1) open(), and its parameters (where flags is O_CREAT)
2) write(), along with its parameters, *buf, and the struct file for fd, including f_pos
3) the corresponding information in 2 for a memory-mapped write to a file. I realize I'm asking something very difficult here as it requires an incestuous knowledge between the layers. Setting a flag that memory-mapped IO to a given open file has occurred is good enough, similar to how O_DIRECT writes might be handled. (triggering a later re-scan).
4) rename(), unlink()
5) mkdir(), rmdir()
6) truncate(), ftruncate()

如果有竞争技术可以捕获这些类型的操作,我最感兴趣的是那些持续时间最长的技术(最稳定和社区支持),以及那些最不特定于文件系统的技术(reiser4 插件很令人兴奋但在政治上似乎不可行)。

虽然我的列表 1-6 只是示例,但关于我忘记的内容的想法很有帮助。但我并不想面面俱到,只是想传达我的设计目标。

例如,将这些数据传递给用户空间将允许保留实时的locate/updatedb索引。这将允许数据库跟踪每个块和每个文件的MD5。这些数据的可用性可以促进快照。

答案1

您想使用incrond。来自手册页:

   The inotify cron daemon (incrond) is a daemon which monitors filesystem
   events and executes commands defined in system and  user  tables.  It’s
   use is generally similar to cron(8).

答案2

以下是一些相关文章:

我认为第一个是一个不错的快照解决方案,如果逻辑卷管理器或即将到来的近端粒长度不是您想要的。当然,NILFS2 尚未经过广泛测试,您必须自己决定是否冒险将其放在生产服务器上。

第二个参考更像是安全审计,但大致指向同一方向。

答案3

怎么样系统水龙头? 它类似于 Solaris 上的 Dtrace。至少对于系统调用来说,它似乎是一个不错的解决方案。它似乎在 Fedora 上得到了很好的支持。

答案4

SeLinux 与 auditd 相结合是一种使用内核中已有的方法获取数据的方法。

如果您只想将其用于一个应用程序,则另一个选择是使用 LD_PRELOAD 技巧。

相关内容