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