mount 和 fstab:為什麼可以將它們配置為允許使用者掛載但不能解除安裝?
我最近注意到可以允許普通使用者通過 fstab 掛載設備,但顯然無論如何 umount 只能由 root 完成。
甚至 mount 的手冊頁也只討論了掛載:
除了有一個實際的解決方案之外,我想知道這背後的原因是什麼?
與許多 Unix/Linux 特性一樣,這背後的原因當然是歷史性的。Unix 本身是從 Unics(其前身 Multics 的雙關語)演變而來的,它被設計為真正的多使用者系統。
getty
使用者可以通過and本地或遠端登錄login
,獲取 shell 並執行他們的程序。如今,TTY 是虛擬的,並
login
已被 GDM/KDM 取代,但諸如mount
、df
、ls
、ps
(屬於最古老的 Unix 命令)之類的實用程序在用途上仍基本保持不變,儘管它們在一年中獲得了許多附加功能。這些命令
mount
和umount
最初只打算由系統管理員執行,或者root
. 隨著 Unix 的發展和傳播到個人電腦mount
並umount
成為 SUID 程序,使普通使用者能夠掛載和解除安裝文件系統,但只能在嚴格的條件下進行。來自man mount
:通常,只有超級使用者可以掛載文件系統。
$$ … $$ 請注意,mount 對非 root 使用者非常嚴格,並且在解析 fstab 或執行幫助程序之前驗證命令行中指定的所有路徑。$$ … $$ 它刪除 suid 權限並繼續作為正常非 root 使用者。$$ … $$ 只有掛載文件系統的使用者才能再次解除安裝它。如果任何使用者應該能夠解除安裝它,那麼在 fstab 行中使用 users 而不是 user。
因此,兩者
mount
都是umount
SUID 程序,它們會在 中查找user
選項或users
選項/etc/fstab
,然後放棄它們的 root 權限,最後進行mount()
/umount()
系統呼叫。