コマンドライン引数を含むすべての実行されたコマンドを記録する簡単な方法はありますか?

コマンドライン引数を含むすべての実行されたコマンドを記録する簡単な方法はありますか?

rrdtool着信パスが正しくないことを確認するためにログを記録する方法の特定のインスタンスを見つけようとします。

引数を記録するシェルスクリプトで実行可能ファイルをラップできることを知っていますが、それを監視するカーネル専用の方法があるかどうかを知りたいです。特定の/proc/pid/で実行できるファイルシステムコールバックがあるかもしれません。与えられたものと一致するバイナリを見つけるときにexeを使用しますか?

ベストアンサー1

はい、監査サブシステムと呼ばれるカーネル機能があります。デーモンはauditdロギングを実行し、コマンドはauditctlロギングルールを設定します。特定のシステムへのすべての呼び出しを記録し、いくつかのフィルタリングを実行できます。実行されたすべてのコマンドとそのパラメーターを記録するには、execveシステム呼び出しを記録してください。

auditctl -a exit,always -S execve

特定のプログラムへの呼び出しを具体的に追跡するには、プログラムの実行可能ファイルにフィルタを追加します。

auditctl -a exit,always -S execve -F path=/usr/bin/rrdtool

ログは、/var/log/audit.logディストリビューションが配置する場所または場所に表示されます。監査サブシステムを制御するには、ルートである必要があります。

調査が完了したら、代わりに同じコマンドラインを使用してログ記録-dルール-aを削除または実行して、auditctl -Dすべての監査ルールを削除します。

デバッグ目的でプログラムをラッパースクリプトに置き換えると、環境や親プロセスに関する情報などを記録するための柔軟性が高まります。

おすすめ記事