Como criar um link somente leitura para um diretório?

18

Um dos meus scripts cria dinamicamente um link simbólico assim:

ln -s /home/hosting/projects/images /home/hosting/projects/demo/images

Como posso fazer para que o acesso através do link seja somente leitura?

Elmor
fonte

Respostas:

18

Você pode criar uma montagem de ligação somente leitura .

mount --bind /path/to/source/ /path/to/dest/
mount -o bind,remount,ro /path/to/dest

Sim, isso deve ser feito em duas etapas nos kernels após os kernels Linux 2.6.25 (veja o link acima para saber o porquê).

Ou, alternativamente, como um /etc/fstabexemplo de linha ref :

/path/to/source/ /path/to/dest/ none bind,ro

Em qualquer uma das abordagens, uma montagem de ligação vive na camada do sistema de arquivos virtual (VFS), portanto, isso não é específico a nenhum sistema de arquivos, nem você realmente 'monta' nada. Então, basicamente, isso está criando um tipo de link simbólico para você, mas isso não aparece como tal.

E para responder ao comentário abaixo sobre perda de dados ... não, essas instruções não removem nenhum arquivo. Caso você tenha arquivos presentes no caminho de destino, essa montagem ficará sobre ela. Apenas desmonte para poder listar seus arquivos no caminho no sistema de arquivos abaixo. Melhor ainda; em geral, evite montar em cima de um caminho de destino não vazio.

gertvdijk
fonte
11
Seja cuidadoso. Siga estas etapas e removeu todo o diretório de backup e não o gravou pelo meu daemon de backup.
você pode fornecer esta solução como uma entrada fstab?
Gargalo 15/01/16
@Throoze Lá vai você;)
gertvdijk
O comando remount provavelmente deve ser: mount -o bind,remount,ro /path/to/destConsulte lwn.net/Articles/637501 desse mesmo encadeamento.
anon
mount -o remount,ro /path/to/destdá-me o seguinte erro: mount: mount point is busy.@gertvdijk
alper
2

para montar o bind somente leitura com um comando:

mount --bind -r /path/to/source/ /path/to/dest/

desmontar

umount /path/to/dest/
Shimon Doodkin
fonte