¿Por qué no puedo enlazar-montar "/" dentro de un espacio de nombres de usuario?

13

¿Por qué esto no funciona?

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

Estos funcionan 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
fuente

Respuestas:

16

La diferencia es que /tiene monturas infantiles. Dentro de un espacio de nombres de usuario, no está permitido separar los montajes heredados de sus montajes secundarios. Un ejemplo más obvio es que no puedes hacerlo umount /proc. De lo contrario, de repente podría otorgarle acceso a archivos que estaban ocultos debajo de otras monturas. Las sobremontajes a veces se usan deliberadamente como medida de seguridad.

En su lugar, puede crear un montaje de enlace recursivo, que conserva todos los submontajes:

$ unshare -rm mount --rbind / /mnt
sourcejedi
fuente