DragonFly BSDでjailを構築してみます。前回のDragonFly BSDでjail環境を作る その2からの続きです。
ここではjail側の設定を行います。また、/usr/jail/happyにjailツリーを用意したものとして説明しています。
rc.confの設定
jailツリーのインストール直後には/etc/rc.confが存在しません。 以下の内容で新規作成してください。 ホストからvi /usr/jail/happy/etc/rc.confなどとしてjail内に/etc/rc.confを作成します。
sshd_enable="NO"
usbd_enable="NO"
moused_enable="NO"
sendmail_enable="NONE"
rpcbind_enable="NO"
network_interfaces=""
resolv.confの設定
jailからネットワークの名前解決ができるように/etc/resolv.confを作成します。 特別なことをしないのであれば、ホストのファイルを流用できるでしょう。以下のようにして、ホストのファイルをコピーします。
# cp /etc/resolv.conf /usr/jail/happy/etc/
jail起動
では、jailを起動してみましょう。手動でjailを起動するには/etc/rc.d/jailを使用します。 以下のように、/etc/rc.d/jailに起動を指示するstartとjail名を引数で渡します。
# /etc/rc.d/jail start happy
Configuring jails:.
Starting jails:/etc/rc.d/jail: INFO: Mounting devfs on /usr/jail/happy/dev
/etc/rc.d/jail: INFO: Mounting procfs onto /usr/jail/happy/proc
happy.smile.
起動できれば、上の例のように起動したjailのホスト名(ここではhappy.smile.)が表示されます。
jailの使用
今回の例では、jailでsshdが動作していません。そのため、jlsおよびjexecを使用してjailへアクセスします。 ここでは説明のため、ホストのプロンプトをhost#、jailのものをjail#とします。
まずは、jlsを使用してみましょう。引数なしで起動してみてください。
host# jls
JID Hostname Path IPs
1 happy.smile /usr/jail/happy 192.168.1.232
起動しているjailの一覧が表示されます。 左から順番に、jailのID、ホスト名、jailツリーの場所、IPアドレスとなっています。
ここで表示されたjailのIDをもとに、jexecコマンドでjail内のプロセスを起動できます。 たとえばhostnameコマンドを、IDが1のjail内で実行するのであれば、次のようにします。
host# jexec 1 hostname
happy.smile
起動するコマンドをシェルにすれば、jail内でrootユーザとして振る舞えます。
host# jexec 1 sh
jail# hostname
happy.smile
これでjailが使用できるようになりました。 設定やプログラムのインストールを自由に行ってください。
[つづくかも]