A montagem do novo sistema de arquivos afeta montagens de ligação não recursivas?

4

Nem sempre se comportou dessa maneira, mas hoje em dia eu tenho esse comportamento inconsistente. Montagens de ligação não copiam montagens existentes (a menos que você use --rbind ), mas novas montagens (e desmontagens) são copiadas. Então parece um bug, mas o que está causando isso?

# mount --bind / /mnt/tmp
# mount | grep /mnt
/dev/mapper/fedora-root on /mnt/tmp type ext4 (rw,relatime,seclabel,data=ordered)
# mount /var/lib/docker
# mount | grep mnt
/dev/mapper/fedora-root on /mnt/tmp type ext4 (rw,relatime,seclabel,data=ordered)
/dev/mapper/fedora-docker on /mnt/tmp/var/lib/docker type ext4 (rw,relatime,seclabel,data=ordered)

É irritante porque essa costumava ser a maneira mais simples de mover arquivos do sistema de arquivos raiz para um novo ponto de montagem. Seria particularmente conveniente com o SELinux (pelo menos se você usa cp ?), Porque os arquivos seriam rotulados automaticamente, evitando a necessidade de restorecon ou algo parecido.

Isso acontece na versão atual do Fedora Linux. Eu acredito que o Debian também é afetado.

Isso não acontece se eu iniciar o bash sem outros processos, por exemplo, init=/bin/bash . Por isso, não parece ser inerente ao kernel do Linux.

    
por sourcejedi 14.03.2016 / 14:57

2 respostas

1

Isso pode ser "corrigido" executando mount --make-private no ponto de montagem.

A diferença quando se executa bash como init (mesmo quando se usa um initramfs que usa systemd), é que o sistema de arquivos source foi montado como privado. No entanto, a inicialização do sistema completo deve estar executando efetivamente --make-shared em todas as montagens. Você pode ver a diferença olhando findmnt -o +PROPAGATION .

Este é um recurso do systemd adicionado por volta de 2012. Ele foi discutido no incrível wiki do Arch Linux.

link

link

    
por 15.04.2016 / 15:12
1

Não sei por que isso acontece, mas descobri uma maneira de evitar isso. Pelo menos para a maioria dos sistemas de arquivos, você pode montá-los uma segunda vez em vez de usar uma montagem de ligação:

# mount /dev/mapper/fedora-root /mnt/tmp
# mount | grep /mnt/tmp
/dev/mapper/fedora-root on /mnt/tmp type ext4 (rw,relatime,seclabel,data=ordered)
# mount /var/lib/docker
# mount | grep /mnt/tmp
/dev/mapper/fedora-root on /mnt/tmp type ext4 (rw,relatime,seclabel,data=ordered)
    
por 14.03.2016 / 15:28