ユーザーの名前空間内でマウント "/"をバインドできないのはなぜですか?

ユーザーの名前空間内でマウント "/"をバインドできないのはなぜですか?

なぜこれがうまくいかないのですか?

$ unshare -rm mount --bind / /mnt
mount: /mnt: wrong fs type, bad option, bad superblock on /, missing codepage or helper program, or other error.

これらはうまくいきます:

$ unshare -rm mount --bind /tmp /mnt
$ unshare -rm mount --bind /root /mnt
$

$ uname -r  # Linux kernel version
4.17.3-200.fc28.x86_64

答え1

違いは、/子供用のマウントがあることです。ユーザーの名前空間内では、継承されたマウントを子マウントから分離することはできません。より明確な例は、あなたが許可されていないことですumount /proc。そうしないと、突然別のマウントの下に隠されたファイルにアクセスできます。過負荷は時々安全対策として意図的に使用されます。

すべてのサブマウントを保持する再帰バインドマウントを作成できます。

$ unshare -rm mount --rbind / /mnt

関連情報