Mount

如何在沒有root的情況下掛載本地目錄

  • August 11, 2020

假設我有一個使用者完全可以讀取的文件夾。我希望它安裝到我的主文件夾。我不能使用符號連結,因為我希望文件被公開,~/並且我希望其他程序“不知道”它是一個掛載。是否有實現此功能的保險絲程序?問題mount是它需要root權限。

我也很感激,如果我能夠掛載這個目錄,而不是在啟動時,而是在需要時 - 那是因為~/除非我登錄,否則我是加密的。

您可以使用以下條目設置 /etc/fstab 一次:

/path/to/original/dir  /path/to/bind/dir  none  bind,rw,user,noauto  0 0 

掛載選項按順序指定以下內容:

  • bind表示此條目是綁定掛載。
  • rw指定條目將以讀寫模式掛載。
  • user允許任何非 root 使用者掛載文件系統。
  • noauto指定不應mount -a在引導時自動掛載此條目。

您需要使用 root 權限設置一次。一旦條目到位,您就可以以非 root 使用者身份執行掛載。簡單地執行mount /path/to/bind/dir

有幾點需要注意:

  • 使用該user選項,只有最初安裝文件系統的使用者帳戶才能執行解除安裝。如果涉及多個使用者,您可以查看該users選項。詳情請參閱man 8 mount
  • user選項暗示了三個其他選項:(noexec不允許執行二進製文件)、nosuid(不尊重 setuid/setgid 位)和nodev(不解釋設備)。如果您想恢復這些功能中的任何一個,請將相應的選項附加到列表的末尾。例如,bind,rw,user,noauto,exec。請記住,這些選項存在安全隱患。詳情請參閱man 8 mount

各種 FUSE 實用程序都可以做到這一點。例如,bindfs可以將目錄掛載到不同的位置,類似於mount --bind這樣做。

bindfs --no-allow-other /source/directory /mount/point

除非您取消註釋,否則該--no-allow-other選項是必需user_allow_other/etc/fuse.conf(但請參閱下面關於 libfuse 的說明以了解安全隱患)。

解除安裝:

fusermount -u /mount/point

請注意,FUSE 文件系統目前存在已知問題/限制。值得一提的是,性能成本、無法使用inotify監控源文件系統上發生的文件系統事件以及libfuse GitHub 儲存庫的 README 中列出的安全隱患。

在 Linux 上,執行綁定掛載mount --bind不會有這些缺點。但它至少需要一次 root 權限才能編輯您的fstab. 有關該主題的更詳細介紹,

請參閱連結的 Q/A 。

引用自:https://unix.stackexchange.com/questions/602496