bind mount を ro に
Linux のどっかのバージョンから mount -o bind
した後に mount -o remount,ro
すれば bind mount 先だけを read-only に出来るようになった。
ということで:
# mount -o bind /usr/local /mnt/usr/local
# mount -o remount,ro /mnt/usr/local
# touch /mnt/usr/local/t
touch: cannot touch `/mnt/usr/local/t': Read-only file system
# touch /usr/local/t
touch: cannot touch `/usr/local/t': Read-only file system
...あれ?
何かよく分からんけど、環境によっては mount -o remount,ro,bind olddir newdir
ってやらんといかんみたい。
# mount -o bind /usr/local /mnt/usr/local
# mount -o remount,ro,bind /usr/local /mnt/usr/local
# touch /mnt/usr/local/t
touch: cannot touch `/mnt/usr/local/t': Read-only file system
# touch /usr/local/t
#