Linux

Linux NFS 創建遮罩並強制使用者等效

  • March 20, 2012

我有兩台 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-dataapache伺服器,我將它安裝為/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/passwdor中無法匹配的情況/etc/group,這意味著無法訪問。

在(遙遠的)過去,這是與 NIS 和 NIS+ 共同製定的,儘管還有其他方案已嵌入到該框架中(Samba 的 Winbind 就是其中之一)。但是,這需要一個中央 ID 伺服器,其次是大量的手工修復權限。

有不同的方法來解決這個問題,但最便宜/最快的是在兩台機器上創建一個具有相同組 ID 號的組 - 例如,組 ID 50000 - 並在文件伺服器上設置組位,同時將適當的使用者添加到客戶端組;然後使用文件的組權限來控制訪問。不是一個很好的解決方案,但它會起作用。請注意,您可能會遇到在執行時顯式更改其組的服務(又名 privledge drop)的問題,您可能需要更改控制在執行時假定的組的設置,以確保它是您創建的組。

對於那些通過 Windows 共享(又名 Samba)傳入的文件,只需強制組與您創建的組相同。這樣所有文件都會自動獲得“正確”的 GID。

引用自:https://serverfault.com/questions/160352