Next: , Up: Modified command invocation


22.1 chroot: 異なるルートディレクトリでコマンドを実行

chrootは,指定されたルートディレクトリでコマンドを実行します. 多くのシステムでは,スーパーユーザのみこれが可能です.概要です.

     chroot newroot [command [args]...]
     chroot option

通常ファイル名は,ディレクトリ構造のルート,すなわち/を起点とし て調べられます.chrootは,ルートをnewrootディレクトリ (存在する必要があります)に変更し,オプションのargsを用いて commandを実行します.commandが指定されていない場合,デフォ ルトは,SHELL環境変数や,設定されていない場合は/bin/shの 値が,-iオプションで呼び出されます.

オプションは--help--versionだけです.See Common options.

chrootの使用にあたり,一般的な問題を避ける手助けとなるヒント がいくつかあります.単純な例を始めるため,commandはスタティック リンクされているバイナリだと仮定します.ダイナミックリンクされている実 行形式を使用している場合,共有ライブラリを新しいルートディレクトリの正 しい位置に配置する必要があります.

例えば,スタティックリンクのlsの実行形式を作成し, /tmp/emptyに配置した場合,以下のコマンドをrootで実行することが 可能です.

     $ chroot /tmp/empty /ls -Rl /

出力は以下のようになります.

     /:
     total 1023
     -rwxr-xr-x  1 0 0 1041745 Aug 16 11:17 ls

bashのような,ダイナミックリンクされている実行形式を使用した い場合,最初に必要な共有オブジェクトを見つけるため‘ldd bash’を実 行してください.そして,実際のバイナリをコピーし,新しいルートディレク トリの要求される場所に,リストアップされているファイルもコピーして下さ い.最後に,実行形式が要求するすべてのファイルも(例えば,データ,ステー ト,デバイスファイル),必要な場所にコピーして下さい.

終了ステータスです.

     
     
     
     
     1   chroot自身が失敗した場合.
     126 commandは見つかったが,呼出しできない場合.
     127 commandが見つからない場合.
     それ以外はcommandの終了ステータスになります.