可能由于缺乏权限而无法写入 NTFS 数据分区?

可能由于缺乏权限而无法写入 NTFS 数据分区?

我在 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=uidgidid

因为您可能想知道这些选项的作用,所以让我从我的另一个答案中提取一些解释:

  • 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

我们不需要对最后两个零做任何事情,留在那里就可以了。只需确保将GIDUID值更新为实际值即可。

然后,使用sudo umount /dev/sdb4 && sudo mount /dev/sdb4卸载并使用新选项重新安装分区。现在您应该对整个磁盘具有读/写权限。

相关内容