Pourquoi ne puis-je pas monter un "/" dans un espace de noms utilisateur?

13

Pourquoi ça ne marche pas?

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

Cela fonctionne bien:

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

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

Réponses:

16

La différence est qu'il /a des montures pour enfants. Dans un espace de noms utilisateur, vous n'êtes pas autorisé à séparer les montages hérités de leurs montages enfants. Un exemple plus évident est que vous n'êtes pas autorisé à le faire umount /proc. Sinon, cela pourrait vous accorder soudainement l'accès à des fichiers cachés sous d'autres montures. Les sur-montages sont parfois utilisés délibérément comme mesure de sécurité.

Vous êtes autorisé à créer un montage de liaison récursif à la place, qui préserve tous les sous-montages:

$ unshare -rm mount --rbind / /mnt
sourcejedi
la source