Qual é a diferença entre ln -s e mount --rbind?

7

Qual é a diferença entre:

ln -s /mnt/extra/home /

e

mkdir /home
mount --rbind /mnt/extra/home /home
    
por NerdOfLinux 16.11.2017 / 23:47

3 respostas

11

mount --rbind faz uma montagem de ligação recursiva; ou seja, a hierarquia do sistema de arquivos montada em /mnt/extra/home também estará acessível por meio de /home .

Na prática, a principal diferença entre a solução ln -s e a solução mount --rbind é que com ln -s /home é um link simbólico enquanto com mount --rbind é um diretório; isso afeta ferramentas como find , df , test / [ etc.

Além disso, o ln -s falhará se /home existir, enquanto mount --rbind falhará se não existir ou não for um diretório vazio.

O comentário de Mark abaixo também é importante: ln -s precisa de um sistema de arquivos gravável no qual criar o link simbólico.

    
por AlexP 16.11.2017 / 23:57
6

Nesse caso, tanto uma montagem de ligação quanto uma ligação simbólica funcionarão de maneira semelhante para a maioria das finalidades, mas elas têm diferenças importantes.

Um link simbólico é um pouco mais leve. Você pode ter centenas ou milhares de links simbólicos sem que isso seja um grande problema de gerenciamento. Eles se sentam no sistema de arquivos em vez de exigir uma configuração especial no nível do sistema.

Os links simbólicos podem ser copiados e copiados corretamente por ferramentas como cp e rsync. Ou seja, as ferramentas podem reconhecer e copiar o link simbólico, garantindo que na restauração em algum outro lugar o link seja restaurado e aponte para o destino correto. Tudo funcionará "corretamente" por padrão. Por outro lado, ao fazer backup ou copiar uma montagem de ligação, a montagem será tratada de forma transparente, fazendo com que os próprios arquivos sejam copiados, o que pode levar à duplicação se você também obtiver os mesmos arquivos em outro local e exigir trabalho extra para replicar a montagem de ligação no destino.

Links simbólicos podem ser modificados ou excluídos por qualquer usuário que tenha acesso ao link, por isso é fácil torná-lo apenas para o superusuário ou abri-lo para um usuário específico. Montagens de ligação só podem ser configuradas ou modificadas pelo superusuário.

    
por thomasrutter 17.11.2017 / 00:11
0

Mais uma diferença é que o link simbólico é simbólico , isto é, ele apenas faz referência a um caminho - uma cadeia de caracteres e é desreferenciado toda vez que você abre um subdiretório / arquivo no caminho de destino. Em contraste, mount --rbind se comporta mais como um link físico, para o qual o caminho não é reavaliado em cada desreferência.

Isso faz diferença em alguns cenários, como chroot . Por exemplo. vsftpd chroot s no diretório inicial da conta de usuário do FTP que você faz login. Assim, se você colocar um link simbólico nesse diretório, vsftpd não poderá cancelar a referência e, assim, o destino não será acessível via FTP. Se você, em vez disso, fizer mount --rbind , então vsftpd acessará a subárvore como se ela estivesse realmente lá, da mesma forma que quando você vinculou um arquivo a ele por um link.

    
por Ruslan 17.11.2017 / 13:57