私のArch Linuxシステム(Linuxカーネル3.14.2)では、バインドマウントは読み取り専用オプションを尊重しません
# mkdir test
# mount --bind -o ro test/ /mnt
# touch /mnt/foo
ファイルを作成します/mnt/foo
。の関連エントリ/proc/mounts
は
/dev/sda2 /mnt ext4 rw,noatime,data=ordered 0 0
マウントオプションは、要求されたオプションと一致しませんが、バインドマウントの読み取り/書き込み動作と最初にマウント/dev/sda2
するために使用されるオプションの両方と一致します/
/dev/sda2 / ext4 rw,noatime,data=ordered 0 0
ただし、マウントを再マウントすると、読み取り専用オプションが尊重されます
# mount --bind -o remount,ro test/ /mnt
# touch /mnt/bar
touch: cannot touch ‘/mnt/bar’: Read-only file system
および関連エントリ /proc/mounts/
/dev/sda2 /mnt ext4 ro,relatime,data=ordered 0 0
私が期待するもののように見えます(実際には、test
ディレクトリの完全なパスが表示されることを期待しています)。onの元の/proc/mounts/
マウントのエントリも変更されず、読み取り/書き込みのままです。/dev/sda2/
/
/dev/sda2 / ext4 rw,noatime,data=ordered 0 0
この動作と回避策は少なくとも2008年から知られており、次のマニュアルページに記載されています。mount
ファイルシステムのマウントオプションは、元のマウントポイントのオプションと同じままであり、-binオプションと--bind /-rbindを渡すことで変更できないことに注意してください。マウントオプションは、別のremountコマンドで変更できます。
すべての分布が同じように動作するわけではありません。バインドマウントが読み取り専用でマウントされない場合、Debianは警告を生成しますが、Archはオプションを静かに尊重しないようです
mount: warning: /mnt seems to be mounted read-write.
この振る舞いはDebian LennyとSqueezeで「修正」されたという報告がありますが、普遍的な修正ではないようで、Debian Wheezyでもまだ動作しません。バインドマウントが初期マウントの読み取り専用オプションを尊重するようにすることと困難に関連するものは何ですか?
mount -t bind
とのヘルパースクリプトbugs.launchpad.net/ubuntu/+source/mountall/+bug/519380を
/etc/mtab
。最初のマウントの後、エントリはマウントがrwであると言い、再マウントの後はroと言うので、マウントの状態を正しく報告しています。失敗するのはマウントコマンドだけです。
mount --bind -o ro
メッセージを出し、彼らは両方のつばmount: warning: «mountpoint» seems to be mounted read-write.
Debianが廃棄されるか、またはいくつかの時点でパッチを失ったようですので...再マウントをしかし、動作します。