[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
chroot
: ルートディレクトリを変更して、コマンドを実行するchroot
は、指定されたディレクトリをルートディレクトリにして、コマンドを実行する。
多くのシステムでは、この操作を行うことができるのはスーパーユーザだけである。
(4)
書式:
chroot option newroot [command [args]…] chroot option |
通常、ファイル名の検索は、ディレクトリ構造の根 (ルート、root)、すなわち
‘/’ を起点として行われる。chroot
はこのルートを newroot
ディレクトリ (実在するディレクトリでなければならない) に変更し、
さらに、作業ディレクトリを ‘/’ に変更して、最後に command
を、args の指定があれば args を付けて実行する。
command が指定されていない場合、デフォルトのコマンドは、環境変数
SHELL
の値か、SHELL
が設定されていなければ、/bin/sh
であり、
それが ‘-i’ オプションを付けて、呼び出される。
command は シェルの組み込みコマンドであってはならない
(see section 特殊ビルトイン・ユーティリティ)。
このプログラムでは以下のオプションが使用できる。参照: 共通オプション. オプションはオペランドの前に置かなければならない。
このオプションを使えば、新しいプロセスが使用する補助 groups を変更することができる。グループのリストの各項目 (名前でも ID 番号でもよい) は、コンマで区切られていなければならない。 ‘--userspec’ オプションで自動的に行われる補助グループの照合をしないようにするには、 ‘--groups=''’ を使用すればよい。
デフォルトでは、command は呼び出し側のプロセスと同じ資格情報を使って実行されるが、 このオプションを使えば、command を別の user の資格で実行することができる。別の基本 group を指定することも可能だ。 user が指定された場合、補助グループは、そのユーザについてシステムが設定しているリストと同じものになる。 ただし、‘--groups’ オプションによって置き換えられる場合は別だ。
ルートディレクトリを newroot に変更した後で (すなわち chroot 環境中で)、作業ディレクトリを ‘/’ に変更したくなかったら、このオプションを使えばよい。 このオプションが使用できるのは、newroot が元の ‘/’ ディレクトリと同じときだけであり、従って、役に立つのは、 ‘--groups’ や "‘--userspec’ と一緒に使い、 元の作業ディレクトリに留まっていたい場合がほとんどである。
‘--userspec’ や ‘--groups’ オプションによって行われるユーザ名やグループ名の照合は、 chroot 環境の外側と内側の両方で行われるが、chroot 環境の内側で成功した照合が優先される。 ユーザやグループの指定で ID 番号を使うつもりならば、数字の前に ‘+’ を付ければ、名前を ID 番号に還元するステップが行われないで済む。 See section chown, chgrp, chroot, id: ユーザ名かユーザ ID かを明確にする.
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’ を実行して、どんな共有オブジェクトファイルが必要かを調べることだ。
それから、bash
自体のバイナリをコピーするだけでなく、‘ldd bash’
でリストされたファイルも、新しいルートディレクトリになるディレクトリ以下のしかるべき場所にコピーしておく。
さらに、実行ファイルが何か他のファイルも必要としているなら
(たとえば、データファイル、ステータスファイル、デバイスファイルなど)、
それも適切な場所にコピーする。
chroot
がインストールされるのは、chroot
関数を持つシステムだけである。
従って、移植を考慮したスクリプトでは、chroot
が存在することを当てにしない方がよい。
終了ステータス:
125: |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated on June 7, 2022 using texi2html 1.82.