ファイルを変更するプロセスを探す [複製]

ファイルを変更するプロセスを探す [複製]

本番サーバー上の特定のファイルはランダムに変更されていますが、これはログアクティビティとは無関係です。どのプログラムがこのようなことをするのかは不明であり、疑わしい部分も多かった。犯人をどのように見つけることができますか?

常に同じファイル、同じパスにありますが、他のサーバーとは異なる時間にあります。このボックスは以下によって管理されます。人形ただし、ファイルが変更されている間は、人形ログにアクティビティは表示されません。

どのプロセスがこのファイルを変更しているかを見つけるのに役立つカーネルフック、ツール、または技術は何ですか?


lsofはファイルが非常に迅速に開かれ、修正され、閉じられるため、このような状況には適していません。ポーリングに依存するソリューション(たとえば、lsofの頻繁な実行)は悪いです。


  • オペレーティングシステム:Debianテスト済み
  • カーネル:Linux、2.6.32〜3.9、32ビット、64ビット。

答え1

auditdを使用してファイルを監視するルールを追加できます。

auditctl -w /path/to/that/file -p wa

その後、記録する項目を観察してください/var/log/audit/audit.log

答え2

探しているプログラムがまだファイルを開いている場合は、次のコマンドを使用できます。

 sudo lsof /path/to/file/being/modified

次のスクリプトを使用して小さなループから呼び出すこともできますgetfileusers.sh

 #!/bin/sh

 FILE=$1

 while true; do
    lsof "${FILE}"
 done > /tmp/fileusers.log

その後、呼び出します。

 sudo ./getfileusers.sh /path/to/file/being/modified

最後に、/tmp/fileusers.log誰がファイルに触れたかを確認してください。

答え3

SystemTap は以下を使用してこれを実行できます。Inode監視スクリプト

答え4

リアルタイムでキャプチャできる場合(ファイルにアクセス中など)、lsofを実行してプロセスを見つけることができます。

$ while :; do echo foo >> bar.txt; done &
$ sudo lsof bar.txt
COMMAND   PID     USER   FD   TYPE DEVICE SIZE/OFF     NODE NAME
bash    25723 terdon    1u   REG    8,6  5015796 16647496 bar.txt

関連情報