NAS挂载NTFS格式磁盘无法写入?问题可能在这
NAS挂载NTFS格式磁盘无法写入?问题可能在这
JonyLee前面在写PVE(或其他Linux系统)挂载移动硬盘的时候提到,如果使用NTFS/exFAT文件系统,需在挂载参数中指定驱动(如 ntfs-3g
),否则可能会造成挂载成功的文件只读无法写入,出现Read-only file system
错误。
我前面准备备份PVE的时候就遇到了这个问题,因为大家平时用移动硬盘,还是接Windows电脑比较多,估计大部分人的移动硬盘分区可能都是NTFS,所以这个问题可能会比较普遍。
寻求Deepseek帮助,它解释的还是比较详细的,新手朋友也可以mark一下收藏留着备用。
挂载操作
第一步需要先安装一下ntfs-3g
或者exFAT
驱动,命令如下:
1 | apt install ntfs-3g # NTFS |
然后指定参数挂载。永久挂载时写入fstab文件的示例为:
1 | UUID=XXX /mnt/usb_disk ntfs-3g defaults,uid=0,gid=0,umask=007 0 0 |
参数解释
写入的格式前面也讲了,其中的ntfs-3g
,是指定分区文件系统,如果是exFAT文件系统,需要改成exfat
。
关于后面几个参数 uid=0
, gid=0
, umask=007
,可以控制挂载后文件的默认权限和归属。这些参数的具体含义和作用如下:
uid=0
- 含义:设置挂载后文件和目录的 所有者用户ID(User ID)。
0
是 Linux 中root
用户的默认 UID。 - 作用:所有挂载的 NTFS 文件和目录的默认所有者会被设为
root
。如果没有这个参数,默认所有者可能是挂载时的当前用户(取决于系统配置)。
gid=0
- 含义:设置挂载后文件和目录的 所属组ID(Group ID)。
0
是 Linux 中root
组的默认 GID。 - 作用:所有挂载的 NTFS 文件和目录的默认所属组会被设为
root
。如果没有这个参数,默认所属组可能与挂载用户的组相关。
**umask=007
- 含义:设置挂载后文件和目录的 权限掩码(Umask),用于屏蔽默认权限。
umask
值的计算方式为:默认权限(如 777) - umask 值 = 实际权限
。007
对应 所有者(Owner)和所属组(Group)拥有完整权限,其他用户(Others)无权限。
这个可能对于新手来说有点不太好懂,知道怎么用就行了。
那么采用文章开头的那种参数挂载,
1 | UUID=XXXX /mnt/ntfs_disk ntfs-3g uid=0,gid=0,umask=007 0 0 |
效果就是:
- 挂载的磁盘所有文件和目录的所有者为
root
(uid=0
)。 - 挂载的磁盘所有文件和目录的所属组为
root
(gid=0
)。 - 权限为
660
(文件)和770
(目录),即仅root
用户和root
组可读写,其他用户无权限。
活学活用
场景1:允许所有用户读写
- 参数:
uid=1000,gid=1000,umask=000
, 假设用户 UID=1000(普通用户),权限为777
(所有用户可读写)。 - 风险:权限过于开放,可能引发安全问题。
场景2:仅特定用户组访问
- 参数:
gid=1001,umask=002
,设置所属组为 GID=1001(如users
组),权限为775
(组内用户可读写)。- 需要将用户加入该组:
usermod -aG 1001 username
。
- 需要将用户加入该组:
场景3:严格权限控制
- 参数:
uid=0,gid=0,umask=077
,仅root
用户可读写(权限600
/700
),其他用户无权限。
验证权限
挂载后可通过以下命令检查权限:
1 | # 查看挂载点权限 |
注意事项
- NTFS 权限与 Linux 原生权限的差异:
NTFS 本身不支持 Linux 权限模型,这些参数仅是ntfs-3g
驱动模拟的权限控制。 - Windows 兼容性:
在 Windows 中修改 NTFS 文件后,Linux 挂载时的权限可能需重新应用。 - 安全建议:
避免使用过度开放的权限(如umask=000
),尤其是对可移动存储设备。
评论
匿名评论隐私政策