これは架空の質問であり、私が現在抱えている問題ではありません。
どのプロセスが現在ファイルを使用しているかをどのように検出しますかまたは過去?
現在filename
にアクセスしているプロセスを確認するには、lsof filename
またはfuser filename
が作業を行います。しかし、どのプロセスがfilename
過去24時間以内にアクセスしたかを知りたい場合はどうでしょうか?
この醜い(*)ハックで逃れることができる
while true; do fuser filename; sleep 1; done
別の期間で24時間実行します。しかし、監査フレームワーク全体を設定せずに、実際にはより良いシステムがあるのでしょうか。
(*)fuser
が1秒未満でアクセスを検出できない場合があることは言うまでもありません...
システムで監査が有効になっている場合は、そのサブシステムを使用して、特定のファイルへのアクセスを監査できます。
たとえば、/etc/shadow
ファイルを開いている(または開こうとしている)ファイルを監査するには、次のルールを使用できます。
auditctl -a exit,always -S open -F path=/etc/shadow
その後、このコマンドを使用して、このファイルへのアクセスに対応する監査済みイベントをリストできます。
ausearch -f /etc/shadow
監査システムを構成および照会するには、rootである必要があることに注意してください。
ルールの設定方法の詳細については auditctl(8) のマニュアルページを、監査ログのクエリ方法の詳細については ausearch(8) のマニュアルページを参照してください。
監査を有効にしていない場合は、詳細が異なるため、Linuxディストリビューションに固有の監査方法を調べる必要があります。