web-dev-qa-db-ja.com

NFS4 / ZFS:ACLをクリーン/継承状態に戻します

私の問題は この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ユーザーに伝える必要がありますか?

2
Keiichi

「chmodA-file」を使用すると、ZFSファイルシステムに保存されているファイルからすべてのACLを完全にクリアできます。その後も表示されるのは、ファイルのアクセス許可から計算された「偽の」ACLです。それらも削除したい場合は、前のコマンドに加えて「chmod0file」を実行できます。

1
jlliagre