Por que não consigo montar o bind “/” dentro de um namespace de usuário?

12

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.

Esses trabalhos 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
    
por sourcejedi 19.07.2018 / 00:22

1 resposta

15

A diferença é que / tem montagens filhas. 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 para umount /proc . Caso contrário, ele poderia conceder acesso a arquivos que estavam ocultos sob outras montagens. Às vezes, as sobremesas 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:

$ unshare -rm mount --rbind / /mnt
    
por 19.07.2018 / 00:26