chroot

パスルックアップのルートをセットする

構文

解説

chroot は、指定のディレクトリをルートディレクトリにセットします。 これによって、そのプロセスおよびその子プロセスでは、/ が指定のディレクトリを指すようになります。 ただし、カレントディレクトリは変更されません。 セキュリティーの理由から、chroot はスーパーユーザーしか呼び出すことができません。 FILENAME が省略されたら、$_ が適用されます。

セキュリティー上の理由から、必ず chroot の直後に chdir("/") (ルートディレクトリに chdir する) してください。 そうしないと、カレントディレクトリが新たなルートの外にいることになってしまいます。

次の例は、/home/futomi を新たなルートにセットしてから /chdir しています。 そして、/home/futomi の直下に存在する sample.txt にアクセスしています。 その際に、/sample.txt でアクセスしている点に注目してください。

chroot('/home/futomi') or die "chroot に失敗しました: $!\n";
chdir('/');
my $size = -s '/sample.txt';
print $size, "\n";

上記サンプルコードのように、chroot は失敗すると偽を返し、エラーの理由を $! にセットします。