EN JA
krb5_keytab_intro(3)
krb5_keytab_intro(3) HeimdalKerberos5library krb5_keytab_intro(3)

名称

krb5_keytab_intro -キータブ (keytab) 操作関数

Kerberos キータブ

次のライブラリ関数を参照してください: Heimdal Kerberos 5 キータブ操作関数

キータブは、パスワードファイルのそれらと同等物である、サーバのための長期的なキー記憶域です。

通常、サーバのために有用な関数のみが、krb5_rd_req(), krb5_kt_resolve()krb5_kt_close() のような他のコア関数に使用するキータブを指定します。

キータブ名

キータブ名は、形式 type:residual です。残余の部分は、各キータブタイプに特有です。

キータブ名が解決されるとき、タイプは、キータブタイプの内部のリストと一致させられます。キータブタイプとの一致しないなら、デフォルトのキータブが使用されます。現在のデフォルトタイプは、FILE です。

デフォルト値は、変数 [defaults]default_keytab_name を設定することによって設定ファイル /etc/krb5.conf で変更することができます。

Heimdal で実装されるキータブタイプは、次の通りです:

file ファイルにキータブを格納します、タイプの名前は、FILE です。残りの部分は、ファイル名です。他の Kerberos 実装との互換性のために、WRFILE と JAVA14 も受け付けられます。 WRFILE には、FILE と同じ形式があります。 JAVA14 には、MIT kerberos と SUN の Java ベースのインストールのより古いバージョンとの互換性がある形式があります。それらは、切り詰められた kvno を格納するので、 knvo が 255 越えるとき、それらは、この形式に切り詰めされます。
keytab AFS キーファイル (通常、/usr/afs/etc/KeyFile) にキータブを格納します、タイプの名前は、AFSKEYFILE です。残りの部分は、ファイル名です。
memory キータブは、メモリセグメントに格納されます。これによって、センシティブおよび/または一時的なデータを、ディスクに格納できないようにします。タイプの名前は、MEMORY です。各 MEMORY のキータブは、参照カウントされ、残りの名前によってオープンされるので、 2 つのハンドルは、同じメモリ領域を指すことができます。最後のユーザが krb5_kt_close() 使用してキータブをクローズするとき、それらのキータブのキーは、0 で memset() され、解放され、またもはや名前によって検索することができません。

キータブ使用例

これは、ktutil の最小のバージョンです。


int
main (int argc, char **argv)
{
krb5_context context;
krb5_keytab keytab;
krb5_kt_cursor cursor;
krb5_keytab_entry entry;
krb5_error_code ret;
char *principal;


if (krb5_init_context (&context) != 0)
errx(1, 'krb5_context');


ret = krb5_kt_default (context, &keytab);
if (ret)
krb5_err(context, 1, ret, 'krb5_kt_default');


ret = krb5_kt_start_seq_get(context, keytab, &cursor);
if (ret)
krb5_err(context, 1, ret, 'krb5_kt_start_seq_get');
while((ret = krb5_kt_next_entry(context, keytab, &entry, &cursor)) == 0){
krb5_unparse_name(context, entry.principal, &principal);
printf('principal: %s0, principal);
free(principal);
krb5_kt_free_entry(context, &entry);
}
ret = krb5_kt_end_seq_get(context, keytab, &cursor);
if (ret)
krb5_err(context, 1, ret, 'krb5_kt_end_seq_get');
ret = krb5_kt_close(context, keytab);
if (ret)
krb5_err(context, 1, ret, 'krb5_kt_close');
krb5_free_context(context);
return 0;
}

 
11 Jan 2012 Version 1.5.2