我想要的是添加一个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