jail(2) FreeBSD 一般コマンドマニュアル

jail

前のページ 上に戻る 次のページ

jail




書式

     #include <sys/types.h>
     #include <sys/jail.h>

     int
     jail(struct jail *jail);


解説

     jail システムコールは牢屋をつくり、現在のプロセスをその中に閉じ込めます。

     引数は牢屋を記述する構造体へのポインタです。

           struct jail {
                   u_int32_t       version;
                   char            *path;
                   char            *hostname;
                   u_int32_t       ip_number;
           };

     ``version'' には使用する API のバージョンを定義します。今のところ 0 に設
     定します。

     ``path'' ポインタには牢屋のルートになるディレクトリを設定します。

     ``hostname'' ポインタには牢屋のホスト名を設定します。これは牢屋の中から変
     更できます。

     ``ip_number'' は牢屋に割り当てる IP 番号を設定します。


牢屋 ?

     プロセスは一度牢屋に入れられると、それ自身とその子孫は牢屋から逃れること
     はできません。既存の牢屋にプロセスを追加することはできません。

     牢屋の中では "スーパユーザ" の概念はとても弱まっています。一般に全体が牢
     屋の中にあるわけではないものを牢屋の中から台無しにすることはできないと考
     えられます。例えば ``path'' の下のディレクトリツリーは ``rm -rf /*'' も含
     めて、ルートが普通にできるように操作できますが、デバイス型特殊ノードは共
     有されたリソース (カーネルの中のデバイスドライバ) を参照するので、新しく
     作ることはできません。

     IP 活動はすべて指定された IP 番号に制限されます。指定された IP 番号はネッ
     トワークインタフェースのうちの 1 つの別名であるべきです。

     ``/proc/<pid>/status'' を調べることで閉じ込められたプロセスを識別すること
     ができます。行末のフィールドが、閉じ込められていないプロセスではハイフン
     1 つ、閉じ込められたプロセスでは現在牢屋に設定されているホスト名になりま
     す。


エラー

     jail() は次の場合に失敗します。

     た。

FreeBSD 4.4                     April 28, 1999                     FreeBSD 4.4

ABELNET VPSサービス