是否有可能logging每个访问磁盘/目录?

我需要一些脚本来logging(只是输出到控制台或文件)每个访问某个磁盘或目录(或者适用于我)。 我也想知道究竟(哪个子目录或文件)被访问。 我的系统是Ubuntu的Linux。 这是可能的吗?我该怎么做?

如果是用一个简单的filter脚本来监视单个程序的行为,那么就是你想要的,更一般地看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

你可以使用incron ,它是一个类似cron的工具,用于inotify的文件系统事件。

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

configuration和cron一样简单:

<path> <mask> <command> 

哪里:

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

如果你真的确定你想看到那么大的输出,那么你可以使用auditd。 但是如果你想把它打印到一个文件中,它可能会导致无限循环,因为对文件的任何访问都意味着把它打印到你的日志文件中。 打印到日志文件也是访问文件,所以它也应该打印到日志文件。 所以要小心。

即使没有无限循环,这个数据量也会很大。 如果你改变你的问题到你想实现什么,这个监测可能是人们可以build议更好的方式,然后login访问所有文件。