修正する:これは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
できない項目は依然として変更されます。
答え2
これはシステムをデュアルブートし、オペレーティングシステムの1つがWindowsの場合に発生します。 Windowsオペレーティングシステムには、Windowsをすばやく起動するのに役立つ構成があるため、Windowsオペレーティングシステムはディスクを正しくマウント解除できません。
最初の回避策: Windowsオペレーティングシステムから起動し、次の手順を実行できます。 (Windows 10の場合)
- タスクバーのWindowsボタンを右クリックし、[電源オプション]をクリックします。
- ウィンドウの右側のウィンドウで、[追加の電源設定]をクリックします。
- コントロールパネルの左ペインで、電源ボタンの機能の選択をクリックします。
- 現在利用できない設定の変更をクリックします。
- プロンプトが表示されたら、UACダイアログボックスを受け入れ、クイックスタートオンの選択を解除します。
- 変更を保存し、Linuxディストリビューションから起動します。
これで、サイレントインストールにドライブへの読み取りおよび書き込みアクセス権があります。
2番目の解決策: この問題を解決する2番目の方法は、端末で次のコマンドを使用することです。
sudo apt-get install ntfs-3g -y
sudo ntfsfix /dev/drive-name
上記のコマンドを実行して再度マウントしてみてください。
3番目の解決策: これは機能しますが、Linuxディストリビューションを起動するたびにこれを行う必要があります。