mount 和 fstab:为什么可以将它们配置为允许用户挂载但不允许用户卸载?

mount 和 fstab:为什么可以将它们配置为允许用户挂载但不允许用户卸载?

我最近注意到可以允许普通用户通过 fstab 挂载设备,但显然在任何情况下 umount 只能由 root 完成。

甚至 mount 的手册页也只讨论了挂载:

安装手册页

除了有一个实际的解决方案之外,我还想知道这背后的原因是什么?

答案1

与许多 Unix/Linux 特性一样,其背后的原因当然是历史性的。 Unix,它本身是从 Unics 演变而来的(对其前身 Multics 的双关语)被设计为真实的多用户系统。用户可以通过getty和本地或远程登录login,获取 shell 并运行他们的程序。

如今,TTY 是虚拟的,并login已被 GDM/KDM 取代,但诸如mountdflsps(属于最古老的 Unix 命令)尽管它们在这一年中获得了许多附加功能,但其目的仍然基本保持不变。

命令mountumount最初仅供系统管理员运行,或者root.随着 Unix 的发展并传播到个人计算机mountumount 成为 SUID 程序使普通用户能够挂载和卸载文件系统,但仅限于严格的条件。从man mount

通常,只有超级用户才能挂载文件系统。 [...] 请注意,挂载对于非 root 用户非常严格,并且在解析 fstab 或执行帮助程序之前会验证命令行上指定的所有路径。 [...] 它会删除 suid 权限并继续作为常规非 root 用户。 [...] 只有安装了文件系统的用户才能再次卸载它。如果任何用户都应该能够卸载它,则在 fstab 行中使用 users 而不是 user。

因此,mountumount都是 SUID 程序,它们在 中查找user选项或users选项/etc/fstab,然后放弃 root 权限,最后进行mount()/umount()系统调用。

答案2

手册页还讨论了卸载,它在您的屏幕截图上 - 如果您想允许任何用户卸载,您需要使用该users选项。

如果任何用户都应该能够卸载它,则在 fstab 行中使用 users 而不是 user。

更多地“推广”该选项的原因user可能是为了防止出现一个用户安装该设备而第二个用户在背后卸载该设备的情况。

相关内容