答案1
与许多 Unix/Linux 特性一样,其背后的原因当然是历史性的。 Unix,它本身是从 Unics 演变而来的(对其前身 Multics 的双关语)被设计为真实的多用户系统。用户可以通过getty
和本地或远程登录login
,获取 shell 并运行他们的程序。
如今,TTY 是虚拟的,并login
已被 GDM/KDM 取代,但诸如mount
、df
、ls
、ps
(属于最古老的 Unix 命令)尽管它们在这一年中获得了许多附加功能,但其目的仍然基本保持不变。
命令mount
和umount
最初仅供系统管理员运行,或者root
.随着 Unix 的发展并传播到个人计算机mount
,umount
成为 SUID 程序使普通用户能够挂载和卸载文件系统,但仅限于严格的条件。从man mount
:
通常,只有超级用户才能挂载文件系统。 [...] 请注意,挂载对于非 root 用户非常严格,并且在解析 fstab 或执行帮助程序之前会验证命令行上指定的所有路径。 [...] 它会删除 suid 权限并继续作为常规非 root 用户。 [...] 只有安装了文件系统的用户才能再次卸载它。如果任何用户都应该能够卸载它,则在 fstab 行中使用 users 而不是 user。
因此,mount
和umount
都是 SUID 程序,它们在 中查找user
选项或users
选项/etc/fstab
,然后放弃 root 权限,最后进行mount()
/umount()
系统调用。
答案2
手册页还讨论了卸载,它在您的屏幕截图上 - 如果您想允许任何用户卸载,您需要使用该users
选项。
如果任何用户都应该能够卸载它,则在 fstab 行中使用 users 而不是 user。
更多地“推广”该选项的原因user
可能是为了防止出现一个用户安装该设备而第二个用户在背后卸载该设备的情况。