No meu sistema Arch Linux (Linux Kernel 3.14.2), as montagens de ligação não respeitam a opção somente leitura
# mkdir test
# mount --bind -o ro test/ /mnt
# touch /mnt/foo
cria o arquivo /mnt/foo
. A entrada relevante em /proc/mounts
é
/dev/sda2 /mnt ext4 rw,noatime,data=ordered 0 0
As opções de montagem não correspondem às minhas opções solicitadas, mas correspondem ao comportamento de leitura / gravação da montagem de ligação e às opções usadas para montar originalmente /dev/sda2
no/
/dev/sda2 / ext4 rw,noatime,data=ordered 0 0
Se, no entanto, eu remontar a montagem, ela respeitará a opção somente leitura
# mount --bind -o remount,ro test/ /mnt
# touch /mnt/bar
touch: cannot touch ‘/mnt/bar’: Read-only file system
e a entrada relevante em /proc/mounts/
/dev/sda2 /mnt ext4 ro,relatime,data=ordered 0 0
parece com o que eu poderia esperar (embora, na verdade, eu esperasse ver o caminho completo do test
diretório). A entrada /proc/mounts/
para a montagem original de /dev/sda2/
on /
também não é alterada e permanece de leitura / gravação
/dev/sda2 / ext4 rw,noatime,data=ordered 0 0
Esse comportamento e a solução alternativa são conhecidos desde pelo menos 2008 e estão documentados na página de manual domount
Observe que as opções de montagem do sistema de arquivos permanecerão as mesmas do ponto de montagem original e não poderão ser alteradas passando a opção -o junto com --bind / - rbind. As opções de montagem podem ser alteradas por um comando de remontagem separado
Nem todas as distribuições se comportam da mesma forma. O Arch parece silenciosamente falhar em respeitar as opções, enquanto o Debian gera um aviso quando o mount bind não obtém o mount somente leitura
mount: warning: /mnt seems to be mounted read-write.
Há relatos de que esse comportamento foi "corrigido" no Debian Lenny e Squeeze, embora não pareça ser uma correção universal nem ainda funcione no Debian Wheezy. Qual é a dificuldade associada ao fazer com que a montagem de ligação respeite a opção somente leitura na montagem inicial?
mount -t bind
um script auxiliar em bugs.launchpad.net/ubuntu/+source/mountall/+bug/519380
/etc/mtab
. Após a montagem inicial, a entrada diz que a montagem é rw e após a remontagem diz ro, portanto está relatando o estado da montagem corretamente. É apenas o comando mount que falha.
mount --bind -o ro
, ambas emitem uma mensagem mount: warning: «mountpoint» seems to be mounted read-write.
. Parece que o Debian caiu ou perdeu o patch em algum momento ... funciona, no entanto.