Filesystems

mount -r (只讀) 掛載讀寫

  • January 25, 2021

**更新:**事實證明,這是由於 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

以普通使用者身份執行mount不允許指定自定義掛載選項(執行mount -r相當於添加ro掛載選項),在這種情況下會刪除所有自定義掛載選項,僅使用預設選項 + 選項 from 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選項或以 root 身份fstab執行命令。mount

“非特權”掛載通常具有非常嚴格的限制,mount而且fstab它是有道理的——您不希望允許非 root 使用者更改fstab. 在這種情況下,它可能是“安全的”,因為您在從rwto切換時“降低”了您的權限,ro但它仍然在更改您不允許更改的內容。

引用自:https://unix.stackexchange.com/questions/561957