私がしようとしているのは、ディレクトリ、子と孫、ひ孫などのディレクトリとファイルがLinuxで削除(「D」)フラグを継承できるようにするNFS v4ACLを追加することです。サーバーの基盤となるファイルシステムはxfsとです。
私も特に詳しくはありません。
サーバーはCentos6.3、クライアントはCentos6.4です。
私がmanページを読んだことによると、「i
」フラグは、このACLを子ファイル/ディレクトリに設定することを意味しますが、現在のディレクトリには適用しないでください。親(/var/www/tauweb
)に 'i
'フラグを設定していませんが、作成されたすべての子dirに設定されているようです。
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:[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
最後から2番目のユーザーtau
エントリの「i」に注意してください。 ACEを編集したときには設定されていませんでしたが、すぐに表示されました。システムによって追加されたようです。
私が見つけたすべてのドキュメントを読むと、ACEの最上位セットの最初のコロンの後の「dg」によってACLが子dirに継承されるはずです(私が理解しているように、「g」はプリンシパルがグループであり、ユーザー)。
ここで、「i」フラグは明らかに、このACEを継承させることを意味しますが、実際のパーマチェックでは考慮しません。
次に、子dir /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は継承されません。
A:g:[email protected]:rxtcy
のみがd2とd3に適用されますが、継承しますが、参照はしませんA:fdig:[email protected]:rwaDxtcy
は、子供、孫などに継承されます。
どんな助けや提案も大歓迎です、ありがとう。
この問題の原因を見つけました。 NFS v4 ACLは、ユーザーのumaskを適用しているようです。私のユーザーは002のumaskを持っていたので、他のユーザーへの書き込みがないために、「w」「a」「d」および「D」フラグが削除されていました。
私の知る限り、この動作はPOSIXACLとは異なります。
いずれにせよ、私にとっての解決策は、ユーザーのumaskを0に設定することでした。
私の場合、ユーザーの1人がApacheだったので、umask 000
を/etc/init.d/http
に設定しました。
他のユーザーはすべてchrootされたSFTPユーザーであり、ssh pamconfigでpam_umaskを使用してumask000を設定しました。
私の友人はここで問題のいくつかの議論を見つけました: http://www.spinics.net/lists/linux-nfs/msg27799.html