JAIL

Section: System Calls (2)
索引 jman

BSD mandoc
 

索引

名称

jail , jail_attach - 現在のプロセスとその将来の子孫を閉じ込める  

索引

ライブラリ

Lb libc  

索引

書式

In sys/param.h In sys/jail.h Ft int Fn jail struct jail *jail Ft int Fn jail_attach int jid  

索引

解説

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

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

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

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

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

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

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

Fn jail_attach システムコールは、 Fa jid によって識別される既存の jail を現在のプロセスにアタッチします。  

索引

戻り値

成功の場合には、 Fn jail は jail 識別子 (JID) と呼ばれる負ではない整数を返します。 失敗の場合には -1 を返し、そのエラーを示すために errno を設定します。

Rv -std jail_attach  

索引

牢屋?

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

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

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

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

索引

エラー

Fn jail システムコールは次の場合に失敗します:

Bq Er EINVAL
引数のバージョン番号が正しくありません。

さらに Fn jail は内部で chroot(2) を呼ぶので、全く同じ理由で失敗する可能性があります。 詳しくは chroot(2) のマニュアルページを参照して下さい。  

索引

関連項目

chdir(2), chroot(2)  

索引

歴史

Fn jail システムコールは Fx 4.0 で登場しました。 Fn jail_attach システムコールは Fx 5.1 で登場しました。  

索引

作者

jail の機能は An Poul-Henning Kamp によって R&D Associates ``http://www.rndassociates.com/ '' のために書かれ、 Fx に寄贈されました。


 

索引

Index

名称
ライブラリ
書式
解説
戻り値
牢屋?
エラー
関連項目
歴史
作者

jman



Time: 07:06:27 GMT, January 12, 2009