FreeBSD 日本語マニュアル検索 (jman/japropos/jwhatis)


日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。

4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.3-RELEASE-K, 13.0-RELEASE-K から 13.2-RELEASE-K は、全翻訳済み)

13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。



検索コマンド: man apropos whatis
コマンド/キーワード:
日本語マニュアル RELEASE :
セクション:
Table of Contents
名称 | 書式 | 解説 | 使用例 | 関連項目 | 歴史 | 作者 | バグ |
JAIL(8)                FreeBSD システム管理者マニュアル                JAIL(8)

名称
     jail -- システム jail (刑務所) を管理する

書式
     jail [-dhilqv] [-J jid_file] [-u username] [-U username] [-cmr]
          param=value ... [command=command ...]
     jail [-dqv] [-f conf_file] [-p limit] [-cmr] [jail]
     jail [-qv] [-f conf_file] [-rR] [* | jail ...]
     jail [-dhilqv] [-J jid_file] [-u username] [-U username] [-n jailname]
          [-s securelevel] [path hostname [ip[,...]] command ...]

解説
     jail ユーティリティは、新しい jail (刑務所) を作成するか、または既存
     のjail を修正するか、削除します。jail (または ``prison'') は、コマンド行
     で、または jail.conf(5) ファイルのパラメータによって指定されます。

     オプション -c, -m または -r の少なくとも 1 つが指定されなければなりませ
     ん。これらのオプションは、次を実行する操作を記述するために、単独、または
     組み合わされて使用されます:

     -c      新しい jail を作成します。(コマンド行で指定されるなら) jail の
             jidname パラメータは、既存の jail を参照してはなりません。

     -m      既存の jail を修正します。jid または name パラメータのうちの 1 つ
             は、存在し、既存の jail を参照しなければなりません。いくつかのパ
             ラメータは、実行している jail で変更されません。

     -r      jid または name によって指定された jail を削除します。すべての
             jail 化されたプロセスは、kill され、この jail の子供であるすべて
             の jail も削除されます。

     -rc     既存の jail を再起動します。jail は、最初に削除され、次に、あたか
             も ``jail -r'' と ``jail -c'' がセッションで実行されたかのよう
             に、再作成されます。

     -cm     存在していないなら、jail を作成するか、または存在するなら、jail
             を変更します。

     -mr     既存の jail を修正します。jail は、パラメータを修正する必要がある
             なら、再起動され、そうでなければ、変更されることはありません。

     -cmr    存在していないなら、jail を作成するか、または存在するなら、jail
             を修正します (そして、たぶん再起動されます)。

     他の利用可能なオプションは、次の通りです:

     -d      allow.dying パラメータと同等の、死んでいる jail に変更を行うこと
             を許可します。

     -f conf_file
             デフォルトの /etc/jail.conf の代わりに設定ファイル conf_file を使
             用します。

     -h      host.hostname パラメータ (または、hostname) を解決し、リゾルバに
             よって返されるすべての IP アドレスをこの jail のためのアドレスの
             リストに追加します。これは、ip_hostname パラメータと同等です。

     -i      新しく作成された (複数の) jail の jail 識別子 (のみ) を出力しま
             す。これは、-q オプションの意味を含みます。

     -J jid_file
             jail を開始するために使用するパラメータを含んで、jid_file ファイ
             ルを書き込みます。

     -l      クリーンな環境でコマンドを実行します。これは、廃止予定で、
             exec.clean パラメータと同等です。

     -n jailname
             jail の名前を設定します。これは、廃止予定で、name パラメータと同
             等です。

     -p limit
             同時に実行することができる exec.* からのコマンドの数を制限しま
             す。

     -q      jail が作成されるか、修正されるか、または削除されるときはいつで
             も、印刷するメッセージを抑制します。エラーメッセージだけが印刷さ
             れます。

     -R      設定ファイルを使用せずに、既存の jail を削除する -r オプションの
             変異形。この jail のための削除関連のパラメータは、使用されません
             -- jail は、単に削除されます。

     -s securelevel
             kern.securelevel MIB エントリを新たに作成された jail 内の指定され
             た値に設定します。これは、廃止予定で、securelevel パラメータと同
             等です。

     -u username
             jail 化されたコマンドが実行するべきホスト環境のユーザ名。これは、
             廃止予定で、exec.jail_userexec.system_jail_user パラメータと
             同等です。

     -U username
             jail 化されたコマンドが実行するべき jail 化された環境のユーザ名。
             これは、廃止予定で、exec.jail_user パラメータと同等です。

     -v      実行しているコマンドとマウントしているファイルシステムのように、
             すべての操作に関するメッセージを印刷します。

     オプションの後に引数が与えられなければ、(削除以外の) 操作は、jail.conf(5)
     ファイルで指定されたすべての jail で実行されます。jail 名の単一の引数は、
     指定された jail でのみ動作します。また、-r-R オプションは、name また
     は jid によって指定される jail.conf(5) ファイルにない、実行している jail
     を削除することができます。

     ``*'' の引数は、それらが jail.conf(5) に現われるかどうかにかかわらず、す
     べての jail で動作するワイルドカードです。これは、すべての jail を削除す
     る -r のための確実な方法です。階層的な jail が存在するなら、部分的なマッ
     チングのワイルドカード定義を指定することができます。例えば、``foo.*'' の
     引数は、``foo.bar'' と ``foo.bar.baz'' のような名前がある jail に適用しま
     す。

     jail は、コマンド行で直接パラメータを指定されます。この場合、jail.conf(5)
     ファイルは、使用されません。また、後方互換性のために、コマンド行は、名前
     なしの、次の 4 つの固定のパラメータがあります: path, hostname, ipcommand。このモードは、常に新しい jail を作成し、-c-m オプションは、
     適用されません (そして、存在してはなりません)。

   jail パラメータ
     jail.conf(5) ファイルの、またはコマンド行のパラメータは、一般的に形式
     ``name=value'' です。いくつかのパラメータは、ブール値で、値がありません
     が、単独の名前によってか、または ``no'' 接頭辞なしで設定されます、例え
     ば、persist または nopersist。または、それらは、値 ``true'' た ``false''
     を与えることができます。他のパラメータは、設定ファイルで (詳細について
     は、jail.conf(5) を参照) コンマで区切られたリストまたは ``+='' をつけて指
     定されて、2 つ以上の値があります。

     jail ユーティリティは、2 つのクラスのパラメータを認識します。jail が作成
     されるとき、(通常) ``jail -m'' で変更することができる、jls(8) で見ること
     ができる、カーネルに渡される true jail パラメータがあります次に、jail 自
     体によってのみ使用される疑似パラメータがあります。

     jail には、コアパラメータのセットがあり、カーネルモジュールは、それら自体
     の jail パラメータを追加するることができます。利用可能なパラメータの現在
     のセットを ``sysctl -d security.jail.param'' によって検索することができま
     す。設定されないあらゆるパラメータは、現在の環境にしばしば基づいて、デ
     フォルト値を与えられます。コアパラメータは、次の通りです:

     jid     jail 識別子。これは、自動的に新しい jail に割り当てられ、(また
             は、明白に設定することができ)、後の変更のため、または jls(8) また
             は jexec(8) のようなコマンドのために jail を識別するために使用す
             ることができます。

     name    jail 名。これは、(`.' を含まないことを除いて) jail を識別する任意
             の文字列です。jid のように、後の jail コマンド、または、jls(8) ま
             たは jexec(8) にそれを渡すことができます。name が供給されないな
             ら、デフォルトは、jid と同じと仮定されます。name パラメータは、
             jail.conf(5) ファイル形式によって暗黙に定義され、設定ファイルを使
             用するとき、明示的に設定される必要はありません。

     path    jail のルートとなるディレクトリ。jail によって、または、jexec(8)
             からのいずれかの、jail の内部で実行されるあらゆるコマンドは、この
             ディレクトリから実行されます。

     ip4.addr
             jail に割り当てられた IPv4 アドレスのリスト。これが設定されるな
             ら、jail は、これらのアドレスのみを使用するように制限されます。他
             のアドレスを使用するあらゆる試みは、失敗し、ワイルドカードのアド
             レスを使用する試みは、代わりに jail 化されたアドレスを黙って使用
             します。IPv4 に関して、与えられた最初のアドレスは、より良いマッチ
             を見つけることができない、バインドされていないソケットでソースア
             ドレスの選択のときにソースアドレスとして使用されます。jail のいず
             れにも、それ自体に割り当てられた、この単一のオーバラップする IP
             アドレスより多くなければ、同じ IP アドレスがある複数の jail のみ
             を開始することはできます。

     ip4.saddrsel
             以前に述べられた振る舞いを変更し、jail の主要な IPv4 アドレスに賛
             成して、jail のための IPv4 ソースアドレスの選択を無効にするブール
             値のオプション。ソースアドレス選択は、すべての jail に対してデ
             フォルトで有効にされ、親の jail の ip4.nosaddrsel 設定は、あらゆ
             る子供の jail に継承されません。

     ip4     IPv4 アドレスの利用可能性を制御します。指定できる値は、すべてのシ
             ステムアドレスへの制限されていないなアクセスを許す ``inherit、''
             ip4.addr を通してアドレスを制限する ``new'' と IPv4 を使用する
             jail を完全に停止する ``disable'' です。ip4.addr パラメータを設定
             すると、``new'' の値の意味も含みます。

     ip6.addr, ip6.saddrsel, ip6
             上記の ip4.addr, ip4.saddrselip4 に対応する、jail のための 1
             組の IPv6 オプション。

     vnet    それ自体のネットワークインタフェース、アドレス、ルーティングテー
             ブル (経路表) などと共に、それ自身の仮想ネットワークスタックがあ
             る jail を作成します。カーネルは、利用可能とするために、これに対
             する VIMAGE option でコンパイルされなければなりません。指定できる
             値は、たぶん制限された IP アドレスがある、システムメットワークス
             タックを使用する ``inherit'' と新しいネットワークスタックを作成す
             る ``new'' です。

     host.hostname
             jail のホスト名。他の同様のパラメータは、host.domainname,
             host.hostuuidhost.hostid です。

     host    ホスト名と関連情報の元を設定します。指定できる値は、システム情報
             を使用する ``inherit、'' 上記のフィールドからの情報を使用する
             jail のための ``new'' です。上記のフィールドのいずれかを設定する
             と、``new'' の値の意味も含みます。

     securelevel
             jail の kern.securelevel sysctl の値。jail は、親のシステムより低
             いセキュルティレベル (securelevel) の状態に決してなりませんが、こ
             のパラメータを設定することによって、より高いものとすることができ
             ます。システムのセキュルティレベルが変更されるなら、あらゆる jail
             のセキュルティレベルは、少なくとも同じくらい安全となります。

     devfs_ruleset
             この jail のマウントされた devfs のために強制される devfs のルー
             ルセットの数。0 の値 (デフォルト) は、ルールセットが強制されない
             ことを意味します。子孫の jail は、親の jail の強制される devfs
             ルールセットを継承します。jail の内側で devfs をマウントすること
             は、allow.mountallow.mount.devfs のパーミッションが有効で、
             enforce_statfs が 2 よりも低い値に設定されている場合にのみ可能で
             す。devfs のルールとルールセットを、jail の内側から見たり、修正す
             ることはできません。

             注: devfs の適切なデバイスのみが jail に見えるようになっているこ
             とは、重要です。jail 中でディスクデバイスへのアクセスは、jail の
             外側のファイルを修正することによって jail のサンドボックス (訳注:
             セキュリティ上の許可) を通り抜けてるように jail 中のプロセスに許
             可します。jail ごとの devfs のエントリへのアクセスを制限するため
             に devfs のルールをどのように使用するかの情報については、devfs(8)
             を参照してください。jail のための単純な devfs ルールセットは、
             /etc/defaults/devfs.rules のルールセット #4 として利用可能です。

     children.max
             この jail によって (またはこの jail の下の他の jail によって) 作
             成されることを許可される子供の jail の数。この制限は、jail が子供
             の jail を作成することが許可されないことを示す、デフォルトで 0 で
             す。詳細については、階層的な jail セクションを参照してください。

     children.cur
             それ自体の子供の jail とそれらの下で作成されたあらゆる jail を含
             む、この jail の子孫の数。

     enforce_statfs
             これは、jail の情報プロセスがマウントポイントに関して何を取得する
             ことができるかを決定します。それは、次の syscall の振る舞いに影響
             します: statfs(2), fstatfs(2), getfsstat(2)fhstatfs(2) (同様
             の互換性のある syscall と同様に)。0 に設定されるとき、すべてのマ
             ウントポイントは、あらゆる制限なしで利用可能です。1 に設定される
             とき、jail の chroot ディレクトリ下のマウントポイントのみ目に見え
             ます。それに加えて、jail の chroot ディレクトリへのパスは、それら
             のパス名の前部から削除されます。2 (デフォルト) に設定されるとき、
             上記の syscall は、jail の chroot ディレクトリが位置しているマウ
             ントポイントでのみ動作することができます。

     persist
             このブール値のパラメータを設定することによって、jail は、プロセス
             なしで存在することができます。通常、コマンドは、jail 作成の一部と
             して実行され、次に、jail は、最後のプロセスの終了時に破壊されま
             す。新しい jail には、persist パラメータか、または exec.start ま
             たは command 疑似パラメータセットのいずれかがなければなりません。

     cpuset.id
             cpuset の ID は、この jail (読み込み専用) に関連しています。

     dying   これは、jail が、(読み込み専用) のシャットダウン中のプロセスであ
             るなら、真です。

     parent  この jail の親の jid または、これが、トップレベル (top-level) の
             jail (読み込み専用) であるなら、0 です。

     osrelease
             jail の kern.osrelease sysctl と uname -r のための文字列。

     osreldate
             jail の kern.osreldate と uname -K のための数。

     allow.*
             jail 環境のいくつかの制限は、jail ごとを基本として設定されます。
             allow.set_hostname を除いて、これらのブール値のパラメータは、デ
             フォルトでオフです。

             allow.set_hostname
                     jail のホスト名は、hostname(1) または sethostname(3) を通
                     して変更されます。

             allow.sysvipc
                     jail 内のプロセスは、System V IPC 基本関数にアクセスでき
                     ます。これは、モジュールごとのパラメータを支持して推奨さ
                     れません (下記を参照)。このパラメータが設定されるとき、
                     sysvmsg, sysvsem, と sysvshm すべてを ``inherit'' に設定
                     することと同様です。

             allow.raw_sockets
                     jail の root は、生のソケットを作成することを許可されま
                     す。このパラメータを設定することによって、ping(8)traceroute(8) のようなユーティリティは、jail の内側で動作
                     できます。これが設定されるなら、発信元 IP アドレスは、
                     IP_HDRINCL フラグが、ソケットで設定されたかどうかにかかわ
                     らず、jail にバインドされた IP アドレスに強制的に従いま
                     す。様々なネットワークサブシステムを設定して、情報をやり
                     とりするために生のソケットを使用できるので、特権的な jail
                     へのアクセスが信頼されていないパーティ (party) に配布され
                     ているところで、特別の注意をするべきです。

             allow.chflags
                     通常は、jail の内側の特権ユーザは、chflags(2) によって特
                     権がないものとして扱われます。このパラメータが設定される
                     とき、そのようなユーザは、特権があるものとして扱われ、
                     kern.securelevel で通常の制限に従ってシステムファイルフラ
                     グを操作します。

             allow.mount
                     jail の内側の特権ユーザは、jail フレンドリとしてマークさ
                     れたファイルシステムタイプをマウントして、アンマウントす
                     ることができます。jail の中からマウントのために利用可能な
                     ファイルシステムタイプを見つけるために lsvfs(1) コマンド
                     を使用することができます。enforce_statfs が 2 より小さな
                     値に設定される場合のみ、このパーミッションは、有効です。

             allow.mount.devfs
                     jail の内側の特権ユーザは、devfs ファイルシステムをマウン
                     トして、アンマウントすることができます。このパーミッショ
                     ンは、allow.mount に加えて、enforce_statfs が 2 より小さ
                     な値に設定されるときのみ、有効です。devfs_ruleset オプ
                     ションで devfs ルールセットを制限することを考慮してくださ
                     い。

             allow.mount.fdescfs
                     jail の内側で特権を与えられたユーザは、fdescfs ファイルシ
                     ステムをマウントして、アンマウントすることができます。こ
                     のパーミッションは、enforce_statfs が 2 より小さい値に設
                     定されたときのみ、allow.mount ととともにのみ効果的です。

             allow.mount.nullfs
                     jail の内側の特権ユーザは、nullfs ファイルシステムをマウ
                     ントして、アンマウントすることができます。このパーミッ
                     ションは、allow.mount に加えて、enforce_statfs が 2 より
                     小さな値に設定されるときのみ、有効です。

             allow.mount.procfs
                     jail の内側の特権ユーザは、procfs ファイルシステムをマウ
                     ントして、アンマウントすることができます。このパーミッ
                     ションは、allow.mount に加えて、enforce_statfs が 2 より
                     小さな値に設定されるときのみ、有効です。

             allow.mount.linprocfs
                     jail の内側の特権を与えられたユーザは、linprocfs ファイル
                     システムをマウントし、アンマウントすることができます。こ
                     のパーミッションは、allow.mount とともに、そして
                     enforce_statfs が 2 より小さな値に設定されるときだけ、効
                     果的です。

             allow.mount.linsysfs
                     jail の内側の特権を与えられたユーザは、linsysfs ファイル
                     システムをマウントし、アンマウントすることができます。こ
                     のパーミッションは、allow.mount とともに、そして
                     enforce_statfs が 2 より小さな値に設定されるときだけ、効
                     果的です。

             allow.mount.tmpfs
                     jail の内部の特権ユーザは、tmpfs ファイルシステムをマウン
                     トし、アンマウントすることができます。このパーミッション
                     は、enforce_statfs が 2 よい少ない値に設定されるなら、
                     allow.mount と一緒のみ有効です。

             allow.mount.zfs
                     jail の内側の特権ユーザは、ZFS ファイルシステムをマウント
                     して、アンマウントすることができます。このパーミッション
                     は、allow.mount に加えて、enforce_statfs が 2 より小さな
                     値に設定される場合のみ、有効です。jail の中から操作する
                     ZFS ファイルシステムを設定する方法に関する情報について
                     は、zfs(8) を参照してください。

             allow.quotas
                     jail の root は、jail の (複数の) ファイルシステムで
                     クォータ (quota) を管理できます。これは、jail が他の jail
                     またはシステムの jail 化されていない部分を共有することが
                     できるファイルシステムを含んでいます。

             allow.socket_af
                     通常、jail 中のソケットは、IPv4、IPv6、ローカル (UNIX) と
                     ルート (route) に制限されます。これによって jail の機能性
                     をそれらに追加していない他のプロトコルスタックへアクセス
                     可能となります。

     カーネルモジュールは、モジュールがロードされるときだけ存在する、それら自
     体のパラメータを追加します。これらは、通常、モジュールの jail の完全な使
     用を与える ``inherit'' の値で、いくつかのモジュール特有の方法で jail をカ
     プセル化する ``new'' の値とモジュールを jail に利用不可能にする
     ``disable''の値でモジュールの後に指定されたパラメータの下に向けられます。
     また、モジュール内の jail の振る舞いを定義するために他のパラメータもあり
     ます。モジュール特有のパラメータは、次を含みます:

     linux   どのように jail の Linux エミュレーション環境が現れるかを決定しま
             す。``inherit'' の値は、同じ環境を保持し、``new'' は、それ自体の
             環境である jail を与えます (jail が作成されるとき、まだ、オリジナ
             ルが継承されます)。

     linux.osname, linux.osrelease, linux.oss_version
             Linux OS 名、OS リリースと OSS バージョンは、この jail に関連して
             います。

     sysvmsg
             SYSV IPC メッセージプリミティブへのアクセスを許可します。
             ``inherit'' に設定されているなら、システムのすべての IPC オブジェ
             クトは、それらが、jail 自体、基本のシステムまたは他の jail によっ
             て作成されたかどうかにかかわらず、この jail に見えます。``new''
             に設定されているなら、jail は、それ自体のキーの名前空間があり、そ
             れが作成されたオブジェクトを見ることだけができます。システム (ま
             たは、親の jail) には、jail のオブジェクトにアクセスできますが、
             そのキーにアクセスできません。``disable'' に設定されているなら、
             jail は、あらゆる sysvmsg 関連のシステムコールを実行することはで
             きません。

     sysvsem, sysvshm
             sysvmsg と同じ方法で、SYSV IPC セマフォと共用メモリのプリミティブ
             へのアクセスを許可します。

     カーネルに渡されない疑似パラメータがありますが、jail が作成されるか、また
     は削除されるとき、しばしば指定されたコマンドを実行することによって、jail
     環境をセットアップするために jail によって使用されます。exec.* コマンドパ
     ラメータは、システムまたは jail 環境のいずれかで実行される sh(1) のコマン
     ド行です。それらは、指定されたコマンドを順序どおり実行する、複数の値を与
     えることができます。すべてのコマンドは、(0 の終了状態を返す) 成功しなけれ
     ばなりません、さもなければ、必要に応じて、jail が作成されないか、または削
     除されません。

     疑似パラメータは、次の通りです:

     exec.prestart
             jail が作成する前に、システム環境で実行する (複数の) コマンド。

     exec.start
             jail が作成するとき、jail 環境で実行する (複数の) コマンド。実行
             する代表的なコマンドは、``sh /etc/rc'' です。

     command
             コマンド行で jail を直接指定するとき使用する exec.start の同意
             語。値が単純な文字列である他のパラメータと異なり、command は、そ
             れ自体の引数として jail コマンド行残りを使用します。

     exec.poststart
             jail が作成された後、そして任意の exec.start コマンドが完了した後
             に、システム環境で実行する (複数の) コマンド。

     exec.prestop
             jail が削除される前にシステム環境で実行する (複数の) コマンド。

     exec.stop
             jail が削除される前、そして任意の exec.prestop コマンドが完了した
             後に、jail 環境で実行する (複数の) コマンド。実行する代表的なコマ
             ンドは、``sh /etc/rc.shutdown'' です。

     exec.poststop
             jail が削除される後にシステム環境で実行する (複数の) コマンド。

     exec.clean
             クリーンな環境でコマンドを実行します。環境変数は、HOME, SHELL,
             TERM と USER を除いて廃棄されます。HOME と SHELL は、ターゲットの
             ログインのデフォルト値に設定されます。USER は、ターゲットのログイ
             ンに設定されます。TERM は、現在の環境からインポートされます。ター
             ゲットのログインのためのログインクラスケーパビリティデータベース
             からの環境変数も、設定されます。

     exec.jail_user
             jail 環境で実行しているとき、コマンドを実行するユーザ。デフォルト
             は、カレントのユーザとしてコマンドを実行することです。

     exec.system_jail_user
             このブール値のオプションは、jail のファイルの代わりに、システムの
             passwd(5) ファイルの exec.jail_user を検索します。

     exec.system_user
             システム環境で実行しているとき、コマンドを実行するユーザ。デフォ
             ルトは、カレントのユーザとしてコマンドを実行することです。

     exec.timeout
             コマンドが完了するのを待つ時間の秒単位の最大の時間。コマンドが、
             このタイムアウトが通過した後にまだ実行しているなら、必要に応じ
             て、jail は、作成されないか、または削除されません。

     exec.consolelog
             コマンドの出力 (stdout と stderr) を向けるファイル。

     exec.fib
             jail の内側のコマンドを実行するとき、設定する FIB (ルーティング
             テーブル (経路表))。

     stop.timeout
             それらに (exec.stop コマンドが完了した後に起こる) SIGTERM シグナ
             ルを送った後に、jail のプロセスが終了するのを待つ時間の最大時間。
             この多くの秒が経過した後に、あらゆる残っているプロセスを kill し
             て、jail は、削除されます。これが 0 に設定されているなら、SIGTERM
             は、送られず、jail は、直ちに削除されます。デフォルトは、10 秒で
             す。

     interface
             jail の IP アドレス (ip4.addrip6.addr) を追加するネットワーク
             インタフェース。jail が作成される前に各アドレスの別名は、インタ
             フェースに追加され、jail が削除された後に、インタフェースから削除
             されます。

     ip4.addr
             カーネルに渡される IP アドレスに加えて、(ifconfig(8) によってサ
             ポートされる) インタフェース、ネットマスクと追加のパラメータも、
             形式、``interface|ip-address/netmask param ...''.  で指定されま
             す。インタフェースが IP アドレスの前に与えられるなら、アドレスの
             ための別名は、それが interface のパラメータがあるように、そのイン
             タフェースに追加されます。ドット付き 4 つ組または CIDR 形式のいず
             れかで、ネットマスクが IP アドレスの後に与えられるなら、それは、
             IP の別名を追加するとき、使用されます。追加のパラメータが指定され
             るなら、IP 別名を追加するときも、それらは、使用されます。

     ip6.addr
             カーネルに渡される IP アドレスに加えて、(ifconfig(8) によってサ
             ポートされる) インタフェース、接頭辞と追加のパラメータも、形式
             ``interface|ip-address/prefix param ...''.  で指定されます。

     vnet.interface
             vnet が有効にされた jail の後に与えるネットワークインタフェース
             は、作成されます。インタフェースは、jail が削除されるとき、自動的
             に解放されます。

     ip_hostname
             host.hostname パラメータを解決して、この jail のためのアドレス
             (ip4.addr または ip6.addr) のリストにリゾルバ (resolver) よって返
             されたすべての IP アドレスを追加します。これは、jail の発信 IPv4
             接続のためのデフォルトアドレス選択に影響します。各アドレスファミ
             リのためにリゾルバ (resolver) よって最初に返されたアドレスは、プ
             ライマリ (primary) アドレスとして使用されます。

     mount   単一の fstab(5) 行として与えられる、jail (と、それを削除した後に
             アンマウントする) を作成する前にマウントするファイルシステム。

     mount.fstab
             jail を作成する前にマウントするファイルシステムを含んでいる
             fstab(5) 形式のファイル。

     mount.devfs
             chroot された /dev ディレクトリに devfs(5) ファイルシステムをマウ
             ントし、jail の内側で目に見えるデバイスを制限するために、
             devfs_ruleset パラメータ (またはルールセット 4: devfsrules_jail
             のデフォルト) のルールセットを適用します。

     mount.fdescfs
             chroot された /dev/fd ディレクトリに fdescfs(5) ファイルシステム
             をマウントします。

     mount.procfs
             chroot された /proc ディレクトリに procfs(5) ファイルシステムをマ
             ウントします。

     allow.dying
             dying (死んでいる) jail に変更を行うことを可能にします。

     depend  この jail が依存する jail (または複数の jail) を指定します。そう
             でなければ、あらゆるアクションが、この jail を作成するために取ら
             れる前に、最後の exec.poststart コマンドの完了次第で、それらは、
             自動的に作成されます。jail が削除されるとき、反対 (opposite) は、
             真です: この jail は、それが依存するあらゆる (複数の) jail が停止
             される前に、最後の exec.poststop コマンドまで、削除されます。

使用例
     jail は、2 つの指針のうちの 1 つを使用して、主としてセットアップされます:
     特定のアプリケーション (たぶん特権で実行している) を抑制するか、または様
     々なデーモンとサービスを実行する ``仮想システムイメージ'' を作成するかの
     いずれかです。いずれにしても、必要なコマンド行ツール、デーモン、ライブラ
     リ、アプリケーションの設定ファイルなどを提供するために、FreeBSD のかなり
     完全なファイルシステムが、要求されます。しかしながら、仮想サーバの設定に
     ついて、かなりの量の追加の作業が、``boot'' (ブート) プロセスを置き換える
     ために、要求されます。このマニュアルページは、これらのステップのいずれか
     をサポートするために必要な設定ステップを文書化していますが、設定ステップ
     は、ローカルな必要条件に基づいて、改良する必要があります。

   jail ディレクトリのツリーのセットアップ
     FreeBSD 配布全体を含んでいる jail ディレクトリのツリーをセットアップする
     ために、次の sh(1) コマンドスクリプトを使用することができます:

     D=/here/is/the/jail
     cd /usr/src
     mkdir -p $D
     make world DESTDIR=$D
     make distribution DESTDIR=$D

     多くの場合に、この例は、jail に必要なものよりはるかに多くのものを入れるで
     しょう。ほかの極端な場合に、jail は、たった 1 つのファイルを含むかもしれ
     ません: jail で実行される実行形式。

     ``thin'' (細い) jail で始まり、それが動作するまで、物事を追加するより、
     ``fat'' (太い) jail で始めて、それが動作を停止するまで、物事を削除するほ
     うがより簡単であり、注意深く実験することをお勧めします。

   jail のセットアップ
     jail ディレクトリのツリーを構築するためには、jail ディレクトリのツリーの
     セットアップに記述されていることを行います。この例のために、``testjail''
     という名前が付けられた jail のために、/data/jail/testjail で、それを構築
     したと仮定します。自分のディレクトリ、IP アドレスとホスト名で必要なように
     下記を置き換えます。

   ホスト環境のセットアップ
     最初に、実際のシステムの環境を ``jail フレンドリ'' にセットアップします。
     一貫性のために、``ホスト環境'' として親のコンピュータ (box) を言及し、
     ``jail 環境'' として jail 化された仮想マシンを言及します。jail は、IP 別
     名を使用して実装されるので、最初に行うことの 1 つは、サービスのためのすべ
     てのローカル IP アドレスで listen する (接続を受け付ける) ホストシステム
     で IP サービスを無効にすることです。ネットワークサービスが特定の IP アド
     レスでなく、すべての利用可能な IP アドレスをバインド (bind) するホスト環
     境に存在しているなら、そして、jail がポートにバインドされていなかったな
     ら、jail IP アドレスに送信された要求をサービスできます。これは、適切な IP
     アドレス、その他で単に listen する (接続を受け付ける) ために inetd(8) を
     変更することを意味します。ホスト環境で /etc/rc.conf に、次を追加します:

           sendmail_enable="NO"
           inetd_flags="-wW -a 192.0.2.23"
           rpcbind_enable="NO"

     192.0.2.23 は、この例において、ホストシステムのための元の IP アドレスで
     す。指定されたホスト IP アドレスのみを使用するように inetd(8) から実行さ
     れるデーモンを、簡単に設定することができます。他のデーモンは、手動で設定
     される必要があり -- いくらかについては、これは、rc.conf(5) フラグエントリ
     を通して可能です。他のものについては、アプリケーションごとの設定ファイル
     を修正するか、アプリケーションを再コンパイルすることが必要です。次の頻繁
     に展開されるサービスは、特定の IP アドレスを listen している (接続を受け
     付けている) アプリケーションを制限するために修正されたそれらの個別の設定
     ファイルがなければなりません。

     sshd(8) を設定するためには、/etc/ssh/sshd_config を修正する必要がありま
     す。

     sendmail(8) を設定するためには、/etc/mail/sendmail.cf を修正する必要があ
     ります。

     named(8) に対しては、/etc/namedb/named.conf を修正する必要があります。

     さらに、多くのサービスは、ホスト環境で、それらを実行するために再コンパイ
     ルされなければなりません。これは、rpcbind(8), nfsd(8)mountd(8) のよう
     な rpc(3) を使用してサービスを提供するほとんどのアプリケーションを含んで
     います。一般的に、バインド (bind) する IP アドレスを指定することができな
     いアプリケーションは、jail IP アドレスにサービス要求も送るべきでないな
     ら、ホスト環境で実行されるべきではありません。ホスト環境で NFS をサービス
     する試みは、さらに混乱を引き起こすかもしれません、いくつかの NFS サービス
     がカーネルから直接サービスされるように、特定の IP だけを使用するように簡
     単に再設定することができません。また、ホスト環境で実行しているあらゆる
     サードパーティのネットワークソフトウェアは、jail 環境によっても提供される
     ように思える、それらのサービスの結果となるかもしれない、すべての IP アド
     レスをバインド (bind) できないように、チェックされ、設定されるべきです。

     いったん、これらのデーモンがホスト環境で無効にされ、固定されると、(例え
     ば、jail にメールを送るとき、その sendmail がダウンし、メールがホストに配
     信されるなど、がわかるなど) 後で混乱の可能性を縮小するために、すべての
     デーモンが既知の状態とできるように、リブートすることが最も良いことです。

   jail の設定
     利用者がネットワークインタフェースを少し整理して、アカウントをセットアッ
     プすることができるように、ネットワークインタフェースを設定せずに、初めて
     任意の jail を開始します。あらゆるマシン (仮想またはそうでない) と同様
     に、root パスワード、タイムゾーンなどを設定する必要があります。これらのス
     テップのうちのいくつかは、jail の内側の完全な仮想サーバを実行するつもりで
     ある場合のみあてはまります。他のものは、特定のアプリケーションの抑制のた
     めに、または仮想サーバを実行のための両方にあてはまります。

     jail でシェルを開始します:

           jail -c path=/data/jail/testjail mount.devfs \
                   host.hostname=testhostname ip4.addr=192.0.2.100 \
                   command=/bin/sh

     エラーがないと仮定すると、jail 内のシェルプロンプトで終わります。今
     /usr/sbin/sysinstall を実行し、様々な設定のオプションを設定するポストイン
     ストール設定を行うか、または /etc/rc.conf などを編集することによって、こ
     れらのアクションを手動で実行することができます。

           •   jail 内の名前解決が正しく動作できるように /etc/resolv.conf を設
               定します。
           •   sendmail(8) の警告を止めるために newaliases(1) を実行します。
           •   実際のホストシステムと異なるかもしれない、root のパスワードを設
               定します。
           •   タイムゾーンを設定します。
           •   jail 環境のユーザのためのアカウントを追加します。
           •   環境が要求するあらゆるパッケージをインストールします。

     また、あらゆるパッケージに特有の設定 (ウェブサーバ、SSH サーバなど)、を実
     行する必要があり、必要なログ記録を行うように、/etc/syslog.conf を修正する
     などを行います。仮想サーバを使用しないなら、jail 環境の syslog ソケットで
     listen する (接続を受け付ける) ためにホスト環境で syslogd(8) を修正したい
     かもしれません。この例では、syslog ソケットは、
     /data/jail/testjail/var/run/log に格納されるでしょう。

     シェルから出ると、jail は、シャットダウンされます。

   jail の開始
     利用者は、そのデーモンと他のプログラムのすべてを備えた環境を提示して、
     今、jail を再開する準備ができました。/etc/jail.conf で jail のためのエン
     トリを作成します:

           testjail {
                   path = /tmp/jail/testjail;
                   mount.devfs;
                   host.hostname = testhostname;
                   ip4.addr = 192.0.2.100;
                   interface = ed0;
                   exec.start = "/bin/sh /etc/rc";
                   exec.stop = "/bin/sh /etc/rc.shutdown";
           }

     仮想のサーバ環境を開始するために、/etc/rc は、様々なデーモンとサービスを
     開始するに実行され、/etc/rc.shutdown は、jail が削除されるときに、それら
     をシャットダウンするために実行されます。jail で単独のアプリケーションを実
     行しているなら、``/bin/sh /etc/rc'' のためのアプリケーションを開始するた
     めに使用されるコマンドを置き換えます。アプリケーションをきれいにシャット
     ダウンすることができるいくつかのスクリプトがあります、さもなければ、停止
     コマンドなしで十分に進行し、アプリケーションに SIGTERM を送る jail があり
     ます。

     次を実行することによって jail を開始します:

           jail -c testjail

     少しの警告が出されるかもしれません。しかしながら、それは、すべて適切に動
     作するべきです。jail 化されたプロセスの横に現われる `J' フラグが付けられ
     た ps(1) を使用して、jail の内側で実行している、inetd(8), syslogd(8) と他
     のプロセスを見ることができるはずです。jail のアクティブなリストを見るため
     には、jls(8) を使用します。sshd(8) が jail 環境で有効にされるなら、 jail
     化された環境のホスト名または IP アドレスに、ssh(1) を可能にするべきで、以
     前に作成されたアカウントを使用してログインします。

     ブート時に jail か開始されることも可能です。詳細については、rc.conf(5) の
     ``jail_*'' 変数を参照してください。

   jail の管理
     例えば、halt(8), reboot(8)shutdown(8) などの通常のマシンのシャットダ
     ウンコマンドを jail の内側でうまく使用することができません。jail の内側か
     らのすべてのプロセスを kill するためには、何を達成したいかによって、次の
     コマンドの 1 つを使用できます:

           kill -TERM -1
           kill -KILL -1

     これは、jail 内のすべてのプロセスに SIGTERM または SIGKILL シグナルを送り
     ます -- ホスト環境からこれを実行しないように注意してください!  いったん、
     jail のプロセスがすべて死んだら、jail が persist パラメータを付けて作成さ
     れたなら、jail は、削除されます。また、jail の用途によって、jail の内側か
     ら /etc/rc.shutdown を実行したいかもしれません。

     外側から jail をシャットダウンするためには、exec.stop によって指定された
     あらゆるコマンドを実行する、jail -r で、単にそれを削除し、次に、あらゆる
     残っている jail 化されたプロセスに SIGTERM と最終的に SIGKILL を送りま
     す。

     /proc/pid/status ファイルは、その最後のフィールドとして、プロセスがファイ
     ルは、その最後のフィールドとして、プロセスが実行する jail の名前、または
     jail 内で実行されていないプロセスを示す ``-'' を含んでいます。また、ps(1)
     コマンドは、jail で処理するために `J' フラグを表示します。

     また、利用者、それらの jail ID に基づいたプロセスをリスト/kill できます。
     プロセスとそれらの jail ID を表示するためには、次のコマンドを使用します:

           ps ax -o pid,jid,args

     jail の番号 3 のプロセスを表示して、次に、kill するためには、次のコマンド
     を使用します:

           pgrep -lfj 3
           pkill -j 3
     または:

           killall -j 3

   jail とファイルシステム
     ファイルシステムが jail フレンドリとマークされ、jail の allow.mount パラ
     メータが設定され、jail の enforce_statfs パラメータが 2 より小さくないな
     ら、jail の内側のあらゆるファイルシステムを mount(8) または umount(8) す
     ることは不可能です。

     同じファイルシステムを共有する複数の jail は、お互いに影響を及ぼすかもし
     れません。例えば、1 つの jail のユーザは、別の jail のプロセスに対して空
     間を残さないで、ファイルシステムを満杯にすることができます。これを防ぐた
     めに quota(1) を使用しようとすることは、ファイルシステムのクォータが、
     jail に気づかないように、どちらも動作しませんが、ユーザとグループ ID のみ
     見えます。これは、2 つの jail の同じユーザ ID が、単一のファイルシステム
     のクォータを共有することを意味します。この作業を行うために jail ごとに 1
     つのファイルシステムを使用する必要があるでしょう。

   sysctl MIB エントリ
     プロセスが jail の内側 (値が 1) で実行されているか、jail の内側でない (値
     が 0) かどうかを決定するために、読み込み専用のエントリ
     security.jail.jailed を使用することができます。

     変数 security.jail.max_af_ips は、アドレスファミリごとにどのくらいのアド
     レスが jail にあるかを決定します。デフォルトは、255 です。

     いくつかの MIB 変数には、jail ごとの設定があります。jail 化されたプロセス
     によって、これらの変数を変更することは、ホスト環境に影響せず、jail 環境の
     みに影響します。これらの変数は、kern.securelevel, kern.hostname,
     kern.domainname, kern.hostidkern.hostuuid です。

   階層的 jail
     jail の children.max パラメータを設定することによって、jail の内側のプロ
     セスは、それら自体の jail を作成することができます。これらの子供の jail
     は、それらが作成した jail (または、それらの jail の子供) を見る、および/
     または変更できる jail でのみ、階層的に保持されます。各 jail には、それを
     作成した jail の jid を含んでいる、読み込み専用の parent パラメータがあり
     ます。0 の jid は、jail が現在の jail の子供 (または、現在のプロセスが
     jail 化されていないなら、トップレベル jail である) ことを示します。

     jail 化されたプロセスは、それら自体に与えられるより大きなパーミッションを
     与えることができません、例えば、jail が allow.nomount で作成されるなら、
     allow.mount 設定で jail を作成できません。同様に、ip4.addrsecurelevel
     のような制限は、子供の jail で迂回されません。

     子供の jail は、それ自体の children.max パラメータが設定されるなら (デ
     フォルトで 0 であることを覚えておいてください)、順番にそれ自体の子供の
     jail を作成できます。これらの jail は、目に見えて、それらの親とすべての先
     祖によって修正することができます。

     jail 名は、ドットによって区切られた MIB タイプの文字列であるフルネーム
     で、この階層構造を反映します。例えば、ベースシステムのプロセスが jail
     ``foo'' を作成し、その jail の下のプロセスが別の jail ``bar'' を作成する
     なら、2 番目の jail は、基本システムの ``foo.bar'' として見られます (が、
     jail ``foo'' 内側のあらゆるプロセスには ``bar'' としてのみ見られます)。他
     方では、jid は、単一の空間に存在し、各 jail には、ユニークな jid がなけれ
     ばなりません。

     名前のように、子供の jail の path は、作成者自体の path と相対的です。こ
     れは、最初の jail の chroot された環境で作成される子供の jail に基づいて
     います。

関連項目
     killall(1), lsvfs(1), newaliases(1), pgrep(1), pkill(1), ps(1), quota(1),
     jail_set(2), devfs(5), fdescfs(5), jail.conf(5), linprocfs(5),
     linsysfs(5), procfs(5), rc.conf(5), sysctl.conf(5), chroot(8), devfs(8),
     halt(8), ifconfig(8), inetd(8), jexec(8), jls(8), mount(8), named(8),
     reboot(8), rpcbind(8), sendmail(8), shutdown(8), sysctl(8), syslogd(8),
     umount(8)

歴史
     jail ユーティリティは、FreeBSD 4.0 で登場しました。階層的/拡張可能な jail
     は、FreeBSD 8.0 で導入されました。設定ファイルは、FreeBSD 9.1 で導入され
     ました。

作者
     jail の機能は、R&D Associates のために Poul-Henning Kamp によって書かれ、
     それを FreeBSD に寄贈しました。

     Robert Watson は、拡張された文書を書き、いくつかのバグを見つけ、いくつか
     の新しい機能を追加し、ユーザランドの jail 環境をクリーンアップしました。

     Bjoern A. Zeeb は、IPv4 のために Pawel Jakub Dawidek によって最初に行われ
     たパッチに基づいて IPv4 と IPv6 のためのマルチ IP jail のサポートを追加し
     ました。

     James Gritton は、拡張可能な jail パラメータ、階層的な jail と設定ファイ
     ルを追加しました。

バグ
     すべての IP (INADDR_ANY) で listen している (接続を受け付けている) デーモ
     ンが、ホストデーモンが jail の内側から提供されたサービスで強制されないよ
     うな、安全なホスト環境を構築することを容易にする、そのアドレスをバインド
     (bind) しないようなアドレスの別名フラグを追加することはよい考えであるかも
     しれません。現在、最も簡単な答えは、たぶん、容易に設定可能な inetd(8) か
     ら提供されるサービスを制限して、ホストで提供されるサービスを最小にするこ
     とです。


     jail の内側の目に見えるディレクトリを管理するとき、最大の注意を払うべきで
     す。例えば、jail 化されたプロセスに jail の chroot から抜け出して移動され
     るディレクトリにカレントワーキングディレクトリを設定するなら、プロセス
     は、jail の外側でファイル空間へのアクセスを得るかもしれません。ディレクト
     リが jail から抜け出して移動されるのではなく、常にコピーされることが勧め
     られます。

     さらに、jail の外側の特権がないユーザが jail の内部の特権があるユーザと協
     力して、それによって、ホスト環境で高い特権を得ることができるいくつかの方
     法があります。jail の root がホスト環境で特権がないユーザにアクセス可能で
     はないことを保証することによって、これらの攻撃のほとんどを軽減することが
     できます。とにかく、一般的な法則として、jail への特権があるアクセス権があ
     る信頼できないユーザは、ホスト環境へのアクセス権を与えられるべきではあり
     ません。

FreeBSD 11.2                    April 30, 2016                    FreeBSD 11.2

Table of Contents

FreeBSD マニュアル検索