「client_state.xml」、「lockfile」、「time_stats_log」という3つのファイルが突然ホームディレクトリに表示されました。最後の2つは空です。彼らがどうやってそこに着いたのだろう。それが起こったのは初めてではありませんが、最後は数週間前でした。私はファイルを削除しましたが、何も壊れたり不満を言ったりしていません。 stat $filename
から報告された当時、自分が何をしていたのかを考えることができませんでした。彼らがどこから来たのかを知る方法はありますか?
または、ファイルの作成についてホームディレクトリ(サブディレクトリではなく)を監視する方法はありますか?
どのプログラムがファイルを作成したかを判断する方法があるとは思いません
別の質問の場合:ただし、inotify
を使用して、ファイルが再作成されるのをできます。 inotifywait
はinotify
サブシステムのコマンドラインインターフェイスです。ホームディレクトリでcreate
イベントを探すように指示できます。
$ (sleep 5; touch ~/making-a-test-file) &
[1] 22526
$ inotifywait -e create ~/
Setting up watches.
Watches established.
/home/mmrozek/ CREATE making-a-test-file
おそらく-m
(モニター)、最初のイベントを検出した後に終了しないように指示します
LoggedFS を介してファイルシステムにアクセスすることにより、ファイルシステムで発生するすべてを監視できます。これは stacked filesystem であり、すべてのアクセスをディレクトリツリーに記録します。
loggedfs -l /var/tmp/$USER-home-fs.log ~
ホームディレクトリ全体をログに記録すると、システムの速度が低下する可能性があります。少なくとも 設定ファイル を厳格なフィルターで記述したいと思うでしょう。
Rootアクセス権がある場合、Linuxでは、 監査サブシステム を使用して、ファイルシステムアクセスを含む多数のログを記録できます。 auditd
デーモンが開始されていることを確認してから、ログに記録する内容を auditctl
で構成します。ログに記録された各操作は、/var/log/audit/audit.log
に記録されます(通常のディストリビューション)。特定のファイルの監視を開始するには:
auditctl -w /path/to/file
または長い形式で
auditctl -a exit,always -F path=/path/to/file
(-w
または-F dir=
を使用して)ディレクトリに監視を配置すると、その中のファイルとそのサブディレクトリも再帰的に監視されます。
auditd
を確認することをお勧めします。このパッケージを使用すると、セキュリティ監査を実行し、ファイルシステムで誰が何を変更したかに関する多くの情報を取得できます。
これは古い質問であることはわかっていますが、誰かが便利だと思った場合に備えて、別のアプローチを提案します。私はもともとこれにだまされた質問への回答としてこれを投稿しました。
1つのオプションは、sysdig
を使用することです。オープンソースのシステム監視アプリケーションです。これを使用すると、ファイルのアクティビティを名前で監視できます。 /tmp/example.txt
という名前のファイルを作成しているプロセスを確認したいとします。
# sysdig fd.name=/tmp/example.txt
567335 16:18:39.654437223 0 touch (5470) < openat fd=3(<f>/tmp/example.txt) dirfd=-100(AT_FDCWD) name=/tmp/example.txt flags=70(O_NONBLOCK|O_CREAT|O_WRONLY) mode=0666
567336 16:18:39.654438248 0 touch (5470) > dup fd=3(<f>/tmp/example.txt)
567337 16:18:39.654438592 0 touch (5470) < dup res=0(<f>/tmp/example.txt)
567338 16:18:39.654439629 0 touch (5470) > close fd=3(<f>/tmp/example.txt)
567339 16:18:39.654439764 0 touch (5470) < close res=0
567342 16:18:39.654441958 0 touch (5470) > close fd=0(<f>/tmp/example.txt)
567343 16:18:39.654442111 0 touch (5470) < close res=0
その出力から、pid 5470のtouch
という名前のプロセスがファイルを開いたことを確認できます。
さらに情報が必要な場合は、システムコールトレースが収集される「キャプチャモード」で実行できます。
# sysdig -w /tmp/dumpfile.scap
次に、ファイルが作成されるのを待ってから、sysdig
を停止して実行します。
# csysdig -r /tmp/dumpfile.scap
それはあなたが起こったすべてを探検することを可能にするでしょう。 <F2>
を押してFiles
を選択し、<F4>
を押してファイル名を検索し、<F6>
を押して「Dig」します(これにより、上記のコマンド)。その後、同じアプローチを使用して、実際にファイルを作成したプロセスに関する情報を見つけることができます。
sysdig-inspect
と呼ばれるcsysdig
のGUIバージョンがあります。
inotify
を取得していないため、ループでファイルをチェックするスクリプトを記述できます。
#!/bin/sh
while [ true ]; do # Run for as long as nessesary
if [ -f /path/to/file ]; then # If fileexists
echo "Found file" # Notify and stop monitoring
exit 0
fi
sleep 5 # Else wait 5 secs
done