fstab 中的组选项不起作用

fstab 中的组选项不起作用

我正在尝试利用 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/groupsas的输出myusermyuser disk这样的,所以组成员身份就在那里。如果我在选项中更改group为,则可以挂载文件系统。usermyuser

我究竟做错了什么?为什么该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 个用户:foosrinidhi

# 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应为myuserdisk。只需设置正确的组所有权,您的原始/etc/fstab条目应该开始起作用:

# chgrp myuser /blergh

现在尝试运行mount /media/blerghmyuser.

笔记:挂载点(此处/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。在许多系统上不再需要它,并且通过挂载隐式完成。顺便说一句,你使用什么系统?

相关内容