カーネル: 名前空間のサポート

カーネル: 名前空間のサポート

Linuxカーネルの「名前空間サポート」機能が正確に何を意味するのかを知りたいです。私はカーネル3.11.1(現在最新の安定カーネル)を使用しています。

無効にすることを選択した場合、システムに変更が表示されますか?

誰かが名前空間を使用することにした場合、NAMESPACES=Yカーネルでコンパイルするだけで十分ですか、それともユーザースペースツールも必要ですか?

ベストアンサー1

つまり、名前空間は、より大きなLinuxシステム内に仮想Linuxシステムを構築する方法を提供します。これは、権限のないプロセスで実行される仮想マシンを実行するのとは異なります。つまり、仮想マシンはホストに単一のプロセスとして表示され、名前空間内で実行されているプロセスはまだホストシステムで実行されます。

より大きなシステム内で実行されている仮想マシンを呼び出します。コンテナ。コンテナの概念は、コンテナ内で実行されるプロセスが、自分がシステムの唯一のプロセスであると考えるということです。具体的には、コンテナ内の root ユーザーはコンテナ外の root 権限を持っていません (これは十分に新しいカーネルバージョンでのみ)。

名前空間は一度に1つの機能を仮想化します。名前空間タイプのいくつかの例は次のとおりです。

  • ユーザーネームスペース- これにより、プロセスは名前空間の内部と外部で他のユーザーとして実行されているかのように動作できます。特に、名前空間内でUID 0で実行されるプロセスは、同じ名前空間で実行されるプロセスに対してのみスーパーユーザー権限を持ちます。
    Linuxカーネル3.8以降、権限のないユーザーはユーザーの名前空間を作成できます。これにより、一般ユーザーはルートに予約されている機能(ルーティングテーブルの変更や機能設定など)を使用できます。
  • PID名前空間- PIDネームスペース内のプロセスは、ネームスペース外のプロセスを終了または追跡できません。
  • マウントネームスペース- これにより、プロセスはファイルシステムの独自のビューを持つことができます。ビューは、ファイルシステムの特定の部分を隠し、特定の部分を再構成してディレクトリツリーが別の場所に表示されるようにする部分ビューです。マウントネームスペースは、既存のUnix機能を要約します。chroot、プロセスを特定のサブツリーに制限できます。
  • ネットワークネームスペース- ネットワークリソース(ネットワークデバイス)を分離してプロセスの分離を強化します。

ネームスペースはカーネルを使用してネームスペース間の分離を提供します。この問題を解決するのは非常に複雑なため、セキュリティホールがまだ存在する可能性があります。この機能を有効にしない主な理由は、セキュリティの脆弱性のリスクによるものです。これを有効にしないもう1つの理由は、組み込みデバイス用の小さなカーネルを作成することです。一般的なサーバーまたはワークステーションにインストールされている一般的なカーネルでは、他の完全なカーネル機能と同様に名前空間を有効にする必要があります。

名前空間を使用するアプリケーションはまだほとんどありません。以下は一部です。

  • LXC完璧です。それにかかっているcgroup勇気を提供してください。
  • 仮想サンドボックス更新されたサンドボックスプロジェクト。
  • 最新バージョンクロム可能であれば、サンドボックスに名前空間を使用することもできます。
  • これuWSGIクラスタアプリケーションフレームワーク名前空間の使用サンドボックスを改善するために使用されます。

バラよりMichael KerriskのLWN記事シリーズより多くの情報を知りたいです。

おすすめ記事