Linux 中的 nfs 挂载没有 acl?

Linux 中的 nfs 挂载没有 acl?

我有几台 RHEL6 机器。其中一台正在将 nfs 挂载导出到其他机器。我在服务器上设置了 ACL(使用 设置setfacl -m),但所有客户端都看不到它们。

这是我在 server1 上的导出:

/myexport    server2.example.com(rw,async,no_root_squash)

这是我在 server2 上的 fstab:

server1.example.com:/myexport  /mnt  nfs4  noatime,async,lock 0 0

我尝试将 acl 添加到我的 fstab 挂载选项中,但没有成功。有人知道为什么我在客户端上看不到 ACL 吗?

答案1

ACL 在 NFS 上使用且有效。使用以下命令nfs4_getfacl显示 NFSv4 安装上的 ACL:

$ nfs4_getfacl /tmp/test

A::OWNER@:rwatTnNcCy
A::[email protected]:rxtncy
A::[email protected]:rwadtTnNcCy
A:g:GROUP@:rtncy
D:g:GROUP@:waxTC
A::EVERYONE@:rtncy
D::EVERYONE@:waxTC

该 ACL 与 Linux ACL 相比为何如此不同?因为NFSv4 ACLLinux 访问控制列表acl(5) 是完全不同的标准!Linux NFS 服务器将来回转换 ACL。

非常不幸的是,Linuxls没有+在客户端上显示具有 NFSv ACL 的文件......这具有误导性。

答案2

要将 POSIX ACL 与 NFS 结合使用,您必须使用 NFSv3。

NFSv4 ACL 与 POSIX ACL 有很大不同。前者使用非常具体的 nfs4_getacl 和 nfs4_setacl 进行设置,而后者使用标准 getfacl/setfacl 二进制文件进行配置。简而言之,NFSv4 ACL 与 POSIX ACL 无关(顺便说一句,NFSv4 ACL 更接近 Windows 环境中使用的 CIFS ACL)。

相关内容