日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.4-RELEASE-K, 13.0-RELEASE-K から 13.3-RELEASE-K, 14.0-RELEASE-K から 14.1-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
UCRED(9) FreeBSD カーネル開発者マニュアル UCRED(9) 名称 ucred, crget, crhold, crfree, crshared, crcopy, crdup, cru2x cred_update_thread -- ユーザ資格証明に関連する関数 書式 #include <sys/param.h> #include <sys/ucred.h> struct ucred * crget(void); struct ucred * crhold(struct ucred *cr); void crfree(struct ucred *cr); int crshared(struct ucred *cr); void crcopy(struct ucred *dest, struct ucred *src); struct ucred * crcopysafe(struct proc *p, struct ucred *cr); struct ucred * crdup(struct ucred *cr); void crsetgroups(struct ucred *cr, int ngrp, gid_t *groups); void cru2x(struct ucred *cr, struct xucred *xcr); 解説 ucred 関数ファミリは、カーネル中でユーザ資格証明構造体 (struct ucred) を 管理するためにに使用されます。 crget() 関数は、新しい構造体のためにメモリを割り付けて、参照カウントを 1 に設定し、そのロックを初期化します。 crhold() 関数は、資格証明で参照カウントを増加させます。 crfree() 関数は、資格証明で参照カウントを減少させます。カウントが 0 にな るなら、構造体のための記憶領域は、解放されます。 crshared() 関数は、資格証明が共有されているなら、真 (true) を返します。参 照カウントが 1 以上であるなら、資格証明は、共有されていると考えられます。 crcopy() 関数は、ソース (テンプレート) の資格証明の内容を宛先テンプレート にコピーします。宛先内の uidinfo 構造体は、uihold(9) を呼び出すことによっ て参照されます。 crcopysafe() 関数は、プロセス p に関連している現在の資格証明を新たに割り 付けられた資格証明 cr にコピーします。p でロックされたプロセスは、保持さ れなければならなくて、必要に応じて cr のグループ記憶域空間を割り付けを落 され、再獲得されます。 crdup() 関数は、新しい構造体のためのメモリを割り付け、それに cr の内容を コピーします。実際のコピーは、crcopy() によって実行されます。 crsetgroups() 関数は、cr_groups と cr_ngroups 変数を設定し、必要に応じて 空間を割り付けます。また、グループリストを現在のグループの最大数に切り詰 めます。他のメカニズムは、cr_groups[0] への代入を通してプライマリグループ を更新することを除いて、cr_groups 配列を変更するために使用するべきではあ りません。 cru2x() 関数は、ucred 構造体を xucred 構造体に変換します。すなわち、cr か ら xcr にデータをコピーします。それは、後者 (例えば、cr_uidinfo) に存在し ない前者のフィールドを無視して、前者 (例えば、cr_version) に存在しない後 者のフィールドを適切に設定します。 戻り値 crget(), crhold(), crdup() と crcopysafe() は、すべて、ucred 構造体へのポ インタを返します。 crshared() は、資格証明に 1 以上の参照カウントがあるなら、0 を返します。 そうでなければ、1 が返されます。 使用上の注 FreeBSD 5.0 現在、ucred 構造体は、拡張フィールドを含んでいます。これは、 未使用で書き込み可能な資格証明構造体を作成するために常に正しいプロトコル に従わなければならないことを意味します: 新しい資格証明は、常に crget(), crcopy() と crcopysafe(). を使用して既存の資格証明から派生されなければな りません。 よくある例では、アクセス制御決定に必要な資格証明は、読み込み専用方法で使 用されます。このような状況において、スレッド資格証明 td_ucred は、安全に アクセスするためのロックが要求されず、別のスレッドからプロセス資格証明を 変更するマルチスレッド化されたアプリケーションに直面してさえ呼び出しの継 続期間のために安定した状態を保つように使用されるべきです。 プロセスの資格証明の更新の間に、プロセスロックは、競合条件を防ぐために、 チェックと更新にわたって保持されなければなりません。プロセスの資格証明 td->td_proc->p_ucred は、チェックと更新の両方で使用されなければなりませ ん。プロセスの資格証明がシステムコールの間に更新され、スレッドの資格証明 に対するチェックが後で同じシステムコールの間に行われるなら、スレッドの資 格証明は、また、古い値の使用を防ぐためにプロセスの資格証明からリフレッ シュされなければなりません。このシナリオを避けるために、プロセスの資格証 明を更新するシステムコールが他の承認関数を避けるように設計されることは、 お勧めです。 一時的に高い特権がスレッドに必要であるなら、スレッドの資格証明は、活動の 存続期間のために、またはシステムコールの残りのために置き換えられることが できます。しかしながら、スレッドの資格証明がしばしば共有されるとき、 crget() と crcopy() の使用を通して書き込み可能な資格証明で行われる変更を 確実にするために、適切な注意が払われるべきです。 スレッドまたはプロセスのための承認のチェックが別のスレッドかプロセスでの 操作を実行するとき、警告が行われるべきです。一時的な上昇の結果として、 ターゲットスレッドの資格証明は、アクセス制御決定でターゲット資格証明とし て決して使用されるべきではありません: スレッド td->td_proc->p_ucred に関 連しているプロセス資格証明が代わりに使用されるべきです。例えば、 p_candebug(9) は、アクセス制御目的のためにターゲットスレッドではなく、 ターゲットプロセスを受け付けます。 関連項目 uihold(9) 作者 このマニュアルページは、Chad David <davidc@acns.ab.ca> によって書かれまし た。 FreeBSD 11.4 January 23, 2019 FreeBSD 11.4