EN JA
KRB5_ACL_MATCH_FILE(3)
KRB5_ACL_MATCH_FILE(3) FreeBSD Library Functions Manual KRB5_ACL_MATCH_FILE(3)

名称

krb5_acl_match_file, krb5_acl_match_stringACL マッチング関数

ライブラリ

Kerberos 5 ライブラリ (libkrb5, -lkrb5)

書式

krb5_error_code
krb5_acl_match_file( krb5_context context, const char *file, const char *format, ...);

krb5_error_code
krb5_acl_match_string( krb5_context context, const char *string, const char *format, ...);

解説

krb5_acl_match_file は、ファイルの各行に対して ACL 形式にマッチします。 # で始まる行は、コメントのように扱われ、無視されます。

krb5_acl_match_string は、文字列に対して ACL 形式にマッチします。

ACL 形式には、3 つの形式指定子があります: s, f と r です。各記述子は、データとマッチするか、または格納するために可変長引数から 1 つの引数を検索します。入力文字列は、デリミタとして " "と "\t"を使用して分割されます。行中の複数の " "と "\t"は、同じであると見なされます。

s
(大文字と小文字を区別する) strcmp(3) を使用して文字列をマッチします。
f
fnmatch(3) で文字列をマッチします。 fnmatch 関数に渡される flags 引数 (最後の引数) は、0 です。
r
渡された char ** に文字列のコピーを返します。コピーは、 free(3) で解放されなければなりません。エラーで文字列を free(3) (解放) する必要はありません: 関数は、クリーンアップし、 NULL へのポインタを設定します。

すべての未知の形式指定子によってエラーとなります。

使用例

char *s; 
 
ret = krb5_acl_match_string(context, "foo", "s", "foo"); 
if (ret) 
    krb5_errx(context, 1, "acl didn't match"); 
ret = krb5_acl_match_string(context, "foo foo baz/kaka", 
    "ss", "foo", &s, "foo/*"); 
if (ret) { 
    /* エラーで解放する必要はない */ 
    assert(s == NULL); 
    krb5_errx(context, 1, "acl didn't match"); 
} 
free(s);

関連項目

krb5(3)
May 12, 2006 HEIMDAL