如何授予多个用户访问 Windows NTFS 分区的权限?

Ale*_*ler 8 fstab usb mount users

我有 USB 硬盘连接到我的 Ubuntu (11.04) 机器。每次我重新启动计算机并登录时,它都会安装硬盘驱动器。由于磁盘上有 NTFS,Linux 指定一些用户作为磁盘上文件的所有者。因此,磁盘上的所有文件似乎都归一个用户所有,并且只有该用户才能看到这些文件。

我在我的计算机上使用两个用户帐户,并经常在它们之间切换。一旦我切换到其他用户帐户,我就无法再访问磁盘的内容,因为它归我的第一个用户帐户所有。除了通过 /etc/fstab 安装它之外,还有什么可以做的吗?

谢谢。

con*_*use 14

使用特定权限挂载

有。将两个用户放在一个组中。然后使用该组设置gid=选项并使用您希望它拥有的权限安装磁盘。您可以使用umask=,fmask=dmask=mount 命令中的选项控制权限。下面是一个例子:

mount -O dmask=007,fmask=117,gid=46,uid=1000 /dev/sdc1 /media/winhdd
Run Code Online (Sandbox Code Playgroud)

这些选项也可以/etc/fstab像这样使用:UUID=7258CB9858CB598D /media/win ntfs rw,auto,user,exec,nls=utf8,dmask=007,fmask=117,gid=46,uid=1000 0 2.

避免 fstab - 使用 udev 自动挂载特定磁盘

我想你想避免 fstab 因为它在启动时并不总是连接的磁盘。如果你想避免 fstab使用udev 规则Udev可以在磁盘连接时自动挂载(并防止 Ubuntu 自动挂载)。一个规则可能是这样的:

# In /etc/udev/rules.d/70-usb-winhdd-mount.rules

KERNEL=="sd?[0-9]", ATTR{removable}=="1", ATTRS{serial}=="UA04FLGC", ACTION=="add", RUN+="mount -O dmask=007,fmask=117,gid=46,uid=1000 /dev/%k /media/winhdd"
Run Code Online (Sandbox Code Playgroud)

您需要通过它的属性来识别磁盘。在我的示例中,我通过ATTRS{serial}=="UA04FLGC". 我在另一个问题中描述了如何做到这一点。规则文件的命名和位置也在那里描述。

给所有可移动磁盘这些属性

如果您想对所有可移动磁盘执行此操作 - 不仅仅是那个特定的磁盘,只需省略串行部分并确保分配一个唯一的挂载点(计算它们,从串行创建,udev 的 %-symbol 或其他方法)。同样如其他地方所述, ENV{mount_options}="$env{mount_options},dmask=007,fmask=117,gid=46,uid=1000"可以选择安装具有某些权限/onwership 的所有可移动磁盘。


您可能已经知道的有用信息:

创建组并添加用户

这些是用于创建名为“winhdd”的组并将名为“confus”的用户添加到该组的 shell 命令:

groupadd winhdd
usermod -a -G winhdd confus
Run Code Online (Sandbox Code Playgroud)

找出组ID

您可以在名为/etc/group. 那里的条目看起来像winhdd:x:4:confus,narur,joe您正在寻找的“confus”、“narur”和“joe”是属于该组的用户名,“adm”是该组的名称,“4”是组 ID。在/etc/groups你还可以检查是否添加用户到组成功。该命令getent group winhdd将显示有关该组的信息的行。该id命令为您提供您的组 ID、用户 ID 以及您所属的所有组的名称和 ID。

设置类似 umask 的选项

您需要设置dmask=一个合理的值,至少允许您执行 (=access) 目录。fmask=是文件权限的选项。

dmask=007,fmask=117,gid=46,uid=1000允许用户号 1000(掩码中的第一个数字)和组号 46 的成员(掩码中的第二个数字)读取和写入磁盘上的文件。其他用户无权做任何事情(因此面具中的第三位数字 - 7)。以下是掩码值

7 – no permissions     6 – execute only    5 – write only
4 – write and execute  3 – read only       2 – read and execute
1 – read and write     0 – read, write and execute
Run Code Online (Sandbox Code Playgroud)