パスルックアップのルートをセットする
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 は失敗すると偽を返し、エラーの理由を $! にセットします。