chroot サブルーチン

目的

有効ルート・ディレクトリーを変更します。

ライブラリー

標準 C ライブラリー (libc.a)

構文

#include <unistd.h>
int chroot (const char * Path)
char *Path;

説明

chroot サブルーチンは、 Path パラメーターで指定されたディレクトリーを有効ルート・ディレクトリーにします。 Path パラメーターがシンボリック・リンクを参照する場合、 chroot サブルーチンは、シンボリック・リンクが指すディレクトリーに有効ルート・ディレクトリーを設定します。 ネットワーク・ファイル・システム (NFS) がシステムにインストールされている場合、このパスは別のノードにまたがることができます。

有効ルート・ディレクトリーは、/(スラッシュ) で始まるファイルのパス名を検索する場合の開始点です。 現行ディレクトリーは、 chroot サブルーチンの影響を受けません。

有効ルート・ディレクトリーを変更するには、呼び出しプロセスに root ユーザー権限が必要です。 呼び出しプロセスには、新しい有効ルート・ディレクトリーへの検索アクセス権も必要です。

... 有効ルート・ディレクトリー内の (二重ピリオド) 項目は、有効ルート・ディレクトリー自体を意味するものと解釈されます。 したがって、このディレクトリーを使用して、有効ルート・ディレクトリーをルートとするサブツリーの外部にあるファイルにアクセスすることはできません。

パラメーター

項目 説明
パス 新しい有効ルート・ディレクトリーを指すポインター。

戻り値

正常終了時には値 0 が返されます。 そうでない場合は-1が返され、エラーを示すerrnoグローバル変数が設定される。

エラー・コード

以下の 1 つ以上が該当する場合、 chroot サブルーチンは失敗し、有効なルート・ディレクトリーは変更されません。

項目 説明
ENOENT 指定されたディレクトリーは存在しません。
EACCES 指定されたディレクトリーは、検索アクセスを拒否します。
EPERM プロセスには root ユーザー権限がありません。

chroot サブルーチンは、他の理由で失敗することがあります。 追加エラーのリストについては、「 Appendix A. Base Operating System Error Codes for Services 」を参照してください。

NFS がシステムにインストールされている場合、以下の条件が満たされていると、 chroot サブルーチンも失敗する可能性があります。

項目 説明
ETIMEDOUT 接続がタイムアウトになりました。