我正在尝试利用 fstab 条目的“组”选项,但没有取得任何成功。从mount
手册页:
通常,只有超级用户才能挂载文件系统。然而,当fstab在一行中包含用户选项时,任何人都可以挂载相应的系统。 ...如果任何用户都应该能够卸载,则在 fstab 行中使用 users 而不是 user。所有者选项与用户选项类似,但限制是用户必须是特殊文件的所有者。例如,如果登录脚本使控制台用户成为该设备的所有者,这对于 /dev/fd 可能很有用。组选项类似,但限制用户必须是特殊文件组的成员。
我正在使用 1GB 文件 /blergh 及其上的 ext4 文件系统进行环回安装测试。该文件由 root:disk 拥有,权限为 664。我有一个挂载点 /media/blergh,由 root:disk 拥有,权限为 775。我有一个 fstab 条目,如下所示:
/blergh /media/blergh ext4 loop,rw,noauto,group 0 2
运行mount /media/blergh
正常root
。运行它会myuser
给出错误:mount: only root can mount /blergh on /media/blergh
。/usr/bin/groups
as的输出myuser
是myuser disk
这样的,所以组成员身份就在那里。如果我在选项中更改group
为,则可以挂载文件系统。user
myuser
我究竟做错了什么?为什么该group
选项不起作用?
(注意:由于我不想进入这里,我不想解决myuser
使用 来挂载此文件系统的问题sudo
。)
2013 年 5 月 20 日编辑:
使用真实块设备进行的额外测试表明问题在于loop
而不是group
。我创建了一个新的 1GB EBS 卷,附加为 /dev/sdg,由 root:disk 拥有,权限为 664。我为其创建了以下 fstab 条目:
/dev/sdg /media/sdg ext4 rw,noauto,group 0 0
和以前一样,只是不,loop
因为它不适用于这里。我在 /media/blerg 处为此文件系统创建了一个挂载点,由 root:disk 拥有,权限为 775。和以前一样myuser
是该组的成员disk
。使用此测试设置mount /media/sdg
效果myuser
很好,就像 一样umount /media/sdg
。
答案1
我认为你在这里遗漏了一个非常重要的细节。从引用的手册页(和强调) 由你:
组选项类似,但限制用户必须是组的成员特殊文件组。
注意我的强调关于“特殊文件”。如果您参考以下解释团体选项:
团体 如果普通(即非 root)用户的组之一与设备组。该选项意味着 nosuid 和 nodev 选项(除非被后续选项覆盖,如选项行 group,dev,suid 中)。
这意味着设备或特殊文件您正在尝试安装的应该myuser
具有相同的团体所有权为用户的所有权myuser
。
这是一个例子:
假设/dev/sda5
系统上有一个设备,安装在/builds
目录中:
# ls -l /dev/sda5
brw-rw---- 1 root disk 8, 5 Jun 15 21:20 /dev/sda5
# grep sda5 /etc/fstab
/dev/sda5 /builds reiserfs group,defaults 1 2
此外,同一系统上有 2 个用户:foo
和srinidhi
# id foo
uid=1005(foo) gid=100(users) groups=100(users),33(video)
# id srinidhi
uid=1000(srinidhi) gid=100(users) groups=100(users),16(dialout),6(disk),10(wheel)
用户srinidhi
(属于组的一部分disk
)尝试挂载/builds
:
srinidhi@linux:~> mount /builds/
srinidhi@linux:~> echo $?
0
现在,让我们看看foo
尝试挂载时会发生什么/builds
:
srinidhi@linux:~> su - foo
foo@linux:~> mount /builds/
mount: only root can mount /dev/sda5 on /builds
foo@linux:~>
由于foo
不是disk
组的一部分,mount
因此失败。
回到您的案例,您应该确保 的组所有权/blergh
应为myuser
或disk
。只需设置正确的组所有权,您的原始/etc/fstab
条目应该开始起作用:
# chgrp myuser /blergh
现在尝试运行mount /media/blergh
为myuser
.
笔记:挂载点(此处/media/blergh
)的所有权不受影响mount
。
答案2
我的选项也有类似的问题user
。还没解决。我的解决方法是创造不同的情况,看看它们是否有效,并可能使某些事情浮现出来。
您的问题仅与那个文件有关吗/blergh
?你能用另一个文件重现它吗?或者该文件位于其他地方,或者具有不同的权限,或者具有不同的所有权。 (当然,测试取决于您对系统的控制程度)。
您可以使用该选项测试问题owner
以查看它是否有效...假设您可以在另一个文件上重现它,或者更改临时所有权?那选项呢user
。
您的问题是安装和卸载都存在,还是仅存在其中之一?如果安装不起作用,您可以尝试安装为root
并卸载为myuser
。 (就我自己的问题而言,挂载有效,但卸载无效)
旁注:我相信这种挂载在 Linux 世界中被称为“循环”,“环回”与网络设备有关。(参考。http://en.wikipedia.org/wiki/Loop_device)
在第一条评论和问题编辑后添加
如果owner
也不起作用,则意味着所有所有权机制都会受到影响,因为owner
比 更容易检查group
。这种情况owner
适用于真正的块设备吗group
?
您是否尝试过在循环选项中明确指定循环设备,选择一个未使用的设备:...,loop=/dev/loop7,...
?您甚至可以尝试更改循环设备的所有权或组(尽管我不确定它有多明智或有用)。ls /dev/loop*
给出可用的循环设备。
另一种可能性是loop
从您的条目中完全删除该选项/etc/fstab
。在许多系统上不再需要它,并且通过挂载隐式完成。顺便说一句,你使用什么系统?