Solaris のシステム管理 (セキュリティサービス)

praudit コマンド

praudit コマンドは、標準入力からバイナリ形式の監査レコードを読み込み、そのレコードを表示可能な書式で表示します。auditreduce コマンドまたは 1 つの監査ファイルからの出力は、praudit コマンドの入力にパイプできます。catコマンドを使用すると、複数のファイルを連結して入力にパイプすることができます。tail コマンドを使用すると、現在の監査ファイルを入力にパイプできます。

praudit コマンドでは、次の 5 つの出力形式を生成できます。

praudit のデフォルトの出力形式では、各レコードは監査トークンのシーケンスとして容易に識別できます。各トークンは 1 行ごとに出力されます。各監査レコードは header トークンで始まります。awk コマンドなどを使用すると、出力をさらに処理できます。

次の出力は、 headerトークンを praudit コマンドのデフォルトで出力したものです。


header,240,1,ioctl(2),es,Tue Sept  7 16:11:44 1999, + 270 msec

次の出力は、同じ header トークンを praudit -r コマンドで出力したものです。


20,240,1,158,0003,699754304, + 270 msec

例 — praudit 出力をスクリプトで処理する

praudit コマンドの出力は、必要に応じてテキストとして操作できます。たとえば、auditreduce コマンドでは選択できないレコードを選択したいことがあります。単純なシェルスクリプトを使用すると、praudit の出力を処理できます。次の単純なスクリプトの例は、1 つの監査レコードを 1 行にまとめ、ユーザーが指定した文字列を検索し、最後に監査ファイルを元の形式に戻します。具体的には、スクリプトは次の処理を実行します。

  1. header トークンに、Control-A という接頭辞を目印として付けます。

  2. 1 つのレコード内のすべての監査トークンを 1 行に結合します。ただし、改行の情報は Control-A として保持されます。

  3. grep コマンドを実行します。

  4. 元の改行を復元します。


#!/bin/sh
praudit | sed -e '1,2d' -e '$s/^file.*$//' -e 's/^header/^aheader/' \\
| tr '\\012\\001' '\\002\\012' \\
| grep "$1" \\
| tr '\\002' '\\012'

スクリプトの ^a は、^a という 2 つの文字ではなく、Control-A です。この接頭辞によって、ヘッダートークンが、テキストとして表示される header 文字列と区別されます。