是否可以记录对磁盘/目录的每次访问?

是否可以记录对磁盘/目录的每次访问?

我需要一些脚本来记录(仅输出到控制台或文件)对某个磁盘或目录的每次访问(对我来说都可以)。我还想知道究竟访问了什么(哪个子目录或文件)。我的系统是 ubuntu linux。这可能吗?我该怎么做?

答案1

看看 inotify,它就是为此而生的。IBM 有一个还算不错的介绍(虽然有些过时了),网址为http://www.ibm.com/developerworks/linux/library/l-inotify.html

答案2

如果您想要使用简单的过滤脚本来监控单个程序 strace 的操作,通常可以查看 SElinux 的“auditd”。

http://en.wikipedia.org/wiki/Strace http://linux.die.net/man/8/auditd

在 Windows 方面,查看 SysInternals 人员提供的 filemon。

http://technet.microsoft.com/en-us/sysinternals/bb896642.aspx

答案3

您可以使用因克龙,这是一个类似于 cron 的工具,用于处理来自 inotify 的文件系统事件。

您可以定义每次发生 IN_ACCESS 事件时执行的操作。

配置和 cron 一样简单:

<path> <mask> <command>

在哪里:

  • <path>是文件系统路径(每个空格前面必须加一个反斜杠)
  • <mask>是事件的符号(参见 inotify.h;使用逗号分隔符号)或数字掩码
  • <command>是在事件上运行的应用程序或脚本

答案4

如果您确实希望看到如此大的输出,那么您可以使用 auditd。但是如果您想将其打印到文件中,则可能会导致无限循环,因为对文件的任何访问都意味着将其打印到日志文件中。打印到日志文件也是对文件的访问,因此它也应该打印到日志文件中。所以要小心。

即使没有无限循环,这将打印的数据量也应该非常大。如果你将问题改为你想通过这种监控实现什么,也许人们可以建议一种比记录对所有文件的访问更好的方法。

相关内容