CHROOT
Section: System Calls (2)
索引
jman
BSD mandoc
索引
名称
chroot
- ルートディレクトリを変更する
索引
ライブラリ
Lb libc
索引
書式
In unistd.h
Ft int
Fn chroot const char *dirname
索引
解説
Fa dirname
引数は、ASCII のヌル文字で終了するディレクトリのパス名のアドレスです。
Fn chroot
システムコールは、
Fa dirname
をルートディレクトリ、すなわち、
`/'
で開始するパス名のパス検索の
開始点にします。
ディレクトリがルートディレクトリになるためには、
プロセスにそのディレクトリへの実行 (検索) 許可がなければなりません。
Fn chroot
はプロセスの現在のディレクトリに影響しないことに注意する必要があります。
この関数を呼び出せるのはスーパユーザのみです。
ディレクトリを参照するオープンファイル記述子が存在する場合、
Fn chroot
呼び出しは sysctl 変数
`kern.chroot_allow_open_directories'
の設定に従い、次のように失敗します:
`kern.chroot_allow_open_directories'
が 0 に設定されている場合、ディレクトリがオープンされていれば
Fn chroot
は常に
Er EPERM
で失敗します。
`kern.chroot_allow_open_directories'
が 1 に設定されている場合 (デフォルト)、
ディレクトリがオープンされていて、そのプロセスが
Fn chroot
システムコールの影響を受ける時、
Fn chroot
は
Er EPERM
で失敗します。
`kern.chroot_allow_open_directories'
が他の値の場合、オープンディレクトリのチェックはされません。
正常に完了すると、値 0 が返されます。
そうでない場合は、値 -1 が返され、エラーを示すために
errno
が設定されます。
索引
エラー
Fn chroot
システムコールは、次の場合処理に失敗し、ルートディレクトリは変更されません:
- Bq Er ENOTDIR
-
パスの構成要素中にディレクトリ以外のものが含まれています。
- Bq Er EPERM
-
実効ユーザ ID がスーパユーザではありません。
またはディレクトリが 1 つ以上のファイル記述子によってオープンされています。
- Bq Er ENAMETOOLONG
-
パス名の構成要素が 255 文字を越えているか、
またはパス名全体が 1023 文字を越えています。
- Bq Er ENOENT
-
指定のディレクトリが存在しません。
- Bq Er EACCES
-
指定されたパスには、検索が許可されていないディレクトリが含まれています。
- Bq Er ELOOP
-
パス名を変換するときに検出されたシンボリックリンクが多すぎます。
- Bq Er EFAULT
-
Fa dirname
引数が、プロセスに割り当てられたアドレス空間の範囲外を指しています。
- Bq Er EIO
-
ファイルシステムに読み書きしている間に入出力エラーが発生しました。
索引
関連項目
chdir(2),
jail(2)
索引
歴史
Fn chroot
システムコールは
BSD 4.2
で登場しました。
索引
バグ
プロセスがその作業ディレクトリを目的のディレクトリに変更可能であるが、
(ディレクトリのオープンチェック、または MAC チェックのような) 他の
アクセス制御チェックで失敗する場合には、そのプロセスの作業ディレクトリが
変更されたまま、このシステムコールがエラーを返すかもしれません。
索引
Index
- 名称
-
- ライブラリ
-
- 書式
-
- 解説
-
- エラー
-
- 関連項目
-
- 歴史
-
- バグ
-
Time: 07:06:24 GMT, January 12, 2009