NFS v4 ACL继承问题 – “i”标志设置但不想要

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

我也不是特别熟悉.

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

通过我阅读手册页,’i’标志意味着在子文件/目录上设置此acl,但不要将其应用于当前目录.
我没有在父(/ var / www / tauweb)上设置’i’标志,但它似乎是在创建的任何子目录上设置的.

当我在dir / vaw / www / tauweb上使用nfs4_getfacl编写以下ACE时会发生什么:

A::OWNER@:rwaDxtTcCy
A::GROUP@:rwaDxtcy
A::EVERYONE@:rxtcy
A:fdi:OWNER@:rwaDxtTcCy
A:fdi:GROUP@:rxtcy
A:dg:tau@ersa.edu.au:rwaDxtcy
A:fdi:EVERYONE@:rxtcy

是系统实际上写这个:

[root@tau www]# nfs4_getfacl tauweb/
A::OWNER@:rwaDxtTcCy
A::GROUP@:rwaDxtcy
A:g:tau@ersa.edu.au:rwaDxtcy
A::EVERYONE@:rxtcy
A:fdi:OWNER@:rwaDxtTcCy
A:fdi:GROUP@:rxtcy
A:fdig:tau@ersa.edu.au:rwaDxtcy
A:fdi:EVERYONE@:rxtcy

注意倒数第二个用户tau条目中的“i”.当我编辑ACE但是立即出现时没有设置 – 系统似乎添加了它.

现在阅读我能找到的所有docoo表示在顶级ACE集合中第一个冒号之后的“dg”应该导致ACL继承到子目录(据我所知,’g’表示主体是一个组,而不是一个用户).

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

然后当创建一个子目录/ var / www / tauweb / d2时,它会得到以下结果:

[kkassahn@tau tauweb]$nfs4_getfacl d2/
A::OWNER@:rwaDxtTcCy
A::GROUP@:rxtcy
A:g:tau@ersa.edu.au:rxtcy
A::EVERYONE@:rxtcy
A:fdi:OWNER@:rwaDxtTcCy
A:fdi:GROUP@:rxtcy
A:fdig:tau@ersa.edu.au: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:tau@ersa.edu.au:rxtcy
A::EVERYONE@:rxtcy
A:fdi:OWNER@:rwaDxtTcCy
A:fdi:GROUP@:rxtcy
A:fdig:tau@ersa.edu.au:rwaDxtcy
A:fdi:EVERYONE@:rxtcy

现在d2是可删除的 – 因为它的父/ var / www / tauweb具有

答:g:tau@ersa.edu.au:rwaDxtcy ACE.
但是,ACE并没有得到继承.

只有A:g:tau@ersa.edu.au:rxtcy应用于d2和d3,虽然继承但不咨询
答:fdig:tau@ersa.edu.au:rwaDxtcy由儿童,大孩子等继承.

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

解决方法

我找到了这个问题的原因.

似乎NFS v4 ACL采用了用户的umask.

我的用户有一个002的umask,因此缺少对其他人的写入会导致’w””d’和’D’标志被删除.

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

在任何情况下,我的解决方案是将用户的umask设置为0.

在我的情况下,其中一个用户是apache,所以我在/etc/init.d/http中设置了umask 000.

其他用户都是chrooted SFTP用户,我在ssh pam配置中使用了pam_umask来设置他们的umask 000.

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

相关文章

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注