Nfs
NFS 共享 umask
我正在配置一個 nfs 共享,我的 /etc/exports 看起來像這樣:
/nfs_anon 192.168.122.0/24(rw,all_squash,anonuid=1111,anongid=1111)
有沒有辦法強制客戶端使用來自伺服器的預設 umask,而不為每個客戶端上具有 uid 1111 的使用者設置 umask?
目標是讓客戶端預設創建具有特定權限集的文件,獨立於客戶端 umask 值
首先,您使用的是 NFS 版本 3 還是 4?如果是版本 3,伺服器和客戶端是否都支持 NFSACL 擴展?
如果您使用 NFSv3 + NFSACL 或 NFSv4,並且 NFS 伺服器上的實際文件系統支持 ACL,則應該可以在 NFS 伺服器上執行類似的操作(調整權限以滿足您的需要):
setfacl -m d:u::rwx,d:g::rwx,d:o::rwx /nfs_anon
如果共享中已經有子目錄,您可能希望將預設 ACL 應用於共享的頂級目錄和所有現有子目錄:
find /nfs_anon -type d -exec setfacl -m d:u::rwx,d:g::rwx,d:o::rwx {} \+
將預設遮罩 ACL 應用於共享的頂級目錄後,在該目錄中創建的任何新子目錄都應自動獲得相同的預設遮罩 ACL。
其次,請注意,即使使用 ACL,這也只會應用新的預設遮罩。生成的權限仍將基於創建文件的程序請求的內容(通常是正常文件的權限 0666,執行檔/目錄的權限為 0777)。
據我了解,如果程序首先沒有請求權限位,即使 ACL 也無法設置
x
權限位 - 它只能從程序的原始請求中減去(屏蔽)位。