![可能由于缺乏权限而无法写入 NTFS 数据分区?](https://linux22.com/image/901032/%E5%8F%AF%E8%83%BD%E7%94%B1%E4%BA%8E%E7%BC%BA%E4%B9%8F%E6%9D%83%E9%99%90%E8%80%8C%E6%97%A0%E6%B3%95%E5%86%99%E5%85%A5%20NTFS%20%E6%95%B0%E6%8D%AE%E5%88%86%E5%8C%BA%EF%BC%9F.png)
我在 SSD 上安装了 Ubuntu 18.04,该 SSD 带有更大的独立 HDD,其中 1 个分区包含 Windows 10,另一个 NTFS 分区用于存储各种数据。我已使用 Ubuntu 中的磁盘实用程序将 NTFS 数据分区添加到启动时挂载,它可以自动挂载,但只有读取权限。我希望这个分区也具有来自 Ubuntu 的写入权限。但我不知道该怎么做。(Windows 10 中的快速启动已禁用)
这是我的 fstab 文件(最后一项 dev/sdb4 是 NTFS 数据分区):
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda3 during installation
UUID=0e4a3e97-171f-4c96-9260-e2eb217f4302 / ext4 errors=remount-ro 0 1
# /boot/efi was on /dev/sda2 during installation
#UUID=1022-A48D /boot/efi vfat umask=0077 0 1
# swap was on /dev/sda1 during installation
UUID=c59f57b3-26c6-4fb1-82ae-29e676a973b1 none swap sw 0 0
UUID=1022-A48D /boot/efi vfat defaults 0 1
/dev/sdb4 /mnt/sdb4 auto defaults,x-gvfs-show 0 0
这些是该分区的权限
另外,请解释一下如何在 18.04 中将此驱动器添加到收藏夹(显示正在运行的应用程序或您已标记为收藏的应用程序的侧栏)?
答案1
默认情况下,除非正在安装的分区是 ext2/3/4 分区或可以处理 UNIX 样式权限的分区(例如 Mac HFS/HFS+ 分区),否则驱动器root:root
默认以用户/组所有权的形式安装。exFAT/FAT/FAT32/NTFS 不支持 UNIX 样式权限,因此您不能使用这些类型的权限。
因此,您必须设置权限在山上您需要它们是什么。您可以设置很多不同的选项,但我们将借用我的其他答案关于如何挂载 NTFS,以便任何用户都可以读取但仅适用于您的用户。
首先,我们需要获取一些信息。您需要id
在终端中运行命令。这将为我们提供构建挂载点(即您的uid
和)时所需的一些信息gid
。下面是我自己的笔记本电脑上的此类输出示例,尽管您的笔记本电脑可能有很大差异:
$ id
uid=1000(teward) gid=1000(teward) groups=1000(teward),4(adm),6(disk),20(dialout),24(cdrom),27(sudo),30(dip),46(plugdev),113(lpadmin),128(sambashare),132(sbuild),137(lxd),140(wireshark),998(pgadmin4)
uid
在此特定实例中,与和值相关的是gid
,在我的例子中,这1000
两个值都对应。您的值可能有所不同,但我们需要将这些值保留在手边。
接下来,让我们重新构造您的/etc/fstab
线路。您的系统已完成auto
检测外部磁盘,这很好,但有一个小问题 - 这依赖于操作系统能够确定磁盘上的文件系统类型。所以我们将其替换为ntfs
。
这使得以下内容成为您行的开头/etc/fstab
:
/dev/sdb4 /mnt/sdb4 ntfs
不过,你现在需要做的关键部分是调整选项用于安装。 defaults
是一个很好的起点,但不是您需要的。理想情况下,您应该在选项中包含以下附加选项:
locale=en_US.utf8,windows_names,umask=7000,uid=UID,gid=GID
请注意,您需要用我们之前从 中获得的数字和值替换UID
和行GID
中的uid=
和。gid=
uid
gid
id
因为您可能想知道这些选项的作用,所以让我从我的另一个答案中提取一些解释:
locale=en_US.utf8
- 强制使用 UTF8 美国英语区域设置windows_names
- 强制对分区中的新文件实施 Windows 名称限制。umask=7000
- 基本上是逆 chmod。定义权限不是允许文件。本质上,除了您自己之外的“其他用户”,我不会禁止此处的任何读/写/执行操作,因此挂载位置上的所有文件实际上都会为您的用户获得读、写和执行权限。我不想设置任何特殊位(setuid、setgid、sticky),因此我必须从第一个八位字节中消除它们 - 由于它们的数值总和为“7”,而我禁止这些权限,因此我放置了一个前导 7。uid=1000
,gid=1000
- 将分区挂载到该文件夹中,用户和组所有权的 UID(用户 ID)和 GID(组 ID)为1000
(这是我的用户teward
在 Ubuntu 系统上的用户和组)。
将这些添加到选项行将允许您的外部设备符合 Windows 双启动文件命名要求,并强制执行 UTF8。它还将正确设置权限,以便您的用户只能对分区进行读/写。这使您的/etc/fstab
行如下所示:
/dev/sdb4 /mnt/sdb4 auto defaults,x-gvfs-show,locale=en_US.utf8,windows_names,umask=7000,uid=UID,gid=GID 0 0
我们不需要对最后两个零做任何事情,留在那里就可以了。只需确保将GID
和UID
值更新为实际值即可。
然后,使用sudo umount /dev/sdb4 && sudo mount /dev/sdb4
卸载并使用新选项重新安装分区。现在您应该对整个磁盘具有读/写权限。