Submitted by: Akira Ikeuchi <a_ikeuchi@mic.mitsumi.co.jp> Reviewed by: Watanabe Kazuhiro <CQG00620@nifty.ne.jp>
134 lines
3.2 KiB
Groff
134 lines
3.2 KiB
Groff
.\"
|
|
.\"----------------------------------------------------------------------------
|
|
.\""THE BEER-WARE LICENSE" (Revision 42):
|
|
.\"<phk@FreeBSD.ORG> wrote this file. As long as you retain this notice you
|
|
.\"can do whatever you want with this stuff. If we meet some day, and you think
|
|
.\"this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
|
|
.\"----------------------------------------------------------------------------
|
|
.\"%FreeBSD: src/lib/libc/sys/jail.2,v 1.27 2004/06/21 18:57:32 mpp Exp %
|
|
.\"
|
|
.\" $FreeBSD$
|
|
.Dd April 8, 2003
|
|
.Dt JAIL 2
|
|
.Os
|
|
.Sh 名称
|
|
.Nm jail , jail_attach
|
|
.Nd 現在のプロセスとその将来の子孫を閉じ込める
|
|
.Sh ライブラリ
|
|
.Lb libc
|
|
.Sh 書式
|
|
.In sys/param.h
|
|
.In sys/jail.h
|
|
.Ft int
|
|
.Fn jail "struct jail *jail"
|
|
.Ft int
|
|
.Fn jail_attach "int jid"
|
|
.Sh 解説
|
|
.Fn jail
|
|
システムコールは牢屋をつくり、現在のプロセスをその中に閉じ込めます。
|
|
.Pp
|
|
引数は牢屋を記述する構造体へのポインタです。
|
|
.Bd -literal -offset indent
|
|
struct jail {
|
|
u_int32_t version;
|
|
char *path;
|
|
char *hostname;
|
|
u_int32_t ip_number;
|
|
};
|
|
.Ed
|
|
.Pp
|
|
.Dq Li version
|
|
には使用する API のバージョンを定義します。
|
|
今のところ 0 に設定します。
|
|
.Pp
|
|
.Dq Li path
|
|
ポインタには牢屋のルートになるディレクトリを設定します。
|
|
.Pp
|
|
.Dq Li hostname
|
|
ポインタには牢屋のホスト名を設定します。
|
|
これは牢屋の中から変更できます。
|
|
.Pp
|
|
.Dq Li ip_number
|
|
は牢屋に割り当てる IP 番号を設定します。
|
|
.Pp
|
|
.Fn jail_attach
|
|
システムコールは、
|
|
.Fa jid
|
|
によって識別される既存の jail を現在のプロセスにアタッチします。
|
|
.Sh 戻り値
|
|
成功の場合には、
|
|
.Fn jail
|
|
は jail 識別子 (JID) と呼ばれる負ではない整数を返します。
|
|
失敗の場合には \-1 を返し、そのエラーを示すために
|
|
.Va errno
|
|
を設定します。
|
|
.Pp
|
|
.Rv -std jail_attach
|
|
.Sh 牢屋?
|
|
プロセスは一度牢屋に入れられると、それ自身とその子孫は牢屋から
|
|
逃れることはできません。
|
|
.Pp
|
|
牢屋の中では
|
|
.Dq スーパユーザ
|
|
の概念はとても弱まっています。
|
|
一般に全体が牢屋の中にあるわけではないものを牢屋の中から台無しにすることは
|
|
できないと考えられます。
|
|
例えば
|
|
.Dq Li path
|
|
の下のディレクトリツリーは
|
|
.Dq Li "rm -rf /*"
|
|
も含めて、root が普通にできるように操作できますが、
|
|
デバイス型特殊ノードは共有されたリソース (カーネルの中のデバイスドライバ) を
|
|
参照するので、新しく作ることはできません。
|
|
プロセスにとっての実際の
|
|
.Dq セキュアレベル
|
|
は、グローバルな
|
|
.Dq セキュアレベル
|
|
と、jail 毎の
|
|
.Dq セキュアレベル
|
|
(存在する場合) の大きい方です。
|
|
.Pp
|
|
IP 活動はすべて指定された IP 番号に制限されます。
|
|
指定された IP 番号はネットワークインタフェースのうちの 1 つの別名で
|
|
あるべきです。
|
|
.Pp
|
|
.Dq Li /proc/<pid>/status
|
|
を調べることで閉じ込められたプロセスを識別することができます。
|
|
行末のフィールドが、閉じ込められていないプロセスではハイフン 1 つ、
|
|
閉じ込められたプロセスでは現在牢屋に設定されているホスト名になります。
|
|
.Sh エラー
|
|
.Fn jail
|
|
システムコールは次の場合に失敗します:
|
|
.Bl -tag -width Er
|
|
.It Bq Er EINVAL
|
|
引数のバージョン番号が正しくありません。
|
|
.El
|
|
.Pp
|
|
さらに
|
|
.Fn jail
|
|
は内部で
|
|
.Xr chroot 2
|
|
を呼ぶので、全く同じ理由で失敗する可能性があります。
|
|
詳しくは
|
|
.Xr chroot 2
|
|
のマニュアルページを参照して下さい。
|
|
.Sh 関連項目
|
|
.Xr chdir 2 ,
|
|
.Xr chroot 2
|
|
.Sh 歴史
|
|
.Fn jail
|
|
システムコールは
|
|
.Fx 4.0
|
|
で登場しました。
|
|
.Fn jail_attach
|
|
システムコールは
|
|
.Fx 5.1
|
|
で登場しました。
|
|
.Sh 作者
|
|
jail の機能は
|
|
.An Poul-Henning Kamp
|
|
によって R&D Associates
|
|
.Dq Li http://www.rndassociates.com/
|
|
のために書かれ、
|
|
.Fx
|
|
に寄贈されました。
|