Linux NFS 創建遮罩並強制使用者等效
我有兩台 Linux 伺服器:
文件伺服器Debian 5.0.3 (2.6.26-2-686) Samba
版本 3.4.2
Apache
Ubuntu 10.04 LTS (2.6.32-23-generic)
Apache 2.2.14
我在文件伺服器上有許多 Samba 共享,因此我可以從 Windows PC 訪問文件。我還導出
/data/www-data
到apache伺服器,我將它安裝為/var/www
.設置沒問題,除了我在 NFS 掛載上創建文件時。我最終得到了 Apache 無法讀取的文件,或者我係統上其他使用者無法修改的文件。
使用 Samba,我可以指定
force user
、和force group
,這可以確保創建的所有文件都具有適合我的 Apache Web 伺服器的權限。我找不到使用 NFS 執行此操作的方法。有沒有辦法通過 NFS 強制權限和所有權 - 我是否遺漏了一些明顯的東西?create mask``directory mask
儘管我在 Linux 上花了很多時間,並且正在擺脫 Windows,但我仍然沒有完全掌握 Linux 權限……如果這不是正確的做事方式,我願意替代建議。
鑑於您來自 Windows,您會發現 NFS 是….不同的。
您遇到的問題相當普遍。NFS 在機器之間來回傳遞文件/目錄的 UID 和 GID,假設使用者和組 ID 在兩者上的映射相同。這意味著您可能會遇到伺服器上的 UID/GID 被傳遞回 NFS 客戶端,但在客戶端的
/etc/passwd
or中無法匹配的情況/etc/group
,這意味著無法訪問。在(遙遠的)過去,這是與 NIS 和 NIS+ 共同製定的,儘管還有其他方案已嵌入到該框架中(Samba 的 Winbind 就是其中之一)。但是,這需要一個中央 ID 伺服器,其次是大量的手工修復權限。
有不同的方法來解決這個問題,但最便宜/最快的是在兩台機器上創建一個具有相同組 ID 號的組 - 例如,組 ID 50000 - 並在文件伺服器上設置組位,同時將適當的使用者添加到客戶端組;然後使用文件的組權限來控制訪問。不是一個很好的解決方案,但它會起作用。請注意,您可能會遇到在執行時顯式更改其組的服務(又名 privledge drop)的問題,您可能需要更改控制在執行時假定的組的設置,以確保它是您創建的組。
對於那些通過 Windows 共享(又名 Samba)傳入的文件,只需強制組與您創建的組相同。這樣所有文件都會自動獲得“正確”的 GID。