我的 Ubuntu (11.04) 机器上连接着一个 USB 硬盘。每次我重启电脑并登录时,它都会挂载硬盘。由于磁盘上有 NTFS,Linux 会指定某个用户作为磁盘上文件的所有者。因此,磁盘上的所有文件都显示为一个用户所有,并且只有该用户才能看到这些文件。
我在计算机上使用两个用户帐户,并经常在它们之间切换。一旦我切换到其他用户帐户,我就无法再访问磁盘的内容,因为它属于我的第一个用户帐户。除了通过 /etc/fstab 安装它之外,还有什么可以做的吗?
谢谢。
答案1
使用特定权限进行挂载
有。将两个用户放在一个组中。然后使用该组设置选项gid=
和,并以您想要的权限挂载您的磁盘。您可以使用mount 命令中的umask=
、fmask=
和dmask=
选项来控制权限。以下是示例:
mount -O dmask=007,fmask=117,gid=46,uid=1000 /dev/sdc1 /media/winhdd
/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 规则。乌德夫可以在磁盘连接时自动挂载(并防止 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"
您需要根据磁盘的属性来识别磁盘。在我的示例中,我通过 来识别磁盘ATTRS{serial}=="UA04FLGC"
。我在另一个问题。规则文件的命名和位置也在那里描述。
赋予所有可移动磁盘这些属性
如果您想对所有可移动磁盘执行此操作 - 而不仅仅是那个特定的磁盘,只需省略序列部分并确保分配一个唯一的挂载点(计数它们,从序列创建,udev 的 % 符号或其他方法)。同样如上所述别处 ENV{mount_options}="$env{mount_options},dmask=007,fmask=117,gid=46,uid=1000"
可以选择安装具有特定权限/所有权的所有可移动磁盘。
您可能已经知道的有用信息:
创建组并添加用户
这些是创建名为“winhdd”的组并向该组添加名为“confus”的用户的 shell 命令:
groupadd winhdd
usermod -a -G winhdd confus
查找组 ID
您可以在名为 的文件中查找系统上所有组的组 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=
为合理价值允许您至少执行(=访问)目录。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