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

名称
ライブラリ
書式
解説
エラー
関連項目
歴史
バグ

jman



Time: 07:06:24 GMT, January 12, 2009