![如何以完全權限綁定掛載多個使用者主目錄中的資料夾](https://rvso.com/image/1419610/%E5%A6%82%E4%BD%95%E4%BB%A5%E5%AE%8C%E5%85%A8%E6%AC%8A%E9%99%90%E7%B6%81%E5%AE%9A%E6%8E%9B%E8%BC%89%E5%A4%9A%E5%80%8B%E4%BD%BF%E7%94%A8%E8%80%85%E4%B8%BB%E7%9B%AE%E9%8C%84%E4%B8%AD%E7%9A%84%E8%B3%87%E6%96%99%E5%A4%BE.png)
我有一個網頁伺服器,提供來自/var/www/vhosts/mysite
.我想要做的是安裝此vhosts
資料夾,/home/myuser/vhosts
以便用戶可以登入、編輯任何文件並登出。問題是掛載不會忽略該資料夾中的權限。某些文件可以由 www-data 或其他使用者建立。如果它們是由其他使用者建立的,那麼 www-data 也無法讀取/修改它們。
到目前為止,我嘗試的是使用 fstab 建立綁定安裝。該資料夾成功安裝在使用者的主目錄中,並且使用 acl,我可以透過向該資料夾分配一個群組rwx
並將 www-data 和使用者新增至該群組來允許他們寫入該資料夾。我想知道是否有一種方法可以綁定安裝資料夾,但權限不受影響,以便 www-data 始終可以毫無問題地對其進行讀取/寫入/執行,同時也允許使用者完全權限。
答案1
您需要先將這些使用者新增至 www-data 群組。那麼預期的方法就是使用chmod g+s /home/user/vhost
.這將在此資料夾上設定 ,SGID
這表示它的群組將用於新檔案。不幸的是,這對子目錄沒有幫助。為了使它們保持最新,您需要在目錄樹修改後定期執行此命令:find /home/user/vhost -type d -exec chmod g+s {} \;
。這將搜尋所有子目錄並啟用SGID
.最煩人的部分是,在添加子目錄之前需要對任何父目錄執行此操作,這意味著有時您需要在進行更改時運行多次,如果您忘記這樣做,那麼您只需要執行 chown 命令反正:find /home/user/vhost -type d -exec chown user:www-data {} \;
。
這就是我所說要做的,但我發現這整個計劃對我來說只是煩人。實際上,我所做的是在具有完全不相關權限的開發伺服器上工作。進行更改後,我有一個腳本同步到產品伺服器並每次設定所有所有權和權限,以確保一切始終正確。這種方法節省了大量時間,因為我永遠不需要擔心為什麼權限中斷。我只是運行腳本,一切都神奇地再次運行了。