はじめに

FreeBSD jailは一般的に、脆弱性などの懸念があるソフトウェアを(ホスト環境に影響を与えることなく)安全に動作させたいとき、システム管理者がシステムの一部の権利を委譲したいときに利用されますが、ホスト環境(以下、便宜上「jailer」と呼びます)のほとんどの機能をjail環境(以下、便宜上「prisoner」と呼びます)に委譲することにより、jailerをきわめてクリーンに保つことができます。

たとえば、ウェブサーバをjailerではなくprisonerに構築することにより、jailerに不要なpackage/ports、その他のファイルをインストールしなくてもすむようになります。

同じ要領でデバイスを制御するようなアプリケーションをprisonerで動かすことも可能ですが、jailのデフォルトの設定では、各prisonerには最低限のデバイスしか許可されていません。

このページでは、特定のprisonerに対し、デバイスへのフルアクセスを許可する方法について説明します。

「devfs.rules」のコピーと編集

FreeBSD 5.x以降では、デバイスのアクセスにはdevfsと呼ばれる特殊なファイルシステムを利用します。
devfsでは、デバイスへのアクセス設定がプロファイルとしていくつか用意されており、prisonerではデフォルトで「devfsrules_jail」というプロフィールを利用しています。

prisonerでこれ以外のプロフィールを利用するために、devfsのプロファイルを規定しているjailerの「/etc/defaults/devfs.rules」を「etc」にコピーし、中身を編集します。

「devfs.rules」のコピー
$ cp -p /etc/defaults/devfs.rules /etc/

上記の手順でコピーしたファイルの末尾に、以下のプロファイルを追加します。

「devfs.rules」への追記
[devfsrules_jail_full_access=5]

devfsのルールはデフォルトで全て許容(ALLOW ALL)ですので、プロファイル名以降に何も追記する必要はありません。
フルアクセスではなく、特定のデバイスへのアクセスのみ許容したい場合には、「man devfs.rules」を確認してみてください。

【FreeBSD 9.0以前】「rc.conf」への追記

続いて、上記の手順で追加したdevfsプロファイルを、特定のprisonerに適用します。
FreeBSD 9.0以前では、jailerの「/etc/rc.conf」に以下の記述を追記します。

「rc.conf」への追記
jail_prisoner1_devfs_enable="YES"
jail_prisoner1_devfs_ruleset="devfsrules_jail_full_access"

【FreeBSD 9.1以降】「jail.conf」への追記

FreeBSD 9.1以降では、jailの設定はjailerの「/etc/jail.conf」にまとめて書くようになりました。
設定を反映させたいprisonerのセクションに、以下の記述を追記してください。

「/etc/jail.conf」への追記
	devfs_ruleset=5;

再起動による設定の反映

上記の通り追記したら、システムを再起動してください。
再起動後、prisoner1で規定されたprisonerにおいて、全てのデバイスが「/dev」にマウントされている筈です。

これで、prisonerにインストールしたmplayerからMP3を再生したり、prisonerにインストールしたffmpegがbktrおよびmixerにアクセスしてTVキャップチャ画像をストリーミングしたりすることができます。

お試しあれ。

変更履歴

2017/10/17

・FreeBSD 9.1以降の「/etc/jail.conf」への設定方法を追記。


あなたの探し物は見つかりましたか?
まさにこれだ
参考になった
ちょっと違う
これじゃない

何かメッセージがあればお願いします

このメッセージを非公開にする

ご注意

・頂いたメッセージは管理者のチェックの後、公開されます。
・メッセージの公開を希望されない場合には、「このメッセージを非公開にする」にチェックを入れてください。
・管理者が不適切と判断したメッセージは公開しませんので、予めご了承ください。


まだ評価がありません

表示できるメッセージはありません。