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

名称

k_hasafs, k_hasafs_recheck, k_pioctl, k_unlog, k_setpag, k_afs_cell_of_file, kafs_set_verbose, kafs_settoken_rxkad, kafs_settoken, krb_afslog, krb_afslog_uid, kafs_settoken5, krb5_afslog, krb5_afslog_uidAFS ライブラリ

ライブラリ

AFS キャッシュ管理アクセスライブラリ (libkafs5, -lkafs5)

書式

#include < kafs.h>

int
k_afs_cell_of_file( const char *path, char *cell, int len);

int
k_hasafs( void);

int
k_hasafs_recheck( void);

int
k_pioctl( char *a_path, int o_opcode, struct ViceIoctl *a_paramsP, int a_followSymlinks);

int
k_setpag( void);

int
k_unlog( void);

void
kafs_set_verbose( void (*func)(void *, const char *, int), void *);

int
kafs_settoken_rxkad( const char *cell, struct ClearToken *token, void *ticket, size_t ticket_len);

int
kafs_settoken( const char *cell, uid_t uid, CREDENTIALS *c);

krb_afslog( char *cell, char *realm);

int
krb_afslog_uid( char *cell, char *realm, uid_t uid);

krb5_error_code
krb5_afslog_uid( krb5_context context, krb5_ccache id, const char *cell, krb5_const_realm realm, uid_t uid);

int
kafs_settoken5( const char *cell, uid_t uid, krb5_creds *c);

krb5_error_code
krb5_afslog( krb5_context context, krb5_ccache id, const char *cell, krb5_const_realm realm);

解説

k_hasafs() はいくつかのライブラリの内部の構造体を初期化して、カーネル中に AFS が存在するか、 k_hasafs() が呼び出される前に呼び出されるべき他の関数がないか、または、それが失敗するかをテストします。

k_hasafs_recheck() は、AFS クライアントが k_hasafs() または k_hasafs_recheck() が最後に呼び出された以後に開始されているなら、強制的に再チェックします。

kafs_set_verbose() は、libkafs を使用するアプリケーションが冗長なログ記録を出力することができるように、kafs ライブラリが何か重要なことを行うたびに呼び出されるログ関数を設定します。 NULL に設定された関数引数で関数 kafs_set_verbose を呼び出すことは、(設定されているなら) ログ記録関数から呼び出される libkafs を停止します。

kafs_settoken_rxkad() は、与えられた celltoken と (長さ ticket_len の) ticket を持っている rxkad を設定します。

kafs_settoken() と kafs_settoken5() は、 kafs_settoken_rxkad() と同じように動作しますが、Kerberos 4 または 5 の資格証明を afs のクリアトークン (cleartoken) とチケットに内部的に変換します。

krb_afslog() と krb_afslog_uid() は、指定された cellrealm のための新しいトークン (と、たぶんチケット) を取得します。 cellNULL であるなら、ローカルセルが使用されます。 realmNULL であるなら、関数は、どんなレルム (realm) を使用するかを推測しようと試みます。どんなセル (cell) またはレルム (realm) を使用するかに関する何らかの良い知識がないなら、利用者は、 NULL を渡すべきです。 krb_afslog() は、トークンの ViceId フィールドのために実ユーザ ID を使用し、 krb_afslog_uid() は、 uid を使用します。

krb5_afslog() と krb5_afslog_uid() は、 krb_afslog() と krb_afslog_uid() の Kerberos 5 同等物です。

krb5_afslog() と kafs_settoken5() は、 krb5.confkrb5_appdefault オプション afs-use-524 を通して異なって振る舞うように設定することができます。 afs-use-524 のためのあり得る値は、次の通りです:

yes
チケットを変換するためにレルム (realm) 中の 524 サーバを使用します。
no
afs セルが 2b トークンをサポートするなら、使用することができる、 Kerberos 5 チケットを直接使用します。
local, 2b
(524 サーバが行うべきであった 2b と同じ動作で) ローカルに Kerberos 5 資格証明を 2b トークンに変換します。

例:

[appdefaults] 
 SU.SE = { afs-use-524 = local } 
 PDC.KTH.SE = { afs-use-524 = yes } 
 afs-use-524 = yes

libkafs は、 krb5_appdefault 関数呼び出しを実行しているとき、アプリケーション名として libkafs を使用します。

(大文字の) セル名 (cell name) は、 krb5_appdefault 関数へのレルム (realm) として使用されます。

k_afs_cell_of_file() は、指定されたファイルのセルが返される cell で、 cell に入れられる文字は、わずか len 文字です。

k_pioctl() は、指定された引数で pioctl() システムコールを行います。この関数は、 lpioctl() と同等です。

k_setpag() は、新しい PAG を初期化します。

k_unlog() は、現在の PAG で破壊されたすべてのトークンを削除します。

戻り値

k_hasafs() は、AFS がカーネルに存在しているなら 1 を返し、そうでなければ 0 を返します。 krb_afslog() と krb_afslog_uid() は、成功すれば 0 を返し、失敗すれば Kerberos エラー番号を返します。 k_afs_cell_of_file(), k_pioctl(), k_setpag() と k_unlog() は、すべて、成功すれば基本的なシステムコールの値を返します。

環境変数

次の環境変数は、 kafs の操作モードに影響します:
AFS_SYSCALL
通常、 kafs は、AFS 自体によって使用される正しいシステムコールを見つけ出そうとします。それかそうすることをしないか、または不正にそれをするなら、利用者は、使用されるべきであるシステムコール番号か、またはシステムコール番号のリストにこの変数を設定することができます。

使用例

login からの次のコードは、ローカルセルとユーザのホームディレクトリのセルのための新しい PAG とトークンを取得します。

if (k_hasafs()) { 
 char cell[64]; 
 k_setpag(); 
 if(k_afs_cell_of_file(pwd->pw_dir, cell, sizeof(cell)) == 0) 
  krb_afslog(cell, NULL); 
 krb_afslog(NULL, NULL); 
}

エラー

これらの関数 ( k_hasafs() は、別として) のいずれかがカーネルに存在している AFS なしで呼び出されるなら、通常、プロセスは、(オペレーティングシステムによって) SIGSYS シグナルを受信します。

関連項目

krb5_appdefault(3), krb5.conf(5) Transarc Corporation, File Server/Cache Manager Interface, AFS-3 Programmer's Reference, 1991.

関連ファイル

libkafs は、次の位置の ThisCell andTheseCells を検索します: /usr/vice/etc, /etc/openafs, /var/db/openafs/etc, /usr/arla/etc, /etc/arla/etc/afs

バグ

AFS_SYSCALL は、AIX の下で効果はありません。
May 1, 2006 HEIMDAL