Fedoraでの名前空間のマウントに関する問題

Fedoraでの名前空間のマウントに関する問題

Linuxで名前空間をマウントする際に奇妙な問題が発生しました。 Fedora 16でカーネル3.2.3-2を実行するX86_64という2つのシステムがあります。tmpfs以下を使用して作成されたサブネームスペースにファイルシステムをマウントしようとしていますunshare

unshare -m /bin/bash

マニュアルページから:

   mount namespace
          mounting and unmounting filesystems will not affect rest of  the
          system (CLONE_NEWNS flag),

あるシステムでは、期待どおりに動作します。つまり、これで始まる場合:

# ls /mnt
file1 file2 file3

次に、サブネームスペースにファイルシステムをマウントしますtmpfs/mnt

# PS1="child# ' unshare -m /bin/bash
child# mount -t tmpfs tmpfs /mnt

の内容は/mntサブネームスペースでマスクされます。

child# ls /mnt
child#

ただし、親エントリには引き続き表示されます。

# ls /mnt
file1 file2 file3

2番目のシステムでは、まったく同じコマンドシーケンスのため、親と子の名前空間の両方にマウントが表示されます。つまり、このunshareコマンドは実際には別々のマウントネームスペースを生成しないようです。

2つのシステム間の実質的な違いはわかりません。 1つはデスクトップ環境を実行しており、もう1つはそうではありません。 SELinux は両方のシステムで無効になります。

これらの動作の違いの原因が何であるかに関する提案を探しています。

答え1

サンドボックスサービスが実行されていることを確認してください。

systemctl status sandbox.service

その場合は、終了して再起動してからやり直してください。これは私にとって効果的です。

答え2

@Johnは答えを得ましたが、2つのシステムが異なる動作をする理由を反映するために、ここにいくつかの追加文書を提供したいと思いました。

スクリプトsandbox()は次のコマンドを実行して、システムのすべてのインストールにフラグを繰り返し設定します/etc/rc.d/init.d/sandboxshared

mount --make-rshared /

スクリプトのコメントはsandbox次のとおりです。

説明:pam_namespaceを使用したいサンドボックス、xguest、およびその他のアプリケーションは、起動時にこのスクリプトを実行する必要があります。サービススクリプトは、実際にサービスを実行せずに別々の名前空間を起動するすべてのアプリケーションで/を共有するように設定します。 sandbox、xguest、またはpam_namespaceを使用していない場合は、このサービスをオフにできます。

ここで参照されているツールはGUIアプリケーションなので、このsandboxスクリプトは実行レベル5でのみアクティブになります。私が作業している2つのシステムの1つはデスクトップです。したがって、ランレベル5から起動し、デフォルトsandboxでスクリプトをインポートします。一方、もう1つはランレベル3で起動するヘッドレスサーバーです。

答え3

同じ問題が引き続き発生します。一つ食べて

mount --make-private /mnt 

前に

mount -t tmpfs tmpfs /mnt

また、seunshareコマンドのソースコードを見て、コマンドがどのように実行されるかを確認してください。

関連情報