EN JA
AUDIT_SUBMIT(3)
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 に基づいて生成されます。リターントークンは、 statusreterr 引数に依存しています。 au_to_return への引数と異なって、 reterr は、BSM エラー番号でなくローカルであるべきです。オプションで、テキストトークンは、このレコードの一部として作成されます。

テキストトークン出力は、その後の引数 (または stdarg(3) の可変長の引数機能を通してアクセスされた引数) がどのように出力の変換されるかを指定する、 format 文字列に制御されます。 formatNULL であるなら、テキストトークンは、監査レコードで作成されません。

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() 関数は、 Christian S.J. Peron <csjp@FreeBSD.org>によって書かれました。
January 18, 2008 FreeBSD