修正する:これはlibmountのバグが原因であることがわかりましたが、現在はアップストリームが修正されました。https://github.com/karelzak/util-linux/issues/1235
元の質問は次のとおりです。
実行すると、デバイスはmount -r /media/sdd1
オプション-r
が失敗したという警告や表示なしで読み書きをマウントします。
$ egrep sdd1 /etc/fstab
/dev/sdd1 /media/sdd1 auto user,noauto,exec,nodev 0 0
$ umount /media/sdd1
umount: /media/sdd1: not mounted
$ mount -r /media/sdd1
$ touch /media/sdd1/file.tmp
$ umount /media/sdd1
$ mount -r /media/sdd1
$ ls /media/sdd1/file.tmp
/media/sdd1/file.tmp
$ rm -f /media/sdd1/file.tmp
$ umount /media/sdd1
$ mount -r /media/sdd1
$ ls /media/sdd1/file.tmp
ls: cannot access '/media/sdd1/file.tmp': No such file or directory
たとえば、ファイルシステムに書き込まないでください。私が試したファイルシステムの種類はFAT16です(利用可能な場合)。
mount
フラグを削除して常にフラグを使用するように強制することに加えて、フラグを尊重するために私ができる他の方法はありますか?-r
user
sudo
ベストアンサー1
通常のユーザーとして実行すると、カスタムmount
マウントオプションを指定することはできません(実行はマウントオプションをmount -r
追加するのと同じro
)。この場合、すべてのカスタムマウントオプションが削除され、fstab
デフォルトオプション+オプションのみが使用されます。
ランタイム結果sudo mount -r /mnt/test
:
/dev/sdb /mnt/test vfat ro,nosuid,nodev,noexec,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,errors=remount-ro 0 0
一般ユーザーの場合、このオプションが無視されることがわかりますro
。
/dev/sdb /mnt/test vfat rw,nosuid,nodev,noexec,relatime,uid=1000,gid=1000,fmask=0002,dmask=0002,allow_utime=0020,codepage=437,iocharset=ascii,shortname=mixed,errors=remount-ro 0 0
この設定は変更できないため、このro
オプションを指定するfstab
か、rootとしてコマンドを実行する必要がありますmount
。
mount
「無許可」マウントを使用して実行することは通常fstab
非常に制限的であり、これは意味があります。 root以外のユーザーfstab
。この場合、に切り替えるときに権限を「下げる」ため、「安全」にはできますがrw
変更ro
できない項目は依然として変更されます。