Trusted Solaris 開発ガイド

無効な呼び出しと有効なコードの作成

次に、auditwrite(3) ルーチンに対する呼び出しが無効な場合と有効な場合の、監査トレールに記録される監査レコード例をそれぞれ示します。監査レコードとトークンの構造は、「トークンの構造」を参照してください。

無効な呼び出し

複数の制御コマンドを使用するか、制御コマンドを省略するか、あるいは AW_END ターミネータコマンドを含めない場合、コードがコンパイルおよび実行されて、監査トレールに auditwrite(3) ルーチンに対する無効な呼び出しが記録されます。プロセスの事前選択マスクが AUE_auditwrite イベントの失敗を監査する場合にのみ、このイベントがトレールに記録されます。

次の例は、AW_END ターミネータコマンドが省略された無効な auditwrite(3) ルーチンコールと、その結果生成された監査レコードを示しています。この最初のプログラムに示しているヘッダーファイルは、この章のこれ以降の例にも適用されます。

#include <bsm/auditwrite.h>
 #include <tsol/label.h>
 #include <sys/param.h>
 #include <bsm/libbsm.h>
 #include <tsol/priv.h>

 main()
 {
/* AW_END のない無効な呼び出し。このような使い方はしないこと */
 	auditwrite(AW_EVENT, "AUE_second_signature", AW_WRITE);
 }

無効な呼び出しは syslog に記録され、その無効なレコードに情報が十分含まれる場合は監査トレールにも記録されます。この例では、無効な呼び出しは、次の情報とともに syslog にだけ記録されます。


header, 194,2,auditwrite(3) fail,,Fri Sep 06 10:11:33 1996, + 179952500 msec

text, auditwrite(3) aborted: aw_errno = 6 = Command invalid, errno = 0 = no such device or
address

subject,zelda,zelda,staff,zelda,staff,1774,348,0 0 phoenix

slabel,C

return,failure,-1

有効な呼び出し

auditwrite(3) ルーチンに対するこの呼び出しは AW_END コマンドを含み、AUE_second_signature イベントを監査トレールに記録します。

/* AW_END を含む有効な呼び出し */
 auditwrite(AW_EVENT, "AUE_second_signature", AW_WRITE, AW_END);

表示用の端末に、次のレコードが表示されます。


header, 4022,2,second signature requested,,Fri Sep 06 10:16:49 1996 + 969954500 msec

subject,zelda,zelda,staff,zelda,staff,1774,348,0 0 phoenix

slabel,C

return,success,0