AUDIT_SUBMIT(3) | FreeBSD Library Functions Manual | AUDIT_SUBMIT(3) |
名称
audit_submit — 汎用の監査レコード提出ライブラリ
Basic Security Module User Library (libbsm, -lbsm)書式
#include < bsm/libbsm.h> int
audit_submit( short au_event, au_id_t auid, char status, int reterr, const char * restrict format, ...);
解説
audit_submit() 関数は、監査レコード提出 (submission) のための一般的なプログラミングインタフェースを提供します。この監査レコードは、ヘッダ、サブジェクトトークン (subject token)、省略可能なテキストトークン (text token)、リターントークン (return token) とトレーラを含みます。ヘッダは、 au_event によって指定されたイベントのクラスを含みます。サブジェクトトークンは、 auid に基づいて生成されます。リターントークンは、 status と reterr 引数に依存しています。 au_to_return への引数と異なって、 reterr は、BSM エラー番号でなくローカルであるべきです。オプションで、テキストトークンは、このレコードの一部として作成されます。テキストトークン出力は、その後の引数 (または stdarg(3) の可変長の引数機能を通してアクセスされた引数) がどのように出力の変換されるかを指定する、 format 文字列に制御されます。 format が NULL であるなら、テキストトークンは、監査レコードで作成されません。
audit_submit() は、 setaudit(2) または setaudit_addr(2) が既に呼び出されていることを仮定することに注意するべきです。直接の結果として、サブジェクトのための端末 ID は、 getaudit(2) または getaudit_addr(2) を通してカーネルから検索されます。
戻り値
成功するなら、 audit_submit は、0 を返します。そうでなければ、-1 が返され、グローバル変数 errno は、エラーを示す値が設定されます。使用例
#include <bsm/audit.h> #include <bsm/libbsm.h> #include <bsm/audit_uevents.h> #include <stdio.h> #include <stdarg.h> #include <errno.h> void audit_bad_su(char *from_login, char *to_login) { struct auditinfo_addr aia; struct auditinfo ai; au_id_t aid; int error; error = getaudit_addr(&aia, sizeof(aia)); if (error < 0 && errno == ENOSYS) { error = getaudit(&ai); if (error < 0) err(1, "getaudit"); aid = ai.ai_auid; } else if (error < 0) err(1, "getaudit_addr"); else aid = aia.ai_auid; error = audit_submit(AUE_su, aid, EPERM, 1, "bad su from %s to %s", from_login, to_login); if (error != 0) err(1, "audit_submit"); }
次の監査レコードが生成されます:
header,94,1,su(1),0,Mon Apr 17 23:23:59 2006, + 271 msec subject,root,root,wheel,root,wheel,652,652,0,0.0.0.0 text,bad su from from csjp to root return,failure : Operation not permitted,1 trailer,94
歴史
audit_submit() 関数は、OpenBSM バージョン 1.0 ではじめて登場しました。 OpenBSM 1.0 は、 FreeBSD 7.0 で導入されました。作者
audit_submit() 関数は、 <csjp@FreeBSD.org>によって書かれました。January 18, 2008 | FreeBSD |