私は動的ウェブサイトを提供するためにFreeBSDに複数の刑務所を設定しています。ホスティング環境には、HTTPホストヘッダーに基づいて接続を予約するWebサーバーがあり、各刑務所には各サイトのデータを含む/var/lib/www-dbディレクトリがあります。
問題は、mount_nullfs 'でテンプレート刑務所を実際の刑務所ディレクトリに配置して複数の刑務所を作成していることです。そして/var/lib/www-dbを別々にマウントしたにもかかわらず、刑務所はまだ/var/logと他の/を共有します。 var階層のディレクトリ。
私は/var/logや他のディレクトリを共有することがややセキュリティの問題であることを知っているので、私の質問は次のようになります。
- 複数の刑務所を建設するベストプラクティスは何ですか?
修正する
私はZFSで作業しました。刑務所に/var/lib/www-dbとしてマウントするサブディレクトリを持つ2つの大きなディスクで構成されたzpoolがありました。
答え1
FreeBSD の「テンプレート」をそのまま維持しながら、刑務所でルートディレクトリ (/var および /tmp を含む、両方とも重要) を修正できる簡単なソリューションがあります。
プログラム:
ここに示す刑務所のルートディレクトリを作成します。
<jail-root>
<jail-root>
Unionfs "下"を使用してテンプレートディレクトリをマウントするには、次のコマンドを使用します。mount_unionfs -o below <template> <jail-root>
このようにして、各刑務所には利用可能な完全なルート階層があり、あまりにも多くのストレージスペースを消費せずに徐々に作成できます。
引用する
いくつかの特別な場合を除いて、Uniondir でオブジェクトを作成または変更する要求は上位レイヤに渡されます。下位階層に存在するファイルを開いて書き込もうとすると、ファイル全体が上位階層にコピーされた後に親コピーが開きます。同様に、子ファイルをゼロ長に切り捨てようとすると、上位階層に空のファイルが生成されます。最終的には、サブレイヤの変更が必要な他のタスクは、EROFSのために失敗します。