chroot
1. chroot.1.man
Manpage of chroot
chroot
Section: User Commands (1)Updated: 18 June 2002
Index Return to Main Contents
名前
chroot - ルートディレクトリを変更してコマンドを実行する。書式
chroot directory [command [args]...]説明
chroot はルートディレクトリを指定してコマンドを実行する。 多くのシステムでは、スーパーユーザーだけがこれを行える。通常、ファイル名はディレクトリ構造のルート (root=根)、つまり `/' を起点として調べられる。 chroot はこのルートをディレクトリ directory に変更して command を実行する (directory は存在するディレクトリでなければならない)。 オプション args を指定することもできる。 command が指定されないと、デフォルトは SHELL 環境変数の値となる。 この変数が設定されていなければ、`/bin/sh' を `-i' オプションを指定して実行する。
chroot jail から起動されたプロセスが システムライブラリにアクセスできないという状況は、 非常にありがちなので注意すること。
オプション
- --help
- 標準出力に使用方法のメッセージを出力して正常終了する。
- --version
- 標準出力にバージョン情報を出力して正常終了する。
注意
プログラムのバグについては bug-sh-utils@gnu.org に報告してください。 ページの更新は Ragnar Hojland Espinosa <ragnar@ragnar-hojland.com> が行っています。
Index
This document was created by man2html using the manual pages.
Time: 17:13:21 GMT, January 19, 2012
2. chroot.2.man
Manpage of CHROOT
CHROOT
Section: Linux Programmer's Manual (2)Updated: 2010-09-20
Index Return to Main Contents
名前
chroot - ルート・ディレクトリを変更する書式
#include <unistd.h>int chroot(const char *path);
glibc 向けの機能検査マクロの要件 (feature_test_macros(7) 参照):
chroot():
-
- glibc 2.2.2 以降:
-
_BSD_SOURCE || (_XOPEN_SOURCE >= 500 || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED) && !(_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600) - glibc 2.2.2 より前: なし
説明
chroot() は、呼び出し元プロセスのルート・ディレクトリを path で指定されたディレクトリに変更する。 このディレクトリ以下が / から始まるパス名として使われる。 このルート・ディレクトリは呼び出し元のプロセスの全ての子プロセスに受け継がれる。特権プロセス (Linux では、 CAP_SYS_CHROOT ケーパビリティを持つプロセス) のみが chroot() を呼び出すことができる。
このコールはパス名解決の過程で構成要素を変更するのみで、 その他には何も行わない。
このコールは現在の作業ディレクトリ (working directory) を変更しない。 そのため、このコールの後に aq.aq が aq/aq を 根とするツリーの外になる場合がある。 特に、スーパー・ユーザーは以下のようにすることで "chroot jail" から逃げ出せてしまう。
mkdir foo; chroot foo; cd ..
このコールはオープンファイルディスクリプタをクローズしないので、 このようなファイルディスクリプタは chroot ツリーの外にある ファイルにアクセスできる。
返り値
成功すると 0 を返す。 失敗すると -1 を返し、 errno に適切な値を設定する。エラー
ファイルシステムによっては他のエラーが返される事がある。 一般的なエラーを以下に挙げる:- EACCES
- パス名の途中のどこかに検索許可 (search permission) がない。 (path_resolution(7) も参照すること。)
- EFAULT
- path が割り当てられたアドレス空間外を指している。
- EIO
- I/O エラーが発生した。
- ELOOP
- path を解決する際に遭遇したシンボリック・リンクが多過ぎる。
- ENAMETOOLONG
- path が長過ぎる。
- ENOENT
- ファイルが存在しない。
- ENOMEM
- カーネルに十分なメモリがない。
- ENOTDIR
- path の内容がディレクトリではない。
- EPERM
- 呼び出し側に十分な特権がない。
準拠
SVr4, 4.4BSD, SUSv2 (但し、SUSv2 では過去の名残とされている)。 この関数は POSIX.1-2001 にはない。注意
fork(2) で作成された子プロセスは、 親プロセスのルート・ディレクトリを継承する。 execve(2) の場合も、ルート・ディレクトリは変更されない。FreeBSD にはより強力な jail() システムコールがある。
関連項目
chdir(2), path_resolution(7)
Index
This document was created by man2html using the manual pages.
Time: 17:13:21 GMT, January 19, 2012




