Chroot
chrootとは、UNIXオペレーティングシステム (OS) において、現在のプロセスとその子プロセス群に対してルートディレクトリを変更する操作である。ルートディレクトリを別のディレクトリに変更されたプロセスは、その範囲外のファイルにはアクセスできなくなるため、この操作をchroot監獄や模擬ルートなどとも呼ぶ。"chroot" は chroot(2) システムコールおよび chroot(8) コマンドを意味する。
chroot システムコールは、Unix Version 7 (1979) に新機能として加えられ、1982年3月18日(4.2BSDリリースの17ヶ月前)、ビル・ジョイがインストールおよびビルドシステムのテスト用にBSDに導入したのが起源である。
プログラムは一般に起動されたときに、一時ファイル、設定ファイル、スペシャルファイル、共有ライブラリなどが特定の位置(ディレクトリ)にあることを期待している。chroot されたプログラムがうまく起動するには、chroot したディレクトリにそれらのファイルが正しく配置されていなければならない。このため chroot を汎用のサンドボックス機構として使うのは難しい。
chroot を実行できるのはスーパーユーザーだけである。これは、精巧に作られたchroot監獄(例えば、ニセの /etc/passwd ファイルが置いてある)の中にユーザーが setuid プログラムを置けないようにするためである。またこのため、特権のないサンドボックス機構(例えば、一般ユーザーがインターネットからダウンロードした信頼できないアプリケーションをテストしてみるなど)としてchrootを使うこともできない。
chroot 機構は特権ユーザーによる意図的な改変に対する防御となることを意図していない。chroot されたスーパーユーザーのプロセスは特権を制限されない。