ディスク/ディレクトリへのすべてのアクセスをログに記録することは可能ですか?

ディスク/ディレクトリへのすべてのアクセスをログに記録することは可能ですか?

ディスクまたはディレクトリ (どちらでも構いません) へのすべてのアクセスをログに記録 (コンソールまたはファイルに出力) するスクリプトが必要です。また、アクセスされた対象 (サブディレクトリまたはファイル) を正確に把握したいと考えています。私のシステムは Ubuntu Linux です。これは可能ですか? また、どのように実行できますか?

答え1

inotifyを見てください。まさにそれが、このツールが作られた目的です。IBMは、そこそこ良い紹介記事(少々古いですが)を書いています。http://www.ibm.com/developerworks/linux/library/l-inotify.html

答え2

単純なフィルター スクリプトを使用して strace 単一プログラムのアクションを監視する場合は、より一般的には SElinux の「auditd」を参照してください。

http://en.wikipedia.org/wiki/ストラス http://linux.die.net/man/8/auditd

Windows 側では、SysInternals の filemon を参照してください。

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

答え3

使用できますインクロンこれは、inotify からのファイルシステム イベント用の cron のようなツールです。

IN_ACCESS イベントが発生するたびに実行されるアクションを定義できます。

設定は cron と同じくらい簡単です:

<path> <mask> <command>

どこ:

  • <path>ファイルシステムのパスです(各空白の前にはバックスラッシュを付ける必要があります)
  • <mask>イベントのシンボル(inotify.hを参照。シンボルの区切りにはコンマを使用)または数値マスクです。
  • <command>イベントで実行されるアプリケーションまたはスクリプトです

答え4

本当にその大きな出力を見たいのであれば、auditd を使うことができます。しかし、ファイルに出力したい場合、ファイルへのアクセスはログ ファイルにその出力が出力されることになるため、無限ループが発生する可能性があります。ログ ファイルへの出力もファイルへのアクセスなので、ログ ファイルにも出力されるはずです。ですから、注意してください。

無限ループがない場合でも、出力されるデータの量は非常に多くなるはずです。質問を「この監視で何を達成したいのか」に変更すると、すべてのファイルへのアクセスをログに記録するよりも良い方法を提案してくれる人がいるかもしれません。

関連情報