Manpages

名 前

chroot − ル ー ト デ ィ レ ク ト リ を 変 更 す る

書 式

#include <unistd.h>

int chroot(const char *path);

glibc 向 け の 機 能 検 査 マ ク ロ の 要 件 (feature_test_macros(7) 参 照 ):

chroot():

glibc 2.2.2 以 降 :

_BSD_SOURCE ||
(_XOPEN_SOURCE >= 500 ||
_XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED) &&
!(_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600)

glibc 2.2.2 よ り 前 : な し

説 明

chroot() は 、 呼 び 出 し 元 プ ロ セ ス の ル ー ト デ ィ レ ク ト リ を path で 指 定 さ れ た デ ィ レ ク ト リ に 変 更 す る 。 こ の デ ィ レ ク ト リ 以 下 が / か ら 始 ま る パ ス 名 と し て 使 わ れ る 。 こ の ル ー ト デ ィ レ ク ト リ は 呼 び 出 し 元 の プ ロ セ ス の 全 て の 子 プ ロ セ ス に 受 け 継 が れ る 。 特 権 プ ロ セ ス (Linux で は 、 CAP_SYS_CHROOT ケ ー パ ビ リ テ ィ を 持 つ プ ロ セ ス ) の み が chroot() を 呼 び 出 す こ と が で き る 。 こ の コ ー ル は パ ス 名 解 決 の 過 程 で 構 成 要 素 を 変 更 す る の み で 、 そ の 他 に は 何 も 行 わ な い 。 こ の コ ー ル は 現 在 の 作 業 デ ィ レ ク ト リ (working directory) を 変 更 し な い 。 そ の た め 、 こ の コ ー ル の 後 に '.' が '/' を 根 と す る ツ リ ー の 外 に な る 場 合 が あ る 。 特 に 、 ス ー パ ー ユ ー ザ ー は 以 下 の よ う に す る こ と で "chroot jail" か ら 逃 げ 出 せ て し ま う 。

mkdir foo; chroot foo; cd .. こ の コ ー ル は オ ー プ ン フ ァ イ ル デ ィ ス ク リ プ タ ー を ク ロ ー ズ し な い の で 、 こ の よ う な フ ァ イ ル デ ィ ス ク リ プ タ ー は chroot ツ リ ー の 外 に あ る フ ァ イ ル に ア ク セ ス で き る 。

返 り 値

成 功 し た 場 合 は 0 が 返 さ れ る 。 エ ラ ー の 場 合 は −1 が 返 さ れ 、 errno が 適 切 に 設 定 さ れ る 。

エ ラ ー

フ ァ イ ル シ ス テ ム に よ っ て は 他 の エ ラ ー が 返 さ れ る 事 が あ る 。 一 般 的 な エ ラ ー を 以 下 に 挙 げ る :

EACCES パ ス 名 の 構 成 要 素 に 検 索 許 可 が な い

(path_resolution(7) も 見 よ )。

EFAULT

path が ア ク セ ス で き る ア ド レ ス 空 間 外 を 指 し て い る 。

EIO

I/O エ ラ ー が 発 生 し た 。

ELOOP

path を 解 決 す る 際 に 遭 遇 し た シ ン ボ リ ッ ク リ ン ク が 多 過 ぎ る 。

ENAMETOOLONG

path が 長 過 ぎ る 。

ENOENT フ ァ イ ル が 存 在 し な い 。

ENOMEM カ ー ネ ル に 十 分 な メ モ リ ー が な い 。

ENOTDIR

path の 構 成 要 素 が デ ィ レ ク ト リ で は な い 。

EPERM 呼 び 出 し 側 に 十 分 な 特 権 が な い 。

準 拠

SVr4, 4.4BSD, SUSv2 (但 し 、 SUSv2 で は 過 去 の 名 残 と さ れ て い る )。 こ の 関 数 は POSIX.1−2001 に は な い 。

注 意

fork(2) で 作 成 さ れ た 子 プ ロ セ ス は 、 親 プ ロ セ ス の ル ー ト デ ィ レ ク ト リ を 継 承 す る 。 execve(2) の 場 合 も 、 ル ー ト デ ィ レ ク ト リ は 変 更 さ れ な い 。

FreeBSD に は よ り 強 力 な jail() シ ス テ ム コ ー ル が あ る 。

関 連 項 目

chdir(2), path_resolution(7)

こ の 文 書 に つ い て

こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。