解决Ubuntu 20.04挂载NTFS分区不能写入(只读权限)的问题【转载】

背景:电脑安装了window 10和ubuntu 20.04双系统,自ubuntu某次更新之后,发现无法像以前一样随意修改windows磁盘中的数据,只能读取无法写入。总结原因,这是windows分区挂载设置不当造成的,解决方案转载于下(内容略有修改):

1.查看分区:sudo fdisk --list

2.打开/etc/fstab:sudo vi /etc/fstab,以我自己的情况为例,添加以下内容并保存:

该命令共有6个参数,以空格分割,其中:

/dev/sda1表示你要挂载的分区,根据你查看分区的结果填写。

/media/D表示挂载点,根据你自身需求填写。

ntfs-3g表示待挂载分区使用的文件系统。分为以下几种情况:

NTFS:填写ntfs-3g或ntfs(在Ubuntu 20.04中ntfs是链接到ntfs-3g的)。

FAT32或FAT16或FAT:填写vfat.

自动检测文件系统:填写auto.

usr ... fmask=111为一个参数,各项之间用,分割,用于设置挂载分区的特性:

auto和 noauto: 这是控制设备是否自动挂载的选项。auto是默认选择的选项,这样,设备会在启动或者你使用mount -a命令时按照fstab的内容自动挂载。如果你不希望这样,就使用noauto选项,如果这样的话,你就只能明确地通过手工来挂载设备。

user和 nouser:这是一个非常有用的选项,user选项允许普通用户也能挂载设备,而nouser则只允许root用户挂载。nouser是默认选项,这也是让很多 Linux新手头疼的东西,因为他们发现没有办法正常挂载光驱,Windows分区等。如果你作为普通身份用户遇到类似问题,或者别的其他问题,就请把 user属性增加到fstab中。

exec和 noexec: exec允许你执行对应分区中的可执行二进制程序,同理,noexec的作用刚好相反。如果你拥有一个分区,分区上有一些可执行程序,而恰好你又不愿意,或者不能在你的系统中执行他们,就可以使用noexec属性。这种情况多发生于挂载Windows分区时。exec是默认选项,理由很简单,如果 noexec变成了你/根分区的默认选项的话……

rw和ro:让该分区以可擦写或者是只读的型态挂载上来,如果你想要分享的数据是不给用户随意变更的, 这里也能够配置为只读。则不论在此文件系统的文件是否配置 w 权限,都无法写入!

sync和 async:对于该文件系统的输入输出应该以什么方式完成。sync的意思就是同步完成,通俗点讲,就是当你拷贝一个东西到设备或者分区中时,所有的写入变化将在你输入cp命令后立即生效,这个东西应该立马就开始往设备或者分区里面拷贝了。而如果是async,也就是输入输出异步完成的话,当你拷贝一个东西到设备或者分区中时,可能在你敲击cp命令后很久,实际的写入操作才会执行,换句话说,就是进行了缓冲处理。有时候这种机制蛮不错的,因为sync会影响你系统的运行速度,但是这也会带来一些问题。想一想,当你希望将一个文件拷贝到u盘上时,你执行了cp 命令,却忘记执行umount命令(它会强行将缓冲区内容写入),那么你拷贝的文件实际上并没有在u盘上面。如果你是使用的mv命令,而你又很快将u盘拔出……恭喜你,文件会从这个星球上消失的。因此,虽然async是默认属性,但是对于u盘,移动硬盘这种可移动存储设备,最好还是让他们使用sync选项。

suid和nosuid:该文件系统是否允许 SUID 的存在?如果不是运行文件放置目录,也可以配置为 nosuid 来取消这个功能!

dev和nodev:是否支持在此文件系统上使用设备文件

defaults:同时具有 rw, suid, dev, exec, auto, nouser, async 等参数。 基本上,默认情况使用 defaults 配置即可!

以上其实是 mount 命令的参数,在 Ubuntu 20.04 中配合ntfs-3g命令的参数,还有下述选项:

umask:这个是用来指定挂载windows分区后文件的默认权限(事实上,是默认没有的权限,即umask参数指出的值挂载后的文件将不具有),因为Windows分区里面的文件是没有权限这个概念的,所以要手动指定默认权限,于是,指定umask为000,就是不排除任何,即具有所有权限。

fmask:针对文件进行设置,意义和用法同umask.

dmask:针对文件夹进行设置,意义和用法同umask.

umask不区分文件和文件夹,故使用fmask和dmask设置它们不同的权限,将目录设为可执行,文件设为不可执行。在这里111代表可读可写不可执行权限。

0指示能否被 dump 备份命令作用。dump 是一个用来做为备份的命令, 我们可以透过 fstab 指定哪个文件系统必须要进行 dump 备份! 0 代表不要做 dump 备份, 1 代表要每天进行 dump 的动作。 2 也代表其他不定日期的 dump 备份动作, 通常这个数值不是 0 就是 1.

0指示是否以 fsck 检验扇区。启动的过程中,系统默认会以 fsck 检验我们的 filesystem 是否完整 (clean)。 不过,某些 filesystem 是不需要检验的,例如内存置换空间 (swap) ,或者是特殊文件系统例如 /proc 与 /sys 等等。所以,在这个字段中,我们可以配置是否要以 fsck 检验该 filesystem 喔。 0 是不要检验, 1 表示最早检验(一般只有根目录会配置为 1), 2 也是要检验,不过 1 会比较早被检验啦! 一般来说,根目录配置为 1 ,其他的要检验的 filesystem 都配置为 2 就好了。

3.重新加载/etc/fstab:sudo mount -a 或者重启电脑。

_____

如果经过以上设置,挂载的NTFS分区依然是只读权限,不能写入,最有可能的情况是:

Windows系统开启了快速启动。这种情况一般出现在Ubuntu与Win10共存的计算机上,需要在Win10的电源管理中关闭快速启动。

在启动Ubuntu系统之前,与之共存的Windows系统执行过强制关机。这种情况需要在Ubuntu系统中修复文件系统:sudo ntfsfix /dev/***,/dev/***表示待挂载的受到Windows强制关机影响的NTFS分区。

其实无论是Windows开启了快速启动还是执行了强制关机,其本质都是待挂载的NTFS分区中存放了Widnows未释放缓存,导致Ubuntu无法写入。只要掌握了这个原则,其它类似的情况就好解决了。

_____

参考文献:

Linux文件之/etc/fstab
http://blog.itpub.net/26736162/viewspace-2153116/

ubuntu开机自动挂载的ntfs硬盘的权限问题
https://www.cnblogs.com/jpfss/p/11107980.html

鸟哥的Linux私房菜 第八章、Linux 磁盘与文件系统管理
http://cn.linux.vbird.org/linux_basic/0230filesystem_4.php

原文链接:https://blog.csdn.net/wwlswj/article/details/106479600

——END——