0

ファイルを監視するためにLinuxでツールを検索しています。たとえば、ファイルに何が起こったのかを知る必要があります。作成、書き換え、読み取りなどのように。

私はこれを達成するために inotify を使用できることを知っています。しかし、もっと詳細な情報が必要です。たとえば、ファイルを作成するイベントを知ることができます。しかし、ファイルが作成されただけでなく、作成されたファイルのサイズも必要です。たとえば、ファイルを読み取る場合、ファイルの読み取りイベントが発生したことだけでなく、読み取り元のファイルのオフセットなど、ファイルの読み取りの詳細も知りたいとします。

この問題を解決できる人はいますか?

4

3 に答える 3

1

私の知る限り、カーネルにはその詳細を提供するインフラストラクチャがありません。このようなサポートは、システムのパフォーマンスにさえ影響を与える可能性のある監視フックの量が多すぎることを意味します。そのような情報を受け取るには、独自のカーネルコードを作成する必要があります...

また、一部の操作の粒度についても混乱しているようです。たとえば、open()システムコールを介してファイルを作成すると、最初は空になります。サイズを変更するには、追加のシステムコール(write()または)が必要です。lseek()特定のサイズのファイルを作成するアトミック操作を認識していません。

そうは言っても、次の選択肢の1つまたは組み合わせを使用できる可能性があります。

  • inotifyとシステムコールを使用して、stat操作とファイルサイズおよびアクセス許可をログに記録します。残念ながら、このアプローチはアトミックではなく、読み取り/書き込みオフセットを提供しません。

  • straceファイルを変更する可能性のあるすべてのプロセスで使用します。straceログは、人間が解析するのに非常に長くて面倒な場合がありますが、トレースされたアプリケーションによって実行された操作に関する多くの情報を提供します。

  • 特定のファイルに関心がある場合は、FUSEファイルシステムを使用して、すべての操作をパススルーし、すべてを記録することで、ディレクトリをミラーリングできます。

于 2012-06-21T22:26:09.293 に答える
1

独自の監視ツールをコーディングしたくない場合は、auditdが適しています。それ以外の場合、usingsys/inotify.hstruct inotify_event構造体を参照してファイルに関する情報を提供します。

于 2014-02-17T13:42:07.813 に答える
0

詳細な情報が必要な場合は、VFSをフックするカーネルモジュールを作成する必要があります。監査サブシステムでさえ、これらすべての詳細を持っているわけではありません。

于 2012-06-21T19:45:16.637 に答える