我正在配置一个 nfs 共享,我的 /etc/exports 看起来像这样:
/nfs_anon 192.168.122.0/24(rw,all_squash,anonuid=1111,anongid=1111)
有没有办法强制客户端使用服务器的默认 umask,而无需在每个客户端上为 uid 1111 的用户设置 umask?
目标是让客户端默认创建具有特定权限集的文件,与客户端 umask 值无关
答案1
首先,您使用的是 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)。
据我所知,x
如果程序一开始没有请求权限位,即使 ACL 也无法设置权限位 - 它只能从程序的原始请求中减去(屏蔽)位。