総合手引 | セクション 2 | English | Deutsch | オプション |
#include <unistd.h>
ディレクトリがルートディレクトリになるためには、 プロセスにそのディレクトリへの実行 (検索) 許可がなければなりません。
chroot() はプロセスの現在のディレクトリに影響しないことに注意する必要があります。
この関数を呼び出せるのはスーパユーザのみです。
ディレクトリを参照するオープンファイル記述子が存在する場合、 chroot() 呼び出しは sysctl 変数 ‘kern.chroot_allow_open_directories’ の設定に従い、次のように失敗します:
‘kern.chroot_allow_open_directories’ が 0 に設定されている場合、ディレクトリがオープンされていれば chroot() は常に EPERM で失敗します。
‘kern.chroot_allow_open_directories’ が 1 に設定されている場合 (デフォルト)、 ディレクトリがオープンされていて、そのプロセスが chroot() システムコールの影響を受ける時、 chroot() は EPERM で失敗します。
‘kern.chroot_allow_open_directories’ が他の値の場合、オープンディレクトリのチェックはされません。
正常に完了すると、値 0 が返されます。 そうでない場合は、値 -1 が返され、エラーを示すために errno が設定されます。
[ENOTDIR] | |
パスの構成要素中にディレクトリ以外のものが含まれています。 | |
[EPERM] | |
実効ユーザ ID がスーパユーザではありません。 またはディレクトリが 1 つ以上のファイル記述子によってオープンされています。 | |
[ENAMETOOLONG] | |
パス名の構成要素が 255 文字を越えているか、 またはパス名全体が 1023 文字を越えています。 | |
[ENOENT] | |
指定のディレクトリが存在しません。 | |
[EACCES] | |
指定されたパスには、検索が許可されていないディレクトリが含まれています。 | |
[ELOOP] | |
パス名を変換するときに検出されたシンボリックリンクが多すぎます。 | |
[EFAULT] | |
dirname 引数が、プロセスに割り当てられたアドレス空間の範囲外を指しています。 | |
[EIO] | ファイルシステムに読み書きしている間に入出力エラーが発生しました。 |
CHROOT (2) | June 4, 1993 |
総合手引 | セクション 2 | English | Deutsch | オプション |
このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.
“ | Unix is a junk OS designed by a committee of PhDs. | ” |
— Dave Cutler |