Unix-system-calls-chroot
[top]#
|http://www.google.com/[Google] | a|
Web | This Site |
選択した読書
Copyright©2014 by finddevguides |
[cols=",,,,,,,",] |
| | Home | | References | | Discussion Forums | | About TP
[width="100%",cols="100%",] |
a| == chroot()-Unix、Linuxシステムコール
[[File:]] image :http://www.finddevguides.com/images/next.gif [next] image:http://www.finddevguides.com/add- this.gif [AddThisソーシャルブックマークボタン]
広告
NAME
chroot-ルートディレクトリの変更
概要
#include <unistd.h> int chroot(const char* path); |
説明
*chroot* ()は、ルートディレクトリを_path_で指定されたものに変更します。 このディレクトリは、/で始まるパス名に使用されます。 ルートディレクトリは、現在のプロセスのすべての子によって継承されます。
特権プロセス(Linux: CAP_SYS_CHROOT 機能を持つプロセス)のみが chroot (2)を呼び出すことができます。この呼び出しはパス名解決プロセスの要素を変更し、それ以外は何もしません。
この呼び出しは現在の作業ディレクトリを変更しないため、呼び出し後の「。」は「/」をルートとするツリーの外になります。 特に、スーパーユーザーは「mkdir foo」を実行することで「chroot jail」から脱出できます。 chroot foo; cd .. ’。
この呼び出しは、開いているファイル記述子を閉じません。そのようなファイル記述子は、chrootツリー外のファイルへのアクセスを許可する場合があります。
返り値
成功すると、ゼロが返されます。 エラーの場合、-1が返され、_errno_が適切に設定されます。
エラー
ファイルシステムによっては、他のエラーが返される場合があります。 より一般的なエラーは次のとおりです。
Error Code | Description |
---|---|
*EACCES * | Search permission is denied on a component of the path prefix. (See also* path_resolution*(2).) |
EFAULT | path points outside your accessible address space. |
EIO | An I/O error occurred. |
ELOOP | Too many symbolic links were encountered in resolving path. |
ENAMETOOLONG | path is too long. |
ENOENT | The file does not exist. |
ENOMEM | Insufficient kernel memory was available. |
ENOTDIR | A component of path is not a directory. |
EPERM | The caller has insufficient privilege. |
準拠
SVr4、4.4BSD、SUSv2(LEGACYとマーク)。 この関数はPOSIX.1-2001の一部ではありません。
ノート
*fork* (2)を介して作成された子プロセスは、その親のルートディレクトリを継承します。 ルートディレクトリは、 *execve* (2)によって変更されないままになります。
FreeBSDには、より強力な jail ()システムコールがあります。
関連項目
[[File:]] image :http://www.finddevguides.com/images/next.gif [next] [[File:]]
広告
|
[cols="^",] |
|Advertisements