如何設定 NFS 為所有新檔案/目錄設定 775 權限?

如何設定 NFS 為所有新檔案/目錄設定 775 權限?

我有一台運行 Ubuntu 18.04 並設定 NFS 的伺服器。我有幾個服務將文件放置/操作該共享以及其他客戶端透過網路存取它。我希望 NFS 伺服器將所有新檔案/資料夾的預設權限設定為 775。

我已s在資料夾上設定標誌,以便所有新建立的檔案和資料夾繼承同一組,因此該群組的所有使用者都可以在該資料夾中建立和修改檔案。但我無法強迫 NFS 這樣做。它只創建了 644 個新檔案和 2755 個資料夾。

這是我的/etc/exports/

/srv/nfs                192.168.11.0/24(ro,fsid=0,no_subtree_check,)
/srv/nfs/lpt-2tb        192.168.1.0/24(rw,sync,all_squash,no_subtree_check,insecure,anonuid=1002,anongid=1002)

1002是用戶的id nfs

我嘗試了 umask 和 acl,但都無濟於事。

我已經為 nfs 用戶創建了 homedir 並將umask 002其放置在~/.profile.

我嘗試在共享資料夾上設定 acl

/srv/nfs/lpt-2tb$ sudo setfacl -d --set u::rwx,g::rwx,o::r-x .
/srv/nfs/lpt-2tb$ sudo setfacl -R -m u::rwx,g::rwx .

/srv/nfs/lpt-2tb$ sudo getfacl .
# file: .
# owner: nfs
# group: nfs
# flags: -s-
user::rwx
group::rwx
other::r-x
default:user::rwx
default:group::rwx
default:other::r-x

我嘗試修改位於的 nfs-server 配置/lib/systemd/system/nfs-server.service並添加到部分UMask=002[Service]。這適用於我自己創建的其他一些服務,但不適用於 NFS。

我重新啟動 NFS 服務,甚至在所有這些修改後重新啟動,但是,當我將檔案從筆記型電腦複製到共用時,它具有 644 權限

drwxr-sr-x+ 2 nfs nfs      4096 Apr  5 20:34  acl2
-rw-r--r--  1 nfs nfs    434506 Mar  7 21:31  acl_test.png

- -編輯 - -

以下是檔案和資料夾的 acl 輸出

/srv/nfs/lpt-2tb$ sudo getfacl acl_test.png
# file: acl_test.png
# owner: nfs_share
# group: kodi
user::rw-
group::r--
other::r--

/srv/nfs/lpt-2tb$ sudo getfacl acl2
# file: acl2
# owner: nfs_share
# group: kodi
# flags: -s-
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::rwx
default:other::r-x

---UPD---

我已經驗證我的伺服器正在運行 nfs v2-3-4,但我的客戶端透過 v3 連接,我無法覆蓋它。當我設法讓它工作時,我會嘗試驗證 v4 是否修復。

我現在已經放棄尋找一個乾淨的解決方案,而只會做一個 cron 作業,定期檢查和修復權限。

答案1

首先,您使用 umask 嘗試的操作將無法運作。 umask 是每個進程的東西,重要的進程是建立檔案的進程。當 NFS 使用者在 NFS 用戶端上建立檔案時,NFS 伺服器上的 nfs 使用者的 umask(如果這就是您的意思)並不重要,而 NFS 伺服器服務本身的 umask 也不重要影響任何事情。

接下來,您提到將檔案複製到 NFS 共用時獲得了錯誤的權限。假設您的字面意思是複製,如“cp”命令中所示,那麼這不是一個有效的測試。 cp 命令在權限方面有各種特殊行為 - 與大多數程式不同,它不只是建立一個檔案並讓預設權限保持不變,它實際上會在之後返回並破壞其權限。這是過去討論過的一個地方:

https://serverfault.com/questions/183800/why-does-cp-not-respect-acls

我使用“touch”命令來建立用於此類測試的檔案。嘗試一下,您可能會發現您的 ACL 設定已經運作正常,只是 cp 指令不尊重事物。

相關內容