Zfs: NFS / POSIXACLのサポート

作成日 2011年03月23日  ·  51コメント  ·  ソース: openzfs/zfs

POSIXACLをサポートするのは良いことです。
私が見るように、zfsはすでにxattrをサポートしており、他のいくつかのファイルシステムはxattrを介してACLをサポートしています。 内部はわかりませんが、このタスクは簡単に実装できるかもしれません。

Feature

最も参考になるコメント

LinuxスタイルのPosixACLは、xattrとして実装され、masterにマージされました。 これらはネイティブNFSACLとは独立して保存され、競合することはありません。 この機能を有効にするために、新しいデータセットプロパティacltypeが追加されました。 最高のパフォーマンスを得るには、 acltype = posixaclxattr = saの両方を設定することを強くお勧めします。 詳細については、更新されたマニュアルページを参照してください。

       acltype=noacl | posixacl

           Controls  whether  ACLs  are  enabled and if so what type of ACL to
           use.  When a file system has the acltype property set to noacl (the
           default)  then  ACLs are disabled.  Setting the acltype property to
           posixacl indicates Posix ACLs should be used.  Posix ACLs are  spe-
           cific  to  Linux  and are not functional on other platforms.  Posix
           ACLs are stored as an xattr and therefore will  not  overwrite  any
           existing ZFS/NFSv4 ACLs which may be set.  Currently only posixacls
           are supported on Linux.

           To obtain the best performance  when  setting  posixacl  users  are
           strongly encouraged to set the xattr=sa property.  This will result
           in the Posix ACL being stored more efficiently on disk.  But  as  a
           consequence of this all new xattrs will only be accessable from ZFS
           implementations which support the xattr=sa property.  See the xattr
           property for more details.

全てのコメント51件

残念ながら、最初に表示されるよりも少し注意が必要です。

内部的には、ZFSはNFSスタイルのACLを完全にサポートおよび実施します。 残念ながら、Linuxでは、既存のツールはPosixスタイルのACLしか操作しません。 NFS ACLモデルをRich-ACLという名前でLinuxに導入するために、いくつかの作業が行われています。 新しいRich-ACLツールチェーンと統合するには、ZFSは仮想system.richaclxattrインターフェイスを提供する必要があります。 このxattrは、他のxattrのように格納されるのではなく、代わりにzfs_getacl()およびzfs_setacl()と統合されます。 このxattrフックは、vsecattr_tをxattrのバイトの線形ストリームとの間で変換する役割を果たします。

Posix ACLは、いくつかのフックを追加し、既存のPosix ACLサポート機能を活用することで、簡単にサポートできます。 ただし、PosixとRich ACL(NFS / ZFS)の間の一貫性の問題を回避するために、これらを実装しないことが最善の場合があります。

説明ありがとうございます。 POSIX ACLをサポートしているアプリケーションがいくつかある場合は、POSIXACLも役立つと思います。 私が覚えているように、サンバにはそのようなものがあります。 rsyncはACLをサポートしていますが、manが「ACL」とだけ言っているので、POSIXだけかどうかはわかりません。 他のアプリケーションについて知らない。
他のACLが存在していても、それらは役に立たないわけではありません。 そして、将来的に実装されると考えられるかもしれません。

必要な作業の概要

内部的には、ZFSはNFSスタイルのACLを完全にサポートおよび実施します。 残念ながら、Linuxでは、既存のツールはPosixスタイルのACLしか操作しません。 NFS ACLモデルをRich-ACLs(pdf)という名前でLinuxに導入するためにいくつかの作業が行われました。 新しいRich-ACLツールチェーンと統合するには、ZFSは仮想system.richaclxattrインターフェイスを提供する必要があります。 このxattrは、他のxattrのように格納されるのではなく、代わりにzfs_getacl()およびzfs_setacl()と統合されます。 このxattrフックは、vsecattr_tをxattrのバイトの線形ストリームとの間で変換する役割を果たします。

Posix ACLは、いくつかのフックを追加し、既存のPosix ACLサポート機能を活用することで、簡単にサポートできます。 ただし、PosixとRich ACL(NFS / ZFS)の間の一貫性の問題を回避するために、これらを実装しないことが最善の場合があります。

どのセキュリティモデルを適用する必要があるかについてのマウントオプション/ファイルシステムプロパティはどうですか? (そして、setfacl / getfaclのような管理ツールからも完全に隠されているものかもしれません)。
Linuxの世界では、Rich-ACLはほとんど使用されていません。 PosixACLははるかに利用されています。 私の典型的な構成では、ファイルシステムにACLがないことは目を見張るものです。
このようにして、動作するACL実装(Posix)をはるかに短い時間で取得できると思います。

私も、POSIXACLサポートがLinux上のZFSに統合されることを望んでいます。 LinuxはPOSIXであり、RichACLがより主流になるまで(または少なくともカーネル内で)、Linux上のZFSへのPOSIX統合は理にかなっていると思います。

これが含まれているのを見たいです! 私たちにとってはほとんど目を見張るものでしたが、数か月間なしで暮らすことにしました。

ACLが適切に処理されたら、aclmodeプロパティを復活させるための次のパッチがマージされていることを確認する必要があります。 この変更は、IllumosとFreeBSDの実装にすでに加えられています。

問題#742:ZFSの「aclmode」プロパティを復活させる
https://www.illumos.org/issues/742
https://github.com/illumos/illumos-gate/commit/a3c49ce110f325a563c245bedc4d533adddb7211

Posix <-> NFSv4ACLをマップすることが可能です。
IETFには、そのマッピングに関するドラフトがあります:http://tools.ietf.org/id/draft-ietf-nfsv4-acl-mapping-03.txt
ただし、Posix => NFSv4(単方向)を明確に指定しているだけです。

理論的にはマッピングアプローチが最適だと思いますが、1:1マッピングが不可能なため、他のアプローチよりもエラーが発生しやすくなります。
ユーザーが拒否される(またはさらに悪いことに、与えられる)ことを意図していない特権を拒否される(またはさらに悪いことに)というコーナーケースは常にあります。
少なくとも、「大きな脂肪の警告」が付いているはずです。
しかし、それが何をすべきかを_必須_に近似する_セキュリティ_機能を持つことは賢明ではありません。
提案:「あいまいな」NFSv4 aclでは、カーネルログへのアクセスと出力エラーを禁止します。
その提案に関する問題:スナップショットを手動で修正することはできません。
それらを設定する場合、Posix ACLの「奇妙な」ディスク上のフォーマットと見なすことができるため、問題にはなりません。
NFSv4 ACLのはるかに構成可能な継承により、解決すべき別の一連の問題が発生します。

この実装の最初のステップは、次のことができるはずだと思います。

  • POSIX ACLを書き込み、書き込んだ内容を読み取って適用します。
  • それらをNFSv4ACLとしてディスクに書き込み、他の実装も意図したとおりにそれらを読み取って適用できるようにします。
  • 他の実装によって作成された自明ではないマッピング可能なNFSv4ACLで大声で失敗します。
    **そのアイテムへのアクセスを拒否します。
    **ユーザーが「特定の」継承フラグを持つディレクトリにファイルを作成できないようにする
    **おそらく、最も安全なデフォルト値を使用して、ファイルシステムごとに構成可能な「失敗動作」があります。 (そしてスナップショットの場合??)

後続のステップで、マッピングロジックNFSv4 => Posixを調整して、さらにカスタマイズ可能にすることができます。

より良いアイデアはありますか?

これは私にとって合理的な出発点のように思えますが、いくつかのコメントがあります。

完全な1:1マッピングは不可能ですが、実際にはそれほど悪くはありません。 ご指摘のとおり、ディスク上に正しいACLを設定するために使用できる、明確に指定されたIETF Posix-> NFSv4マッピングがあります。 ディスク上でSAとして設定されると、既存のzfs実装は、VFSの汎用LinuxACLフックとは無関係にそれらの強制を開始する必要があります。

もちろん、ACLを読み取るには、適切なNFSv4-> Posixマッピングを実装する必要があります。 ただし、これの合理的な実装はすでに存在します。 すべてのNFSv4ACLをPosixACLとして保存することを余儀なくされているLinuxnfsカーネルサーバーは、損失の多い操作です。 余談ですが、長期的には、生のnfsv4 / zfsACLを公開することはnfsカーネルサーバーにとって良いことです。 無意味なNFSv4-> Posix-> NFSv4変換を回避できる可能性があります。

最後に、これが正しいことを確認するためのテストスイートが必要です。 結局のところ、これはセキュリティ機能です。 幸いなことに、いくつかの優れたテストスイートがすでに存在していることを理解しています。

グレッグ・バンクスによって行われた前の仕事について、アニーシュ・クマー、アンドレアス・グリューンバッハーによるリチャクルで進行中の仕事があります。 3.1メインラインマージ用のパッチが提出されましたが、いくつかの変更のため、時間がかかり、次のリリースでマージされます。
パッチへのリンク:-https: //lkml.org/lkml/2011/10/18/279

これがメインラインに到達したら、それらを利用してZFSのnfsv4aclsをサポートできます。

これがメインラインに到達したら、それらを利用してZFSのnfsv4aclsをサポートできます。

そして、POSIX ACLはどうですか? ブライアンは、xattrを使用してそれらを実装することはそれほど難しくないと述べました。 これも誰かが行うことができますか? :)

ZFSはnfsv4aclsをサポートしているため、私見では、最初にnfsv4aclsをサポートし、posixaclsが本当に必要かどうかを確認する必要があります。 はいの場合、それらの間のマッピングを定義する方法を理解できます。

両方ができない理由はわかりません。 Maxximinoは現在、十分に文書化された翻訳を介してsystem.posixaclxattrインターフェイスのサポートに取り組んでいます。 system.richacl xattrインターフェースの追加は、統合された実際のツールチェーンが利用可能な場合にサポートできます。

学業や仕事に関連する仕事として「現在働いている」ことは私に許されますが、「自由な」時間のために優先度が高くなります。
私はすでにIllumOsCDDLライセンスコードを調べて、NFSv4 <-> posixacl変換を行うコードを見つけました。 正確さの観点から、それは堅固な基盤でなければなりません。 詳細はお問い合わせください。

私はsolarisがACLを管理するためにchmodの2つのコピーを提供するだけであることを知っています。 残念ながら、これは非常に厄介で不格好です。 Linux上のzfsでACLの表示および変更機能を提供するために、ヘルパープログラム、setzacl、getzaclなどを使用することを提案します。 インターフェースは、solaris chmodと同様(または互換性)で作成する必要があります。改善される可能性がありますが、両方のzfs linux実装で標準化され、「nfs4」ACLを使用して将来のファイルシステムを処理できることが望ましいです。 (nfs4 ACLと呼ばれる理由を誰かが説明できれば、それも大きな助けになります!)

Sambaユーザーはnfs4ACLを使い続けたいと思うかもしれません。特に、機能ごとに一致するWindows NTFSACLに最も近いためです。 これは、新しいバージョンのWindowsが特定のACLをチェックするActiveDirectory環境でユーザーのホームフォルダーとプロファイルフォルダーのサーバーとしてSambaを使用する場合に重要です。 また、Windowsの相互運用機能はSunの時代のZFSの設計目標の1つだったので、それが実現するのを見るのは悲しいことです...

そうは言っても、私はPOSIXコンプライアンスの推進力を完全に理解しています。

aarcane-NFSv4 ACLの履歴については、 http: //wiki.linux-nfs.org/wiki/index.php/ACLsを参照して

現在、Samba 4DCとZFSCIFSの共有を実験しています。 基本システムはubuntu12.04です。

XP Pro SP3クライアントは、Active Directory(ユーザーとコンピューター)を表示および管理し、EXT4から共有されているフォルダーにNTFSアクセス許可を適切に設定できます。

ZFSから共有されたフォルダーは、XP guiを介してアクセス許可を変更するとすぐに、CIFSを介して閲覧できなくなります(ただし、サーバーのコマンドラインから(予想どおり)引き続きアクセスできます)。

これは上記のスレッドで概説されている問題の結果だと思いますか? 回避策のアイデアはありがたく受け取られます。

Samba4を介して完全なNTFSACL管理を有効にすると、ZFSにとって大きなボーナスになります。

問題の詳細を投稿していただけますか? 正確なSamba4バージョン、使用しているファイルサーバー(smbdまたはntvfs)、および関連する設定はありますか? (たとえば、vfs_acl_xattrまたは同様のものを使用していますか?)
同じSamba4構成が「acl」オプションなしでマウントされたextYで機能する場合は、別の問題を開く可能性があります。

Sambaを介した実際のNFSv4(NTFSのような)ACLの操作については、「リッチACL」パッチがカーネルにマージされた後でのみ、これを_クリーンな方法で_行うことができます。

Maxximinoに感謝します。
Samba 4.0.0alpha19を使用しています。
私はntvfs(sudo / usr / local / samba / sbin / samba -i -M single)でファイルをサーバーしようとしているだけです-ext4からnetlogonとsysvol共有を提供し、aclinherit =を使用してミラーリングされたドライブのペアからzfs共有を提供しますパススルーセット。
vfs_acl_xattrモジュールは使用されていません。

「Sambaを介した実際のNFSv4(NTFSのような)ACLの操作については、「リッチACL」パッチがカーネルにマージされた後でのみ、これをクリーンな方法で実行できます。」

私が理解している限り、公式のrichaclsパッチはEXT4のみをサポートしています-たとえば、opensuse(デフォルトでrichaclsが含まれています)を使用したり、richaclsをubuntu / debianにパッチしたりすると、zfs + samba4 + ntfsaclsは「動作を開始するだけです「?

私はあなたの問題を再現しました。
vfs_acl_xattrを明示的に使用していませんが、Samba4は同じことを「サイレント」に実行しています。 ACLを「security.NTACL」という名前のxattrに保存します(これはgetfattr -n security.NTACL $ FILENAMEで確認でき、setfattr -x security.NTACL $ FILENAMEで削除できます)。
その属性はSambaによってのみ考慮され、zfs / linuxカーネル内の何によっても考慮されません。 / dev / urandomからzfsのxattrsに値を保存する単純なperlプログラムは、それらを破損することなく読み戻すことができるので、これはSamba4の問題だと本当に思います。
この問題は、zfs PROBABLYでのみ発生します。これは、他のfsでは、xattrsを使用する代わりにPosixACLにACLをマップできるためです。

いいえ、カーネルに豊富なaclパッチを適用するだけでは不十分です。 これらのパッチがメインラインに到達すると、豊富なaclサポートをzfsに統合し始めることができます。

SuseでSamba4を構築しているところです。 私はあなたの複製を別の角度から再現しようとしていたと思います。
私の痛みを救った。

おそらく、合理的な(短期的な)回避策は、安定したSamba 3環境を介してzfsからファイルを提供し、たとえば別のLinux-VServerのSamba 4DCに対して認証することです。

中期的には、ZFSベースのCIFS共有をSamba 4 ADと組み合わせて、すべて同じマシンで優れた汎用ハードウェアサポートを備えたLinuxOSに基づいたユーティリティを強調することはできません。 中小企業/非営利のアプリケーションは巨大です。

これまでのすべての作業に感謝します。

私は次のスレッドに出くわしました:
https://lists.samba.org/archive/samba/2012-August/168660.html

要約すると、Samba 4にはvfs_zfsaclと呼ばれるaclモジュールがあります。これはSolarisで使用されるため、SambaはネイティブのZFSACLを使用できます。 このモジュールをzfsonlinuxで使用することは可能でしょうか? Linuxのユーザースペースで必要なAPIを利用できるようになっていますか?

@kisgこれは良い質問です。これは、Sambaのvfs_zfsaclモジュールについて聞いた最初の質問です。 何人かの人は、彼らが期待しているインターフェースを決定するために、いくらかの足取りをする必要があるでしょう。 それが何であるかに応じて、私たちはそれを提供できるかもしれません。 翻訳が行われない場合でも、LinuxボックスでACLを管理できないという問題が発生します。

ソースをざっと調べました。
:あなたはここにvfs_zfsacl.cのサンバv4-0-安定分岐バージョンを見つけることができますgit.samba.orgを

内部のSamba表現からネイティブのSunOSNFSv4 acl / faclAPIに変換するだけです。 このAPIは、独自のNFSv4acl実装の薄いユーザースペースラッパーを使用してFreeBSDにも実装されています。

この分析に基づくと、Linuxでこの実装を再利用することはできません。 代わりに、zfsonlinuxのrichacl統合が行われた場合、librichaclライブラリを使用して、Samba用の同様に単純な(できれば1000行未満)vfs_richaclモジュールを作成できます。

richaclカーネルパッチをざっと見てみると、zfsonlinuxの統合は、実際にカーネルにパッチを適用せずに、richaclコードの必要な部分(データ構造とxattr変換)をカーネルバージョンのzfsツリーにプルするだけで実行できるようです。ネイティブでサポートしないでください。 私たち(私の会社)は標準のUbuntu LTSカーネルを実行し、追加モジュールとしてzfsonlinuxのみをプルしたいので、これは私たちにとって重要です。

ただし、richaclがまだ維持されているかどうか(そのリポジトリは実際には最新に保たれていない)、およびバニラカーネルに含めるための軌道に乗っているかどうかはわかりません。

richaclパッチセットの作成者に連絡しました。 彼は私に次の実験的なrichaclvfsモジュールを指摘しました: v4acls-experimental / samba.git

したがって、zfs自体のrichaclサポートを除いて、ほとんどすべての部分が適切に配置されている(または少なくとも実験形式で存在している)ように見えます。

たぶん、libsunacl.cをLinuxに移植するだけで、samba側からは十分でしょうか?

http://sourceforge.net/projects/libsunacl/

しかし、私が理解している限り、「aclmode」はまだzfsonlinuxにありません。

なぜ私たちがまだ何らかの形のACLサポートを持っていないのかさえ分かりません。 なぜ持っている
zfs aclsがオンになっていない? chmodとlsのコードを知っています
存在します。getfaclスタイルのgetzaclは今までに提供されているはずです。
ただし、ACLがないのにはいくつかの理由があります。
2013年2月15日14:07、「franx」 [email protected]は次のように書いています。

たぶん、libsunacl.cをLinuxに移植するだけで、samba側からは十分でしょうか?

http://sourceforge.net/projects/libsunacl/

しかし、私が理解している限り、「aclmode」はまだzfsonlinuxにありません。


このメールに直接返信するか、Gi tHubhttps://github.com/zfsonlinux/zfs/issues/170#issuecomment-13630736で表示してください。

zfsaclがサポートされています
テスト:
aclマウントオプションを有効にして他のファイルシステムのsmb共有にファイルを作成し、WindowsでACLを設定します。

aclinherit = passthroughを使用してそのファイルをzfsonlinuxボリュームに移動します
aclはpreserverdです。

Wath atmには解決策がありませんが、それはsambaで実行されます。

acl_xattrまたはacl_tdbはいずれも、このような構成では正しく機能しません。bsdではvfs_zfsaclを使用します。

トラフlibsunaclは、zfs2bsdの翻訳者のように見えます

私の質問はばかげているかもしれませんが、ACLサポートがあるかどうかを明確に理解したいと思います。 私はVBoxubuntu最小サーバー12.04LTSを作成しましたが、インストールされたubuntu-zfsよりも、poolwコマンドを作成しました

'mypool'の履歴:
2013-05-05.15:12:49 zpool create -f mypool / dev / disk / by-id / ata-VBOX_HARDDISK_VB88a04e0d-d8d1e7a4

「タンク」の歴史:
2013-04-30.13:44:54zpool作成タンク/ root / vol1
2013-05-01.00:13:33 zfs set aclinherit =パススルータンク
2013-05-05.13:50:14 zfs set dedup = ontank

タンクは問題なくsetfaclをサポートします
mypoolはサポートしておらず、操作はサポートされていないと言っています。

sambaでzfsを使用したいのですが、フォルダーへの複数のユーザーアクセスを制御する必要があります。 そのように
サーバー@ルート:〜#は、setfacl -mg:USERS:--- test4v007 /

ZFS用のrichaclsパッチを実装したいのですが、ZFSの経験がまったくないので、ZFSonLinux開発者の1人が何らかのヘルプ(主にヒントやディスカッションの形で)を提供できれば便利です。

これにバンプを付けたいのですが...

@ behlendorf-安定したファイルシステムリリースがありますが、これが

Sambaを使用したプロファイルストレージNASサーバーの展開を進めたいと考えていますが、ACLがないということは、経験ベースがすべてLinuxであるため、本当にやりたくないFreeBSDに固執する必要があることを意味する場合があります。

私は、それが完全にオフトピックではないことを願っています。
Debian kFreebsdを試しましたか?

まるでLinuxのようなものです。

@ sopmot-ご存知のとおり、私は以前にそれを見て、

とても良い叫び、私を正しい軌道に乗せてくれてありがとう-失礼をお詫びします。

私はkfreebsdを見続けていますが、iscsi、nfsv4、および
kvm仮想化と同等です。 私はそれを根に使うことを真剣に考えていました
それらの欠点が明らかになるまで
2013年5月19日午前9時50分、「TamasPapp」 [email protected]は次のように書いています。

私は、それが完全にオフトピックではないことを願っています。
Debian kFreebsdを試しましたか?

まるでLinuxのようなものです。


このメールに直接返信するか、Gi tHubhttps://github.com/zfsonlinux/zfs/issues/170#issuecomment-18120673で表示してください

私もこれが対処されるのを見たいです。 残念ながら、最近は時間に余裕がないので(さらに、低レベル/カーネルのことについてのがらくたを知りません)、自分自身を助けるために多くのことをすることはできません:(本当に私はただ良い方法を探していますが特定のディレクトリ内の新しいファイルに特定のアクセス許可を適用します。ファイルを公開されているフォルダに配置することがよくあります。umaskを何かに設定したくないので、ファイルを緩和されたアクセス許可で自動的に設定できると便利です。私が作成するほとんどのファイルはリベラルで、最終的にはホームフォルダに保存されます。OSOL/ FreeBSDでは、NFSv4 ACLを使用してこれを行いますが、誰かがアイデアを持っている場合は、より良い解決策を受け入れることができます。 ofは、30分ごとに関連するディレクトリにpermを再帰的に設定するcronjobを実行していますが、これは非常にエレガントではありません!

参考までに、人々は私と同じ間違いを犯しません-Debian kFreeBSDはZFSサポートには最適ですが、ACLはユーザーランドからは機能せず、「関数が実装されていません」と表示されます-Debianバグを参照してください: http:// bugs.debian.org/cgi-bin/bugreport.cgi?bug=607573

@iamacarpetこの機能を必要とする人がそれに取り組む時間があるとすぐに、それは起こる可能性があります。 現在、プロジェクトの主要な推進要因はACLをあまり使用していないため、優先順位リストの一番下にあります。 しかし、このサポートを必要としている人がすぐに参加してそれを実行することを妨げるものは何もありません。 申し訳ありませんが、それは状況の現実です。

こんにちは、

バックアップアプライアンスでzfsonlinuxを使用しており、ACLは統合の目的で重要であると考えています。 WindowsコンピューターからZFS共有ボリュームのアクセス許可を変更するなど、いくつかの一般的な操作が必要です。

ACLはまだロードマップにありますか?

ありがとう。

@ n1mhバージョン0.8.0に予定されています。

@maxximinoのおかげで、

この機能が必要な場合は、提案されたパッチを現実的なワークロードでテストできれば非常に役立ちます。 ご使用の環境で期待どおりに動作することを確認してください。 Posix ACLはデフォルトで無効になっていますが、データセットの_acltype_プロパティを設定することで有効にできます。

zfs set acltype=posixacl pool/dataset

LinuxスタイルのPosixACLは、xattrとして実装され、masterにマージされました。 これらはネイティブNFSACLとは独立して保存され、競合することはありません。 この機能を有効にするために、新しいデータセットプロパティacltypeが追加されました。 最高のパフォーマンスを得るには、 acltype = posixaclxattr = saの両方を設定することを強くお勧めします。 詳細については、更新されたマニュアルページを参照してください。

       acltype=noacl | posixacl

           Controls  whether  ACLs  are  enabled and if so what type of ACL to
           use.  When a file system has the acltype property set to noacl (the
           default)  then  ACLs are disabled.  Setting the acltype property to
           posixacl indicates Posix ACLs should be used.  Posix ACLs are  spe-
           cific  to  Linux  and are not functional on other platforms.  Posix
           ACLs are stored as an xattr and therefore will  not  overwrite  any
           existing ZFS/NFSv4 ACLs which may be set.  Currently only posixacls
           are supported on Linux.

           To obtain the best performance  when  setting  posixacl  users  are
           strongly encouraged to set the xattr=sa property.  This will result
           in the Posix ACL being stored more efficiently on disk.  But  as  a
           consequence of this all new xattrs will only be accessable from ZFS
           implementations which support the xattr=sa property.  See the xattr
           property for more details.

アイテムacltype = nfs4も認識され、同じように扱われる必要があります
noaclですが、互換性のために受け入れられましたか?
2013年10月29日15:05、「BrianBehlendorf」 [email protected]
書きました:

LinuxスタイルのPosixACLは、xattrとして実装され、にマージされました。
主人。 これらはネイティブNFSACLとは独立して保存され、保存されません。
対立。 新しいデータセットプロパティ_acltype_が追加され、有効になりました
この機能。 最高のパフォーマンスを得るには、次のことを強くお勧めします。
_acltype = posixacl_と_xattr = sa_の両方を設定します。 詳細については、
更新されたマニュアルページ:

   acltype=noacl | posixacl

       Controls  whether  ACLs  are  enabled and if so what type of ACL to
       use.  When a file system has the acltype property set to noacl (the
       default)  then  ACLs are disabled.  Setting the acltype property to
       posixacl indicates Posix ACLs should be used.  Posix ACLs are  spe-
       cific  to  Linux  and are not functional on other platforms.  Posix
       ACLs are stored as an xattr and therefore will  not  overwrite  any
       existing ZFS/NFSv4 ACLs which may be set.  Currently only posixacls
       are supported on Linux.

       To obtain the best performance  when  setting  posixacl  users  are
       strongly encouraged to set the xattr=sa property.  This will result
       in the Posix ACL being stored more efficiently on disk.  But  as  a
       consequence of this all new xattrs will only be accessable from ZFS
       implementations which support the xattr=sa property.  See the xattr
       property for more details.


このメールに直接返信するか、Gi tHubhttps://github.com/zfsonlinux/zfs/issues/170#issuecomment-27348094で表示してください

なぜこれが閉鎖されているのですか? acltype nfs4は、非標準の完全に廃止された限定POSIXドラフトACLよりもはるかに重要です。 NFS ACLは、他のプラットフォームのZFSのデフォルトであり、はるかに柔軟性があります。 また、ACLは実際にはNFSACLとNTACLの両方に適切にマッピングされるため、NFSv4とSMBの両方でシームレスなエクスポートが可能です。 POSIXドラフトACLはどちらもうまく機能しません。

POSIXドラフトACLも継承をうまく処理せず、新しいファイルのデフォルトを提供するだけです。NFSv4ACLが前進する唯一の方法です。

@synnack NFS ACLのサポートに関する主な問題は、実際にはZFS側ではありません。 そのすべての機能を保持しており、内部で使用されています。 この問題は、NFS ACLではなくPOSIXを中心に構築されているLinuxユーティリティ(getfattr、setfattrなど)にあります。 過去にNFSACLをLinuxに導入する試みがありましたが、私の知る限り、広く成功したものはありません。 最近状況が変わっていない限り、それが最大の障害です。

もちろんですが、OpenSuSEでのAndreasGruenbacherとAneeshKumarの作業を見てください。彼らは、すでにrichaclパッチを出荷しています。

richaclsがNFSv4ACLではないことを除いて、それらは、NFSv4スキーマをPOSIX ACLとマージし、ext4用に設計され、POSIXACLの最悪の部分であるIIRCをすべて保持した結果です。

必要なのは、NFSv4 ACLの適切なインターフェイスです。これにより、NFSv4 ACLをサポートするファイルシステムで、ACLを設定できます。 念のために言っておきますが、LinuxでサポートされているACLのタイプは少なくとももう1つあります(少なくとも部分的には)-AFSACLです。 したがって、複数のスキームをサポートする可能性は非常識ではありませんが、それを最適にサポートするにはSolarisのようなAPIが必要になる可能性があります...

もちろん、richaclsがNFSv4の外部にあるすべての部分を停止するようにラングリングでき、ユーザーランドがあなたを台無しにしないと仮定して(こんにちは、POSIX ACLマスクビット!)、実際にすべてのNFSv4仕様を実装していると仮定します。正直なところ、これは多くの仮定です。

私は実際にこのレートでZFS上のファイルに適用可能なIOCTLを追加することを提案します

ええ、リッチACL内にマージされたPOSIXドラフトACLのものを使って何を盗聴しているのかわかりません。

@behlendorf

この問題は、NFS ACLではなくPOSIXを中心に構築されているLinuxユーティリティ(getfattr、setfattrなど)にあります。 過去にNFSACLをLinuxに導入する試みがありましたが、私の知る限り、広く成功したものはありません。 最近状況が変わっていない限り、それが最大の障害です。

ディストリビューションがNFS4ACL管理に「nfs4-acl-tools」パッケージを使用しているようです。 nfs4_getfacl、nfs4_setfacl、およびnfs4_editfaclを使用します。 これらをzfsに対して実行すると、現在「属性を要求する操作はサポートされていません」というメッセージが表示されます。 これは、LinuxがNFS4を実行する方法のように思えます。 ここで、ツールとzfsがお互いを認識する方法が必要です。

@ghfieldsコメントをありがとう、私は数年間nfs4 aclsを調べていませんが、ユーザースペースコンポーネントで本当に良い進歩を遂げているようです。 nfs4-acl-toolsソースをざっと読んだところ、予想されるユーザー/カーネルインターフェイスはsystem.nfs4_aclという名前のxattrを介しており、xdrでエンコードされた生のaclが含まれているようです。

これを機能させるには、 system.nfs4_acl xattrのxattrハンドラーを追加するだけで済みます。これは、ZFSによって内部的に格納されたnfs4 aclと、ユーティリティによって期待される表現との間で変換されます。 NFSv4はこれの唯一のコンシューマーであるため、カーネルは使用できる汎用機能を提供しないため、このエンコード/デコードを行うための関数を作成する必要があります。

表面上、これを機能させることは非常に可能に見えます。 開発者がこの機能に取り組みたいと思ったら素晴らしいと思います。

この問題はPOSIXACLが実装されたときにクローズされたので、NFS4ACL専用に新しい問題を作成する必要がありますか? それともこれを再開する必要がありますか?

@ghfieldsは、このための新しい問題を開くことができます。 これにより、追跡が容易になります。

このページは役に立ちましたか?
0 / 5 - 0 評価
bleepcoder.com は、世界中の開発者にソリューションを提供するために、公にライセンスされた GitHub の情報を使用しています。弊社は、GitHub, Inc.をはじめ、GitHubを利用した開発者のプロジェクトとは提携しておりません。私たちは、私たちのサーバー上のビデオや画像をホストしていません。すべての権利はそれぞれの所有者に帰属します。
このページのソース: ソース

人気のあるプログラミング言語
GitHub の人気プロジェクト
その他の GitHub プロジェクト

© 2024 bleepcoder.com - Contact
Made with in the Dominican Republic.
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.