我使用的是 ubuntu 14.04,想在我的管理员帐户之外再创建另一个帐户,供我的家人使用,以免打扰我的工作。问题是我无法授予其他帐户对包含数据的 NTFS 分区的访问权限,我尝试了论坛上提到的一些解决方案,但都不起作用。机器重新启动时第一个登录的用户似乎仍然控制着该分区,并禁止任何其他用户访问它,即使他已经注销。我发现唯一有效的技巧是卸载在注销当前用户之前,请先删除该分区。这样,下一个要登录的用户将山分区并访问它。
我的问题实际上是这是不同机器用户之间分区访问的工作方式,我的意思是卸载您正在使用的任何分区以便其他用户能够在您之后使用它,或者我无法正确授予对该分区的访问权限?
答案1
如果您需要始终在计算机开启时为所有用户提供此功能,那么最简单且可能最好的方法是定义挂载点和挂载分区的规则/etc/fstab
。通过这样做,您可以在挂载分区/驱动器时自动提供访问权限。
这是一种更为先进的做法,但如果带有 NTFS 分区的设备始终连接到计算机,这可以消除您遇到的一些麻烦,并有效地自动提供围绕数据的安全控制,并允许我们随着时间的推移实际修改控制,而不必每次都手动重新安装具有不同选项或用户的东西。
我在这个答案中还有其他几个部分。
- 第一个是我的 NTFS 条目之一
fstab
,它用于我的 Ubuntu 计算机上的 Windows 分区(我是该计算机上唯一的用户)。 - 第二部分采用我的
fstab
输入,并解释安装选项。 - 第三部分为您提供了我建议的程序,用于提供对分区的“安全”访问、启动时自动挂载以及适合您情况的一组合适的挂载选项(包括创建一个“用户组”,您将允许访问已挂载分区上的数据的用户添加到该用户组。该用户组充当“访问控制”,所应用的特定文件权限也是如此。)
/etc/fstab
如果您听了我第三部分的内容,第四部分将为您提供一条可能使用的线路。
(1)我的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
这行是什么意思?嗯,第一行前面带有#
是注释。第二行是更重要的部分,即实际的fstab
条目:
- 我通过 UUID 来识别分区,UUID 是用于标识分区的字符串。您可以通过执行以下命令获取任何给定分区的 UUID
sudo blkid /dev/sda1
(替换/dev/sda1
为您分区的实际 ID,因此如果它位于第二个磁盘上,并且它是第二个磁盘分区表中的第三个分区,则可能/dev/sdb3
在此命令中。我删除了条目UUID=
中行周围的引号fstab
。) - 我在启动时安装它
/media/win7
。 - 它是一个 NTFS 分区,因此我传递给
fstab
选项ntfs-3g
,以便它知道它是 NTFS。 - 我为其提供了默认的挂载选项,然后是一些(我稍后会解释这些)。
- 第五个字段确定是否需要转储文件系统,但由于这不是必需的,因此我给它传递了一个
0
。 - 第六个字段由 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
它能做而我的 fstab 中的字符串不能做的事情是:
- 选择我们想要使用的某些选项
defaults
- 让
uid
所有者用户成为任意用户(通常是启动时为 root 用户) - 不允许用户挂载/卸载
- 将挂载点的“组”所有权(以及对其中数据的访问权限)设置为组 ID ,即我们上面创建的
654
假设组 IDntfs-users
- 根本不允许“其他所有人”用户组(即不是所有者用户也不是组中的任何人
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
将中的值替换UUID=
为您要删除的分区的 UUID想要挂载,请将其替换为您系统上的挂载点,将挂载选项中/mnt
的值替换为我们创建的组的组 ID,如果您希望让您的用户作为所有者而不是,则添加一个选项,为您的用户提供,正如我之前所说的那样。gid=
ntfs-users
root
uid=
uid