web-dev-qa-db-ja.com

なぜchrootの代わりにlxcを使うのですか?

1つのubuntuサーバーが3つのアプリをすべて別々のドメインでホストしています。
各アプリには独自の開発者がいます。
アプリ開発者は、linuxの「sftp」グループに属しています。
chrootは、各アプリ開発者にパスワードsftpアクセスを許可します。

/home/app1/prod
/home/app2/prod
/home/app3/prod

Sshd_config

Match Group sftp  
  PasswordAuthentication yes
  ChrootDirectory %h
  ForceCommand internal-sftp
  AllowTcpForwarding no

私たちの懸念は、他の2つのアプリで問題を引き起こす1つのアプリのプログラミングの脆弱性です。

Chrootの代わりにlxcコンテナーを使用する必要がありますか?どうして? lxcコンテナーへの変更はアプリ開発者に透過的ですか?

10
csi

Linuxコンテナー(LXC)は、単一の制御ホスト上で複数の分離サーバーインストール(コンテナー)を実行するためのオペレーティングシステムレベルの仮想化方法です。 LXCは仮想マシンを提供しませんが、独自のプロセスとネットワークスペースを持つ仮想環境を提供します。これはchrootに似ていますが、より多くの分離を提供します。

Linuxコンテナーにはいくつかの機能/利点があります。

利点:

Chroot(chroot jail)と比較して、より良い分離。低オーバーヘッド。 LXCは、RAMおよびハードドライブ領域の点で最小限のリソースを使用し、ゲストOSを仮想マシンにインストールするオーバーヘッドがありません(VMWare/VirtualBox/KVM))。

アプリケーションとサービス(サーバー)はネイティブの速度で実行されます。

LibvirtではLinuxコンテナーがサポートされています。

Linuxコンテナはbtrfsでうまく機能します。

しかし、マイナス面もあります。

Linuxコンテナは、Linuxカーネル上でLinuxプロセスを実行します。つまり、Linux(Ubuntuホスト上のFedoraコンテナー)は実行できますが、他のオペレーティングシステム(BSD/OSX/Windows以外)は実行できません。

コンテナーを構成または管理するためのGUI(グラフィカル)インターフェースはありません。

コンテナをインストールして構成する方法に関するドキュメントは不足しています。コンテナーの構成には、適度な技術知識とスキル(および大きな忍耐力)が必要です。