早期的 Linux 是不能访问并读写 MS 的 NTFS,但是随着微软的协议开源 ntfs-3g 工具诞生,所以现在可以直接使用 ntfs-3g 来读写 MS 的 NTFS 文件系统。
一、安装 ntfs-3g
ntfs-3g是 Linux 读写 MS 的 NTFS 文件系统的必备工具。通常情况下各大 Linux 发行版的默认软件仓库都包含的有,所以可以直接使用对应系统的包管理器直接安装即可。
# Debian 系列(Ubuntu、Linux Mint、Deepin、Elementary OS、Kali)
$ sudo apt-get install ntfs-3g
# Red Hat 系列(centos、Fedora)
$ sudo yum install ntfs-3g
二、编辑修改 /etc/fstab
在编辑前首先要看获得待挂载磁盘的信息
$ sudo fdisk -l
这里我要挂载 /dev/nvme0n1p2、/dev/nvme0n1p4、/dev/nvme0n1p5 到 /media。
此处使用 vim 编辑器来修改。[PS: 没用过 vim 的请移步至自己熟悉的编辑器]
传统的机械硬盘一般是 /dev/sd[a-z][num],而走 nvme M.2 协议的固态就变成了 /dev/nvme[0-9]nlp[0-9]。
$ sudo vim /etc/fstab
上面是按照逻辑磁盘进行的挂在,你也可以使用磁盘的 UUID 来挂载整块物理磁盘(参考截图)。
通常挂载磁盘的时候是会挂载到 /mnt/ 目录下,但是如果经常使用 GUI 的同学细心观察过移动 USB 或者通过 GUI 手动的挂载移动硬盘的话,就会注意到其挂载点是 /media/{$account}/。[即移动设备挂载点]
因为挂载到 /mnt/ 的话默认 GUI 不能直接访问得到,需要一级一级的点开访问的时候相对麻烦,所以此处直接挂载到了 /media/ 目录下。
上面的配置指定了挂载时的状态即权限:文件掩码(umask)、以谁的身份挂载(uid 即 userId, 1000 通常表示系统的第一个普通账户,会话用户可以使用 id 命令查看自己的 uid )、gid 则是 groupId。rw 表示读写模式挂载,ro 则表示只读模式挂载。
通常情况下使用上面的配置即可(当然待挂载的目标磁盘和挂载点需要适自己的情况而定),更多配置请使用 "man fstab" 获取详情。
三、测试
最简单直接的验证方式是,重启 Linux 系统,然后进入挂载点,然后试着能不能通过 Linux 来读写 NTFS 磁盘。
可以看到已经成功自动挂载,并且可以正常读写。而且文件权限也与先前配置的吻合。
--------------------------------------- BUT ---------------------------------------
但是通常情况下你按照上述步骤正确走完之后,你会发现即使你看到的文件权限显示是正确的,但是你依旧只有读取文件的权限,不能再 NTFS 文件磁盘上创建编辑文件。也即自动挂载是只读模式。
此时你会怀疑有毒吧,我明明指定的是 rw,不是 ro。
o(╥﹏╥)o
你可能此时会心生抱怨,MD Linux 真 TM 辣鸡。但是 Linux 表示很无辜,这个锅我不背。至于到底是什么原因?请参考第四部分
四、Windows 的“快速启动”导致 NTFS 一直为只读挂载
Windows 的快速启动会对 NTFS 磁盘在关机状态下进行保护,导致 Linux 在挂载 NTFS 磁盘的时候即使明确指定为读写(rw)模式,也依旧只能是只读,所以要想 Linux 系统挂载时真的可读写,则需要关掉 Windows10 的快速启动选项。具体操作如下:
^_^这个坑很无语吧!