mount / fstab的默认安装设置是什么?


18

非根分区的默认挂载选项是什么?

坐骑的人入口说...

defaults - use default options: rw, suid, dev, exec, auto, nouser, and async.

...这可能就是我们期望看到的。但是,除非我缺少任何东西,否则不会发生。

我有一个标记为“ NewHome20G”的ext3分区,系统将其视为/ dev / sdc6。我们可以从...看到

root@john-pc1204:~# blkid | grep NewHome20G
/dev/sdc6: LABEL="NewHome20G" UUID="d024bad5-906c-46c0-b7d4-812daf2c9628" TYPE="ext3" 

我在fstab中有一个条目,如下所示...

root@john-pc1204:~# cat /etc/fstab | grep NewHome
LABEL=NewHome20G        /media/NewHome20G        ext3         rw,nosuid,nodev,exec,users     0  2

请注意该fstab行中指定的选项设置。

现在,我看一下启动后如何实际安装分区...

root@john-pc1204:~# mount -l | grep sdc6
/dev/sdc6 on /media/NewHome20G type ext3 (rw,noexec,nosuid,nodev) [NewHome20G]

...因此,当挂载文件系统时,我指定的exec&users选项似乎已被忽略。

可以肯定的是,我卸载了sdc6,将其重新安装,然后再次查看安装选项...

root@john-pc1204:~# umount /dev/sdc6
root@john-pc1204:~# mount /dev/sdc6
root@john-pc1204:~# mount -l | grep sdc6
/dev/sdc6 on /media/NewHome20G type ext3 (rw,noexec,nosuid,nodev) [NewHome20G]

....相同的结果

现在,我再次卸载该分区,使用exec选项重新安装它并查看结果...

root@john-pc1204:~# umount /dev/sdc6
root@john-pc1204:~# mount /dev/sdc6 -o exec
root@john-pc1204:~# mount -l | grep sdc6
/dev/sdc6 on /media/NewHome20G type ext3 (rw,nosuid,nodev) [NewHome20G]

...此处exec选项终于生效,并且noexec设置消失了。

只是出于兴趣,我使用默认选项重新安装了分区

root@john-pc1204:~# umount /dev/sdc6
root@john-pc1204:~# mount /dev/sdc6 -o defaults
root@john-pc1204:~# mount -l | grep sdc6
/dev/sdc6 on /media/NewHome20G type ext3 (rw,noexec,nosuid,nodev) [NewHome20G]

noexec又回来了,所以看起来非常像rw,noexec,nosuid,nodev是默认选项,这不是男人说的。

为什么这很重要?

我在数据磁盘上有一个充满有用脚本的文件夹。因为安装了该磁盘,所以noexec即使这些脚本都已使用chmod 777进行了设置,这些脚本也不会运行。我可以通过几种方法来解决这个问题,但是令人失望的是man条目似乎是错误的。

我是否错过了一些显而易见的内容,还是Ubuntu的默认选项与之前的版本有所不同?

Answers:


18

该手册是正确的。您的问题是,也许您没有考虑3个重要的细节:

  • users(和user)意味着选项noexecnosuidnodev

  • 除非被后续选项覆盖

  • 期权订单很重要;)

因此,当您rw,nosuid,nodev,exec,usersfstab中使用时,最后一个选项会users设置noexec,nosuid,nodev,从而禁用您的功能exec(并使您nosuid,nodev变得多余)。

结果与预期的一样rw,noexec,nosuid,nodev

不,users不被忽略,它通常不会显示在mount清单输出中。但是任何用户都可以卸载它,然后再次将其重新安装。尝试一下!

rodrigo@desktop ~ $ mount /dev/sda6                     # ordinary user
rodrigo@desktop ~ $ mount | grep /dev/sda6
/dev/sda6 on /mnt/mint10 type ext4 (rw,noexec,nosuid,nodev)
rodrigo@desktop ~ $ /mnt/mint10/bin/echo it works       # noexec will deny this
bash: /mnt/mint10/bin/echo: Permission denied

mount仅当使用usernot users)时,才会显示与用户有关的内容,而普通的非root用户将其挂载,如下所示:

rodrigo@desktop ~ $ mount /dev/sda6         # ordinary user
rodrigo@desktop ~ $ mount | grep /dev/sda6  # it will list current "owner"
/dev/sda6 on /mnt/mint10 type ext4 (rw,noexec,nosuid,nodev,user=rodrigo)
rodrigo@desktop ~ $ umount /dev/sda6
rodrigo@desktop ~ $ sudo mount /dev/sda6
rodrigo@desktop ~ $ mount | grep /dev/sda6  # since owner=root, it won't show
/dev/sda6 on /mnt/mint10 type ext4 (rw,noexec,nosuid,nodev)
rodrigo@desktop ~ $ umount /dev/sda6        # only mounter can unmount
umount: only root can unmount LABEL=MINT10 from /mnt/mint10

还要注意,当使用user不带时noauto,分区将在引导时自动(由root挂载)。因此,在root卸载之前,没有人能够卸载或(重新)安装。

就是说,我想您已经找到了解决方案:只需更改选项的顺序,一切就可以正常进行:

LABEL=NewHome20G  /media/NewHome20G  ext3  users,exec  0  2

请注意如何exec users。而且也rw,nosuid,nodev没有必要。rw已经是默认设置,其余的将通过以下方式自动打开users

结果是:

rodrigo@desktop ~ $ mount /dev/sda6                  # user mount
rodrigo@desktop ~ $ mount | grep /dev/sda6
/dev/sda6 on /mnt/mint10 type ext4 (rw,nosuid,nodev)
rodrigo@desktop ~ $ /mnt/mint10/bin/echo it works    # exec works
it works
rodrigo@desktop ~ $ sudo umount /dev/sda6            # root unmount
rodrigo@desktop ~ $ sudo mount /dev/sda6             # root mount
rodrigo@desktop ~ $ mount | grep /dev/sda6
/dev/sda6 on /mnt/mint10 type ext4 (rw,nosuid,nodev)
rodrigo@desktop ~ $ umount /dev/sda6                 # user unmount
rodrigo@desktop ~ $

意味着任何用户(无论是root用户还是非root用户)都可以安装和卸载它,而不管以前是谁安装或卸载了它。可执行文件也可以工作:)


您是说“ ...当user不使用时auto,该分区将自动安装...”吗?
Andreas J.

@AndreasJ。不,我是说noautoauto已经是默认行为,所以不noauto与with相同auto:分区将自动挂载。
MestreLion

对不起,我看错了你的句子。这是很合理的!
Andreas J.
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.