Sul mio sistema Arch Linux (Linux Kernel 3.14.2) i bind mount non rispettano l'opzione di sola lettura
# mkdir test
# mount --bind -o ro test/ /mnt
# touch /mnt/foo
crea il file /mnt/foo
. La voce pertinente /proc/mounts
è
/dev/sda2 /mnt ext4 rw,noatime,data=ordered 0 0
Le opzioni di montaggio non corrispondono le mie opzioni richieste, ma fanno corrispondere sia il comportamento di lettura / scrittura del bind montare e le opzioni utilizzate per originariamente montare /dev/sda2
su/
/dev/sda2 / ext4 rw,noatime,data=ordered 0 0
Se, tuttavia, rimonto il supporto, rispetta l'opzione di sola lettura
# mount --bind -o remount,ro test/ /mnt
# touch /mnt/bar
touch: cannot touch ‘/mnt/bar’: Read-only file system
e la relativa voce in /proc/mounts/
/dev/sda2 /mnt ext4 ro,relatime,data=ordered 0 0
sembra quello che potrei aspettarmi (anche se in verità mi aspetterei di vedere il percorso completo della test
directory). Anche la voce /proc/mounts/
per il montaggio originale di /dev/sda2/
on /
rimane invariata e rimane in lettura / scrittura
/dev/sda2 / ext4 rw,noatime,data=ordered 0 0
Questo comportamento e la soluzione sono noti almeno dal 2008 e sono documentati nella pagina man dimount
Notare che le opzioni di mount del filesystem rimarranno le stesse di quelle sul punto di mount originale e non possono essere cambiate passando l'opzione -o insieme a --bind / - rbind. Le opzioni di montaggio possono essere modificate da un comando di rimontaggio separato
Non tutte le distribuzioni si comportano allo stesso modo. Arch sembra non riuscire a rispettare silenziosamente le opzioni mentre Debian genera un avviso quando il mount di bind non ottiene mount di sola lettura
mount: warning: /mnt seems to be mounted read-write.
Ci sono rapporti secondo cui questo comportamento è stato "risolto" in Debian Lenny e Squeeze sebbene non sembri essere una correzione universale né funziona ancora in Debian Wheezy. Qual è la difficoltà associata a far sì che mount bind rispetti l'opzione di sola lettura sul mount iniziale?
mount -t bind
e uno script di supporto su bugs.launchpad.net/ubuntu/+source/mountall/+bug/519380
/etc/mtab
. Dopo il mount iniziale la voce dice che il mount è rw e dopo il rimontaggio dice ro, quindi riporta lo stato del mount correttamente. È solo il comando mount che fallisce.
mount --bind -o ro
, entrambi hanno sputato un messaggio mount: warning: «mountpoint» seems to be mounted read-write.
Quindi sembra che Debian abbia abbandonato o perso la patch ad un certo punto ... Rimonta funziona, però.