Por que isso não funciona?
$ unshare -rm mount --bind / /mnt
mount: /mnt: wrong fs type, bad option, bad superblock on /, missing codepage or helper program, or other error.
Estes funcionam bem:
$ unshare -rm mount --bind /tmp /mnt
$ unshare -rm mount --bind /root /mnt
$
$ uname -r # Linux kernel version
4.17.3-200.fc28.x86_64
A diferença é que
/
tem montagens filho. Dentro de um namespace de usuário, você não tem permissão para separar montagens herdadas de suas montagens filhas. Um exemplo mais óbvio é que você não tem permissão paraumount /proc
. Caso contrário, de repente, ele pode conceder acesso a arquivos que estavam ocultos sob outras montagens. As sobremontagens às vezes são usadas deliberadamente como medida de segurança.Você tem permissão para criar uma montagem de ligação recursiva, que preserva todas as submontagens: