.\" by Yuichi SATO <ysato444@yahoo.co.jp>
.\"
.TH CHROOT 2 2010-09-20 "Linux" "Linux Programmer's Manual"
-.SH ̾Á°
-chroot \- ¥ë¡¼¥È¡¦¥Ç¥£¥ì¥¯¥È¥ê¤òÊѹ¹¤¹¤ë
-.SH ½ñ¼°
+.SH 名前
+chroot \- ルート・ディレクトリを変更する
+.SH 書式
.B #include <unistd.h>
.sp
.BI "int chroot(const char *" path );
.sp
.in -4n
-glibc ¸þ¤±¤Îµ¡Ç½¸¡ºº¥Þ¥¯¥í¤ÎÍ×·ï
+glibc 向けの機能検査マクロの要件
.RB ( feature_test_macros (7)
-»²¾È):
+参照):
.in
.sp
.BR chroot ():
.RS 4
.PD 0
.TP 4
-glibc 2.2.2 °Ê¹ß:
+glibc 2.2.2 以降:
.nf
_BSD_SOURCE ||
(_XOPEN_SOURCE\ >=\ 500 ||
!(_POSIX_C_SOURCE\ >=\ 200112L || _XOPEN_SOURCE\ >=\ 600)
.fi
.TP 4
-glibc 2.2.2 ¤è¤êÁ°: ¤Ê¤·
+glibc 2.2.2 より前: なし
.PD
.RE
.ad b
-.SH ÀâÌÀ
+.SH 説明
.BR chroot ()
-¤Ï¡¢¸Æ¤Ó½Ð¤·¸µ¥×¥í¥»¥¹¤Î¥ë¡¼¥È¡¦¥Ç¥£¥ì¥¯¥È¥ê¤ò
+は、呼び出し元プロセスのルート・ディレクトリを
.I path
-¤Ç»ØÄꤵ¤ì¤¿¥Ç¥£¥ì¥¯¥È¥ê¤ËÊѹ¹¤¹¤ë¡£
-¤³¤Î¥Ç¥£¥ì¥¯¥È¥ê°Ê²¼¤¬ \fI/\fP ¤«¤é»Ï¤Þ¤ë¥Ñ¥¹Ì¾¤È¤·¤Æ»È¤ï¤ì¤ë¡£
-¤³¤Î¥ë¡¼¥È¡¦¥Ç¥£¥ì¥¯¥È¥ê¤Ï¸Æ¤Ó½Ð¤·¸µ¤Î¥×¥í¥»¥¹¤ÎÁ´¤Æ¤Î»Ò¥×¥í¥»¥¹¤Ë¼õ¤±·Ñ¤¬¤ì¤ë¡£
+で指定されたディレクトリに変更する。
+このディレクトリ以下が \fI/\fP から始まるパス名として使われる。
+このルート・ディレクトリは呼び出し元のプロセスの全ての子プロセスに受け継がれる。
.PP
-Æø¢¥×¥í¥»¥¹ (Linux ¤Ç¤Ï¡¢
+特権プロセス (Linux では、
.B CAP_SYS_CHROOT
-¥±¡¼¥Ñ¥Ó¥ê¥Æ¥£¤ò»ý¤Ä¥×¥í¥»¥¹) ¤Î¤ß¤¬
+ケーパビリティを持つプロセス) のみが
.BR chroot ()
-¤ò¸Æ¤Ó½Ð¤¹¤³¤È¤¬¤Ç¤¤ë¡£
+を呼び出すことができる。
.PP
-¤³¤Î¥³¡¼¥ë¤Ï¥Ñ¥¹Ì¾²ò·è¤Î²áÄø¤Ç¹½À®Í×ÁǤòÊѹ¹¤¹¤ë¤Î¤ß¤Ç¡¢
-¤½¤Î¾¤Ë¤Ï²¿¤â¹Ô¤ï¤Ê¤¤¡£
+このコールはパス名解決の過程で構成要素を変更するのみで、
+その他には何も行わない。
.PP
-¤³¤Î¥³¡¼¥ë¤Ï¸½ºß¤Îºî¶È¥Ç¥£¥ì¥¯¥È¥ê
-(working directory) ¤òÊѹ¹¤·¤Ê¤¤¡£
-¤½¤Î¤¿¤á¡¢¤³¤Î¥³¡¼¥ë¤Î¸å¤Ë \(aq\fI.\fP\(aq ¤¬ \(aq\fI/\fP\(aq ¤ò
-º¬¤È¤¹¤ë¥Ä¥ê¡¼¤Î³°¤Ë¤Ê¤ë¾ì¹ç¤¬¤¢¤ë¡£
-Æäˡ¢¥¹¡¼¥Ñ¡¼¡¦¥æ¡¼¥¶¡¼¤Ï°Ê²¼¤Î¤è¤¦¤Ë¤¹¤ë¤³¤È¤Ç
-"chroot jail" ¤«¤éƨ¤²½Ð¤»¤Æ¤·¤Þ¤¦¡£
+このコールは現在の作業ディレクトリ
+(working directory) を変更しない。
+そのため、このコールの後に \(aq\fI.\fP\(aq が \(aq\fI/\fP\(aq を
+根とするツリーの外になる場合がある。
+特に、スーパー・ユーザーは以下のようにすることで
+"chroot jail" から逃げ出せてしまう。
.nf
mkdir foo; chroot foo; cd ..
.fi
-¤³¤Î¥³¡¼¥ë¤Ï¥ª¡¼¥×¥ó¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤ò¥¯¥í¡¼¥º¤·¤Ê¤¤¤Î¤Ç¡¢
-¤³¤Î¤è¤¦¤Ê¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤Ï chroot ¥Ä¥ê¡¼¤Î³°¤Ë¤¢¤ë
-¥Õ¥¡¥¤¥ë¤Ë¥¢¥¯¥»¥¹¤Ç¤¤ë¡£
-.SH ÊÖ¤êÃÍ
-À®¸ù¤¹¤ë¤È 0 ¤òÊÖ¤¹¡£
-¼ºÇÔ¤¹¤ë¤È \-1 ¤òÊÖ¤·¡¢
+このコールはオープンファイルディスクリプタをクローズしないので、
+このようなファイルディスクリプタは chroot ツリーの外にある
+ファイルにアクセスできる。
+.SH 返り値
+成功すると 0 を返す。
+失敗すると \-1 を返し、
.I errno
-¤ËŬÀÚ¤ÊÃͤòÀßÄꤹ¤ë¡£
-.SH ¥¨¥é¡¼
-¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Ë¤è¤Ã¤Æ¤Ï¾¤Î¥¨¥é¡¼¤¬ÊÖ¤µ¤ì¤ë»ö¤¬¤¢¤ë¡£
-°ìÈÌŪ¤Ê¥¨¥é¡¼¤ò°Ê²¼¤Ëµó¤²¤ë:
+に適切な値を設定する。
+.SH ã\82¨ã\83©ã\83¼
+ファイルシステムによっては他のエラーが返される事がある。
+一般的なエラーを以下に挙げる:
.TP
.B EACCES
-¥Ñ¥¹Ì¾¤ÎÅÓÃæ¤Î¤É¤³¤«¤Ë¸¡º÷µö²Ä (search permission) ¤¬¤Ê¤¤¡£
+パス名の途中のどこかに検索許可 (search permission) がない。
.RB ( path_resolution (7)
-¤â»²¾È¤¹¤ë¤³¤È¡£)
-.\" ¥Ñ¥¹Ì¾¤ÎºÇ¸å¤Î¹½À®Í×ÁǤˤ⸡º÷µö²Ä¤¬É¬ÍפǤ¢¤ë¡£
-.\" ¤ª¤½¤é¤¯¡¢¤½¤ì¤¬¥Ç¥£¥ì¥¯¥È¥ê¤Ç¤¢¤ë¤³¤È¤òÊݾڤ¹¤ë¤¿¤á¤Ê¤Î¤«?
+も参照すること。)
+.\" パス名の最後の構成要素にも検索許可が必要である。
+.\" おそらく、それがディレクトリであることを保証するためなのか?
.TP
.B EFAULT
.I path
-¤¬³ä¤êÅö¤Æ¤é¤ì¤¿¥¢¥É¥ì¥¹¶õ´Ö³°¤ò»Ø¤·¤Æ¤¤¤ë¡£
+が割り当てられたアドレス空間外を指している。
.TP
.B EIO
-I/O ¥¨¥é¡¼¤¬È¯À¸¤·¤¿¡£
+I/O エラーが発生した。
.TP
.B ELOOP
.I path
-¤ò²ò·è¤¹¤ëºÝ¤ËÁø¶ø¤·¤¿¥·¥ó¥Ü¥ê¥Ã¥¯¡¦¥ê¥ó¥¯¤¬Â¿²á¤®¤ë¡£
+を解決する際に遭遇したシンボリック・リンクが多過ぎる。
.TP
.B ENAMETOOLONG
.I path
-¤¬Ä¹²á¤®¤ë¡£
+が長過ぎる。
.TP
.B ENOENT
-¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤·¤Ê¤¤¡£
+ファイルが存在しない。
.TP
.B ENOMEM
-¥«¡¼¥Í¥ë¤Ë½½Ê¬¤Ê¥á¥â¥ê¤¬¤Ê¤¤¡£
+カーネルに十分なメモリがない。
.TP
.B ENOTDIR
.I path
-¤ÎÆâÍƤ¬¥Ç¥£¥ì¥¯¥È¥ê¤Ç¤Ï¤Ê¤¤¡£
+の内容がディレクトリではない。
.TP
.B EPERM
-¸Æ¤Ó½Ð¤·Â¦¤Ë½½Ê¬¤ÊÆø¢¤¬¤Ê¤¤¡£
-.SH ½àµò
-SVr4, 4.4BSD, SUSv2 (⤷¡¢SUSv2 ¤Ç¤Ï²áµî¤Î̾»Ä¤È¤µ¤ì¤Æ¤¤¤ë)¡£
-¤³¤Î´Ø¿ô¤Ï POSIX.1-2001 ¤Ë¤Ï¤Ê¤¤¡£
-.\" SVr4 ¤Ë¤Ï¾¤Ë EINTR, ENOLINK, EMULTIHOP ¥¨¥é¡¼¾õÂ֤ˤĤ¤¤Æ¤Îµ½Ò¤¬¤¢¤ë¡£
-.\" X/OPEN ¤Ë¤Ï EIO, ENOMEM, EFAULT ¥¨¥é¡¼¾õÂ֤ε½Ò¤Ï¤Ê¤¤¡£
-.SH Ãí°Õ
+呼び出し側に十分な特権がない。
+.SH 準拠
+SVr4, 4.4BSD, SUSv2 (但し、SUSv2 では過去の名残とされている)。
+この関数は POSIX.1-2001 にはない。
+.\" SVr4 には他に EINTR, ENOLINK, EMULTIHOP エラー状態についての記述がある。
+.\" X/OPEN には EIO, ENOMEM, EFAULT エラー状態の記述はない。
+.SH 注意
.BR fork (2)
-¤ÇºîÀ®¤µ¤ì¤¿»Ò¥×¥í¥»¥¹¤Ï¡¢
-¿Æ¥×¥í¥»¥¹¤Î¥ë¡¼¥È¡¦¥Ç¥£¥ì¥¯¥È¥ê¤ò·Ñ¾µ¤¹¤ë¡£
+で作成された子プロセスは、
+親プロセスのルート・ディレクトリを継承する。
.BR execve (2)
-¤Î¾ì¹ç¤â¡¢¥ë¡¼¥È¡¦¥Ç¥£¥ì¥¯¥È¥ê¤ÏÊѹ¹¤µ¤ì¤Ê¤¤¡£
+の場合も、ルート・ディレクトリは変更されない。
-FreeBSD ¤Ë¤Ï¤è¤ê¶¯ÎϤÊ
+FreeBSD にはより強力な
.BR jail ()
-¥·¥¹¥Æ¥à¥³¡¼¥ë¤¬¤¢¤ë¡£
+システムコールがある。
.\" FIXME . eventually say something about containers,
.\" virtual servers, etc.?
-.SH ´ØÏ¢¹àÌÜ
+.SH 関連項目
.BR chdir (2),
.BR path_resolution (7)