NFS v4 ACL 继承问题 - “i”标志已设置但不需要

NFS v4 ACL 继承问题 - “i”标志已设置但不需要

我想要添加一个 NFS v4 ACL,允许目录、子目录和孙目录、曾孙目录等目录和文件在 Linux 下继承删除 ('D') 标志。服务器上的底层文件系统是 xfs 和 。

我对它们都不是特别熟悉。

服务器是Centos 6.3,客户端是Centos 6.4。

根据我对手册页的理解,“ i”标志意味着在子文件/目录上设置此 acl,但不将其应用于当前目录。我没有i在父级 ( /var/www/tauweb) 上设置“ ”标志,但它似乎在创建的任何子目录上都设置了。

当我在目录中使用 nfs4_getfacl 写入以下 ACE 时会发生什么/vaw/www/tauweb

A::OWNER@:rwaDxtTcCy
A::GROUP@:rwaDxtcy
A::EVERYONE@:rxtcy
A:fdi:OWNER@:rwaDxtTcCy
A:fdi:GROUP@:rxtcy
A:dg:[email protected]:rwaDxtcy
A:fdi:EVERYONE@:rxtcy

系统实际上写的是:

[root@tau www]# nfs4_getfacl tauweb/
A::OWNER@:rwaDxtTcCy
A::GROUP@:rwaDxtcy
A:g:[email protected]:rwaDxtcy
A::EVERYONE@:rxtcy
A:fdi:OWNER@:rwaDxtTcCy
A:fdi:GROUP@:rxtcy
A:fdig:[email protected]:rwaDxtcy
A:fdi:EVERYONE@:rxtcy

请注意倒数第二个用户条目中的“i” tau。这不是我在编辑 ACE 时设置的,但它立即出现了 - 系统似乎添加了它。

现在阅读我能找到的所有文档都表明,顶部 ACE 集中第一个冒号后的“dg”应该导致 ACL 被继承到子目录(据我理解,“g”表示主体是一个组,而不是一个用户)。

现在“i”标志显然意味着导致这个 ACE 被继承但在实际的权限检查中不考虑它。

/var/www/tauweb/d2然后,当创建子目录时,它会获得以下内容:

[kkassahn@tau tauweb]$ nfs4_getfacl d2/
A::OWNER@:rwaDxtTcCy
A::GROUP@:rxtcy
A:g:[email protected]:rxtcy
A::EVERYONE@:rxtcy
A:fdi:OWNER@:rwaDxtTcCy
A:fdi:GROUP@:rxtcy
A:fdig:[email protected]:rwaDxtcy
A:fdi:EVERYONE@:rxtcy

孙子/var/www/tauweb/d2/d3会得到这些:

[kkassahn@tau tauweb]$ nfs4_getfacl d2/d3/
A::OWNER@:rwaDxtTcCy
A::GROUP@:rxtcy
A:g:[email protected]:rxtcy
A::EVERYONE@:rxtcy
A:fdi:OWNER@:rwaDxtTcCy
A:fdi:GROUP@:rxtcy
A:fdig:[email protected]:rwaDxtcy
A:fdi:EVERYONE@:rxtcy

现在 d2 是可删除的 - 因为它是父级var/www/tauweb has/

A:g:[email protected]:rwaDxtcy ACE。但该 ACE 不会被继承。

仅 适用于 d2 和 d3,尽管继承但不咨询会被子代、孙代等继承。A:g:[email protected]:rxtcy
A:fdig:[email protected]:rwaDxtcy

非常感谢任何帮助或建议,谢谢。

答案1

我找到了这个问题的原因。看来 NFS v4 ACL 会应用用户的 umask。我的用户的 umask 是 002,因此其他用户无法写入导致“w”、“a”、“d”和“D”标志被删除。

据我所知,这种行为与 POSIX ACL 不同。

无论如何,对我来说,解决方案是将用户的 umask 设置为 0。

在我的例子中,其中一个用户是 apache,因此我设置umask 000/etc/init.d/http

其他用户都是 chrooted SFTP 用户,我使用 ssh pam 配置中的 pam_umask 将他们的 umask 设置为 000。

我的一个朋友在这里找到了一些关于这个问题的讨论: http://www.spinics.net/lists/linux-nfs/msg27799.html

相关内容