日本語 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
JAIL(2) FreeBSD システムコールマニュアル JAIL(2) 名称 jail, jail_get, jail_set, jail_remove, jail_attach -- システム jail (刑務 所) を作成して、管理する ライブラリ 標準 C ライブラリ (libc, -lc) 書式 #include <sys/param.h> #include <sys/jail.h> int jail(struct jail *jail); int jail_attach(int jid); int jail_remove(int jid); #include <sys/uio.h> int jail_get(struct iovec *iov, u_int niov, int flags); int jail_set(struct iovec *iov, u_int niov, int flags); 解説 jail() システムコールは、jail (刑務所) を設定して、現在のプロセスをその中 にに閉じ込めます。 引数は、jail を記述する構造体へのポインタです: struct jail { uint32_t version; char *path; char *hostname; char *jailname; unsigned int ip4s; unsigned int ip6s; struct in_addr *ip4; struct in6_addr *ip6; }; ``version'' は、使用している API のバージョンを定義します。 JAIL_API_VERSION は、現在のバージョンに対して定義されています。 ``path'' ポインタは、jail のルートとなるディレクトリに設定されるべきで す。 ``hostname'' ポインタを jail のホスト名に設定することができます。これを jail の内部から変更することができます。 ``jailname'' ポインタは、例えば、管理目的のために jail に割り当てることが できるオプションの名前です。 ``ip4s'' と ``ip6s'' は、それらのそれぞれのポインタを通して渡される IPv4 と IPv6 アドレスの数値を与えます。 jail に割り当てられる IPv4 と IPv6 アドレスの配列に ``ip4'' と ``ip6'' ポ インタを設定することができるか、または何もなければ、NULL に設定することが できます。IPv4 アドレスは、ネットワークバイト順でなければなりません。 これは、パラメータ path, host.hostname, name, ip4.addr と ip6.addr があ り、JAIL_ATTACH フラグがある jail_set() システムコール (下記参照) と同等 で、それらを支持して推奨されません。 jail_set() システムコールは、新しい jail を作成するか、または既存のものを 変更して、オプションで現在のプロセスをそれに閉じ込めます。jail パラメータ は、niov 要素を含んでいる配列 iov の名前-値の組の配列として渡されます。パ ラメータ名は、ヌル文字で終了する文字列であり、値は、文字列、整数、または 他の任意のデータであるかもしれません。いくつかのパラメータは、ブール値で あり、値を持ちませんが (それらの長さは、0 である)、例えば persist または nopersist のような ``no'' 接頭辞のあるなしにかかわらず名前単独で設定され ます。設定されないパラメータは、一般的に現在の環境に基づいてデフォルト値 が与えられます。 jail には、1 組のコアパラメータがあり、モジュールは、それら自身の jail パ ラメータを追加することができます。利用可能なパラメータの現在のセットとそ れらの形式を、security.jail.param sysctl MIB エントリを通して検索すること ができます。注目すべきパラメータは、作成されるか、または変更される jail を識別する jid と name と同様に、上記の jail() の説明で述べたものを含んで います。コア jail パラメータの詳しい情報については、jail(8) を参照してく ださい。 flags 引数は、次のフラグの 1 つ以上から成ります: JAIL_CREATE 新しい jail を作成します。jid または name パラメータが存在してい るなら、それらは、既存の jail を参照してはいけません。 JAIL_UPDATE 既存の jail を変更します。jid または name パラメータの 1 つが存在 していなければならなくて、既存の jail を参照しなければなりませ ん。JAIL_CREATE と JAIL_UPDATE の両方が設定されているなら、jail は、まだ存在していないなら作成され、存在しているなら、変更されま す。 JAIL_ATTACH jail を作成するか、または変更することに加えて、jail_attach() シス テムコールのように現在のプロセスをそれにアタッチします。 JAIL_DYING 削除されている途中である jail の設定ができます。 jail_get() システムコールは、iov と niov 引数の jail_set() として同じ名 前-値リストを使用して、jail パラメータを検索します。リスト中に jid または name のパラメータを含むことによって、それらのいずれかによって、読み込みの ための jail を指定することができます。 それらが含まれていますが、検索キーとなることを目的としていなら、それら は、(それぞれ、0 と空文字列に) クリアされるべきです。すべての jail のリス トを検索するために特別のパラメータ lastjid を使用することができます。それ は、上記の jid があり、渡された値に近い jail を取って来ます。0 の lastjid を渡すことによって、最初の jail (通常、常に jid 1 ではない) を見つけるこ とができます。 flags 引数は、1 つ以上の次のフラグから成ります: JAIL_DYING 削除されている途中である jail を取得できます。 jail_attach() システムコールは、現在のプロセスを jid によって識別される既 存の jail にアタッチします。 jail_remove() システムコールは、jid によって識別された jail を削除しま す。それは、jail に属しているすべてのプロセスを kill して、その jail のす べての子供を削除します。 戻り値 成功すれば、jail(), jail_set() と jail_get() は、jail 識別子 (JID) と呼ば れる負でない整数を返します。それらは、失敗すれば、-1 を返し、errno にエ ラーを示す値を設定します。 関数 jail_attach() および jail_remove() は、処理が成功すると値 0 を返しま す。そうでない場合、値 -1 が返され、グローバル変数 errno にエラーを示す値 が設定されます。 エラー jail() システムコールは、次の場合に失敗します: [EPERM] このプロセスは、スーパユーザでないためか、または jail の children.max の制限を超えているからのいずれかのため に、jail を作成できません、 [EFAULT] jail が、プロセスの割り付けられたアドレス空間の外のア ドレスを指している。 [EINVAL] 引数のバージョン番号が、正しくない。 [EAGAIN] 空いている JID を見つけることができませんでした。 jail_set() システムコールは、次の場合に失敗します: [EPERM] このプロセスは、スーパユーザでないためか、または jail の children.max の制限を超えているからのいずれかのため に、jail を作成できません、 [EPERM] jail パラメータが、現在の環境でなく、制限されていない 値に設定されている。 [EFAULT] iov またはその中に含まれたアドレスの 1 つが、プロセス に割り付けられたアドレス空間の外のアドレスを指してい る。 [ENOENT] jid または name パラメータによって参照された jail が存 在しません、そして、JAIL_CREATE フラグが設定されていま せん。 [ENOENT] jid によって参照される jail が、プロセスが異なった jail にあるので、プロセスによってアクセス可能ではあり ません。 [EEXIST] jid または name パラメータによって参照された jail が存 在し、そして、JAIL_UPDATE フラグが設定されていません。 [EINVAL] 供給されたパラメータが間違ったサイズです。 [EINVAL] 供給されたパラメータが範囲外です。 [EINVAL] 供給された文字列パラメータがヌル文字で終了していませ ん。 [EINVAL] 供給されたパラメータ名が知られているパラメータにマッチ していません。 [EINVAL] JAIL_CREATE または JAIL_UPDATE フラグの 1 つが設定され ていません。 [ENAMETOOLONG] 供給された文字列パラメータが許されでいるより長い。 [EAGAIN] jail ID が残っていません。 jail_get() システムコールは、次の場合に失敗します: [EFAULT] iov またはその中に含まれたアドレスの 1 つが、プロセス に割り付けられたアドレス空間の外のアドレスを指してい る。 [ENOENT] jid または name パラメータによって参照された jail が存 在しません。 [ENOENT] jid によって参照される jail が、プロセスが異なった jail にあるので、プロセスによってアクセス可能ではあり ません。 [ENOENT] lastjid パラメータが最も大きな現在の jail ID より大き い。 [EINVAL] 供給されたパラメータが間違ったサイズです。 [EINVAL] 供給されたパラメータ名が知られているパラメータにマッチ していません。 jail_attach() と jail_remove() システムコールは、次の場合に失敗します: [EPERM] スーパユーザ以外のユーザが、jail にアタッチするか、ま たは削除しようとしました。 [EINVAL] jid によって指定された jail が存在していません。 さらに、jail(), jail_set() と jail_attach() は、内部的に chroot(2) を呼び 出すので、すべて同じ理由で失敗するかもしれません。詳細については、 chroot(2) マニュアルページを調べてください。 関連項目 chdir(2), chroot(2), jail(8) 歴史 jail() システムコールは、FreeBSD 4.0 で登場しました。jail_attach() システ ムコールは、FreeBSD 5.1 で登場しました。jail_set(), jail_get() と jail_remove() システムコールは、FreeBSD 8.0 で登場しました。 作者 jail の機能は、それを FreeBSD に寄贈した Poul-Henning Kamp によって R&D Associates のために書かれました。 James Gritton は、拡張可能な jail パラメータと階層的な jail を追加しまし た。 FreeBSD 11.4 February 8, 2012 FreeBSD 11.4