我想通过 NFSv4 共享一个文件夹,供一些用户使用,但我遇到了权限问题。
我使用 setGID 设置了文件夹权限,因此新文件将以文件夹组所有者的权限创建。但用户可以自由创建文件,而无需该组的权限(事实上,默认用户 UMASK 为 700,因此这种情况经常发生)。
我最终尝试申请此解决方案使用 ACL 来强制执行目录 umask。我这样做了,但没有按预期工作。我读了NFS 维基常规 ACL 不适用于 NFSv4,我需要使用 nfs4 特定的 ACL 工具。
但我遇到了一些麻烦。我尝试在服务器上安装 nfs4-acl-tools,结果出现以下信息:
# nfs4_getfacl /export/proyectos/
Operation to request attribute not supported.
是的,该分区已安装 ACL 支持。
/dev/mapper/mpath4-part1 /export/proyectos ocfs2 rw,relatime,_netdev,heartbeat=local,nointr,data=ordered,errors=remount-ro,usrquota,coherency=full,user_xattr,acl 0 0
并且常规 ACL 正在运行:
# getfacl /export/proyectos/
getfacl: Eliminando «/» inicial en nombres de ruta absolutos
# file: export/proyectos/
# owner: root
# group: root
# flags: --t
user::rwx
group::rwx
other::rwx
default:user::rwx
default:group::rwx
default:other::rwx
我按照建议跟踪了 nfs4_getfacl邮件列表并得到这个:
# strace nfs4_getfacl /export/proyectos
<stripped>
getxattr("/export/proyectos", "system.nfs4_acl", 0x0, 0) = -1 EOPNOTSUPP (Operation not supported)
<stripped>
nfs4_getfacl 是否要求正确的标志?我认为 nfs4_acls 根本没有被任何文件系统实现,并且当前 nfs4 依赖于某种 nfs4acl-posixacl 映射。但我不再确定了。
答案1
您必须getfacl
在 NFS 服务器上使用(因为您查询本地文件系统),并nfs4_getfacl
在 NFS 客户端上使用。
NFSv4 ACL 和 Linux ACL acl(5) 是完全不同的标准!Linux NFS 服务器将来回转换 ACL。