私の問題は このWindowsの質問 と同じですが、NFS4(Linux)と使用している基盤となるZFS(OpenIndiana)に関係しています。このZFSは、LinuxユーザーとWindowsユーザーのそれぞれに対してNFS4とCIFSを介して共有されています。両方のユーザーグループがACLの恩恵を受けるのは良いことですが、1つの欠けているパズルのピースはこうなります。
各ユーザーにはホームがあり、そこでトップレベルの継承されたACLを設定します。彼は後で、含まれているファイル/フォルダーのアクセス許可を繰り返し調整できます。時間の経過とともに、ACLエントリの汚染の増加を回避するために、権限を再度一般化する必要がある場合があります。必要なアクセス許可を取得する必要がある場合は、すべてのファイルのACLを微調整できますが、それでは継承されたACLの目的が無効になります。では、上記のリンクの質問のように、ACLを完全にクリアするにはどうすればよいですか?
空白の継承されたACLがどのように見えるかについては何も見つかりませんでした。このユースケースは単に存在しないようです。実際、solarischmodのマンページには明確に記載されています
A- Removes all ACEs for current
ACL on file and replaces
current ACL with new ACL that
represents only the current
mode of the file.
つまりパーミッションビットを表すもので満たされた3つの新しいACLエントリを取得しますが、これはクリーンアップにはかなり役に立ちません。
すべてのACEを手動で削除しようとすると、最後のACEで取得します
chmod A0- <file>
chmod: ERROR: Can't remove all ACL entries from a file
ちなみに、どちらが私に考えさせます:そしてなぜそうではないのですか?実際、ファイル固有のACL全体を削除したいのです。
同じことがLinuxにも当てはまります。Linuxは1(!)で始まるACEを列挙し、その問題をあまり熱心に言葉で表現しません。
nfs4_setacl -x 1 <file>
Failed setxattr operation: Unknown error 524
では、Solaris/NFSでのACLの背後にある考え方は何ですか?それらは決してクリーンアップできませんか? ACL設定コマンドの再帰オプションが、単一のACLを設定して子を継承させるのではなく、すべての子を汚染するのはなぜですか?これは本当にデザイナーの意図ですか? Windowsクライアントを使用してACLを完全にクリーンアップできますが、アクセス許可を統合するためだけにOSを切り替える必要があることをLinuxユーザーに伝える必要がありますか?
「chmodA-file」を使用すると、ZFSファイルシステムに保存されているファイルからすべてのACLを完全にクリアできます。その後も表示されるのは、ファイルのアクセス許可から計算された「偽の」ACLです。それらも削除したい場合は、前のコマンドに加えて「chmod0file」を実行できます。