NFSv4がPOSIX ACLを利用可能な方法に変換できないのはなぜですか?

NFSv4がPOSIX ACLを利用可能な方法に変換できないのはなぜですか?

特定のフォルダ(モードを使用して設定)にパブリックアクセス権がなく、グループ所有者に読み取り専用権限を持つXFSファイルシステムがあります。すべてのファイルへの読み取りアクセスを必要とするプログラム(ユーザーCryoparc_userとして実行されている)があるため、Cryoparc_userに読み取りアクセスを許可するデフォルトのPOSIX ACLを追加しました。

残念ながら、ほとんどの処理はこのファイルシステムがマウントされたNFSv4ワークステーションで行われ、何らかの理由でPOSIX ACLはワークステーションで変換または尊重されません(もちろん、利用可能な方法ではないようです)。なぜか理解できません。

サーバーとワークステーションの両方がUbuntu 18.04を実行しており、グループがActive Directoryセキュリティグループ(AD経由で認証)で、Cryoparc_userがローカルユーザーであり、ADで設定できないため、単にCryoparc_userをグループに追加することはできません。

ファイルサーバーに対する権限は次のとおりです。

root@kraken:/EM/EMtifs# getfacl pgoetz
# file: pgoetz
# owner: pgoetz
# group: cns-cnsitlabusers
user::rwx
group::r-x
other::---
default:user::rwx
default:user:cryosparc_user:r-x
default:group::r-x
default:mask::r-x
default:other::---

root@kraken:/EM/EMtifs# id cryosparc_user
uid=1017(cryosparc_user) gid=1017(cryosparc_user) groups=1017(cryosparc_user),10002(mclellan),10003(taylorlab)

NFSv4がインストールされているワークステーションでは、次のように表示されます。

root@javelina:/EM/EMtifs# getfacl pgoetz
# file: pgoetz
# owner: pgoetz
# group: cns-cnsitlabusers
user::rwx
group::r-x
other::---

root@javelina:/EM/EMtifs# id cryosparc_user
uid=1017(cryosparc_user) gid=1017(cryosparc_user) groups=1017(cryosparc_user)

root@javelina:/EM/EMtifs# nfs4_getfacl pgoetz
A::OWNER@:rwaDxtTcCy
A::GROUP@:rxtcy
A::EVERYONE@:tcy
A:fdi:OWNER@:rwaDxtTcCy
A:fdi:1017:rxtcy
A:fdi:GROUP@:rxtcy
A:fdi:EVERYONE@:tcy

NFS4 ACLクエリの一番下の3行目を確認してください。ただし、cryoparc_userユーザーは読み取り権限を持っているようです(ローカルUIDは両方のシステムで1017です)。

cryosparc_user@javelina:/EM/EMtifs$ whoami
cryosparc_user
cryosparc_user@javelina:/EM/EMtifs$ ls pgoetz
ls: cannot open directory 'pgoetz': Permission denied

私が読んだものには設定するインストールフラグがなく、これが自動的に機能するはずですが、なぜ機能しないのか理解できません。

私の代替計画は、これらのフォルダでローカルグループを使用することに戻すことです(それで、cryoparc_userをローカルグループに追加できます)。ただし、これを行うには各システムでAD認証構造を複製する必要があるため、メンテナンスが面倒です。

別のアイデアは、Cryoparc_userユーザー資格情報を使用してファイルシステムの読み取り専用SMBマウントを実行することです。しかし、500Tファイルシステムを二重マウントすることはあまり興味深いものではありません。むしろ合理的な方法で認証タスクを実行したいと思います。

ベストアンサー1

私の問題は、POSIX ACLがどのように機能するのか理解できないことです。基本ACL は適用されるディレクトリの権限を設定します。実際、権限はサブディレクトリとファイルにのみ適用されます。親オブジェクトにデフォルトのACLを適用した後に作成されます実際、親オブジェクトはまったく使用されません。

私の注目を集めたのは、NFS開発者のリストでこの問題に対するアピールでした。ある開発者は(知ることが重要です) NFS はこれについて完全に不可論であり、サーバのプライマリファイルシステムに設定された権限にのみ頼ります。これにより、サーバー上のファイルシステムでPOSIX ACLを確認する方向がわかりました。問題はその後消えた。

おすすめ記事