NTFS 数据分区无法被其他用户访问,除非在注销之前在当前用户会话中卸载

Ram*_*rid 1 permissions mount ntfs multiple-users

我使用的是 ubuntu 14.04,想在我的管理员帐户旁边创建另一个帐户,供我的家人使用,以免打扰我的工作。问题是我无法授予其他帐户访问包含数据的 NTFS 分区的权限,我已经尝试了论坛上提到的一些解决方案,但没有任何效果。机器重新启动时首先登录的用户似乎仍然保留了该分区,并禁止任何其他用户访问它,即使在他注销后也是如此。我发现唯一有效的技巧是在注销当前用户之前卸载该分区。这样,下一个要登录的人将挂载该分区并访问它。

我的问题确实是,这是否是分区访问在不同计算机用户之间工作的方式,我的意思是卸载您正在使用的任何分区,以便其他用户能够在您之后使用它,或者我无法正确授予对该分区的访问权限分割?

Tho*_*ard 5

如果您在计算机开启时始终为所有用户始终需要此功能,那么实现此目的的最简单且可能最好的方法是定义安装点以及在/etc/fstab. 通过这样做,您可以在安装分区/驱动器时自动提供访问权限。

这是一种更高级的做法,但如果具有 NTFS 分区的设备始终连接到计算机,这将消除您遇到的一些麻烦,并有效地自动提供围绕数据的安全控制,并允许我们实际上随着时间的推移修改控件,而不必每次都使用不同的选项或用户手动重新安装。

我在这个答案中还有其他一些部分。

  • 第一个是我的 NTFS 条目之一fstab,它适用于我的 Ubuntu 计算机上的 Windows 分区(我是计算机上的唯一用户)。
  • 第二部分记录了我的fstab条目,并解释了安装选项。
  • 第三部分为您提供了我建议的过程,用于提供对分区的“安全”访问、启动时自动挂载以及适合您的情况的一组合适的挂载选项(包括创建一个“用户组”,您可以在其中添加有权访问分区的用户)已安装分区上的数据。该用户组充当“访问控制”,所应用的特定文件权限也是如此。)
  • /etc/fstab如果您在第三部分中听了我的讲话,第四部分将为您提供一条可以使用的潜在路线。

(一)我的fstab参赛作品

不幸的是,我的笔记本电脑上有这样一个 NTFS 分区,我必须使其对自己和系统服务可读......

# Windows Partition - targetted for /media/win7
UUID=UUIDOFPARTITION  /media/win7    ntfs-3g     defaults,locale=en_US.utf8,windows_names,umask=7000,uid=1000,gid=1000,user  0   0
Run Code Online (Sandbox Code Playgroud)

这行是什么意思?#嗯,前面有 a 的第一行是注释。第二行是更重要的一点,它是实际的fstab条目:

  1. 我通过 UUID 来标识分区,UUID 是标识分区的字符串。您可以通过执行以下操作来获取任何给定分区的 UUID sudo blkid /dev/sda1(替换/dev/sda1为分区的实际 ID,因此,如果它位于第二个磁盘上并且是第二个磁盘分区表中的第三个分区,那么可能/dev/sdb3会在此命令中。我剥离去掉UUID=我条目中该行的引号fstab。)
  2. 我在启动时安装它/media/win7
  3. 它是一个 NTFS 分区,所以我传递给fstabntfs-3g选项,以便它知道它是 NTFS。
  4. 我为它提供了默认的安装选项,然后是一些(我稍后会解释这些)。
  5. 第五个字段确定文件系统是否需要转储,但由于这不是必需的,所以我将它传递给了0.
  6. fsck 使用第六个字段来确定启动时文件系统检查的顺序,但由于我不需要它这样做,所以我传递了0.

(2) 安装选项

我通过了很多安装选项:

  • defaults- 传递默认挂载选项(rw- 读/写,suid- 允许设置用户标识符或设置组标识符位生效,dev- 解释文件系统上的字符或块特殊设备,exec- 允许执行二进制文件,auto- 允许使用选项-a, mount-nouser禁止用户安装(稍后覆盖), async- 允许与文件系统进行异步 I/O。)
  • 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 系统上)。
  • user- 允许用户安装或卸载目录。覆盖nouser中的选项defaults

(3) 为您提供安全的解决方案

不过,对于您的用例,我们可能可以将安装选项简化为这些选项,因为用户正在访问数据而不是系统。然而,让我们以安全的方式做到这一点。让我们创建一个可以在此处进行读/写/执行的用户组。

addgroup ntfs-users- 这将创建一个名为“ntfs-users”的用户组。

id -g ntfs-users- 这将为我们提供“ntfs-users”的数字组 ID。我们需要这个作为gid=安装选项。

usermod -a -G ntfs-users USERNAME- 将USERNAME用户添加到ntfs-users我们刚刚创建的组中。

现在,我们可以利用这串挂载选项:

rw,exec,async,auto,user,locale=en_US.utf8,windows_names,umask=7007,gid=654
Run Code Online (Sandbox Code Playgroud)

我的 fstab 中的字符串没有执行以下操作:

  1. 从中选择我们想要使用的某些选项defaults
  2. 允许uid所有者用户为任何内容(通常在启动安装时为 root)
  3. 不允许用户安装/卸载
  4. 将挂载点的“组”所有权(以及对内部数据的访问权限)设置为 Group ID ,即我们上面创建的654假设组 IDntfs-users
  5. 根本不允许“其他人”用户组(即不是所有者用户,也不是组中的任何人ntfs-users)访问数据。

如果您想拥有数据,即成为所有者用户而不是root,则在该选项中添加回来uid=。使用id -u YOURUSERNAME并替换为您的用户名以获得与该选项一起使用的YOURUSERNAME用户 ID ( )。uid


(4)/etc/fstab假设您在第 3 节中听了我的发言,则可能是您的用例的条目

获取分区的 UUID,那么这可能类似于您的/etc/fstab行:

UUID=0123456789ABCDEF    /mnt    ntfs-3g    rw,exec,async,auto,user,locale=en_US.utf8,windows_names,umask=7007,gid=654    0    0
Run Code Online (Sandbox Code Playgroud)

将 中的值替换为UUID=挂载的分区的 UUID ,替换为系统上的挂载点,将挂载选项中的值替换为我们创建的组的组 ID,如果您希望拥有您的用户作为所有者而不是,然后添加一个选项,为您的用户提供,正如我之前所说的如何执行此操作。/mntgid=ntfs-usersrootuid=uid