web-dev-qa-db-ja.com

LDAP + KERBEROS + NFS。なぜidmapdが必要なのですか?

私がやろうとしていること

私はfreeIPAドメインを持っており、いくつかのクライアントとSynology NAS(freeIPAにも登録されています)がいます。

NAS上にNFSv4 + krb5をサポートする共有フォルダーを作成しました。クライアントから、LDAPユーザー[email protected]のチケットを取得し、このフォルダーをマウントします。

最初は、このフォルダーに作成されたファイルはnobodyユーザーが所有します。

NASの/etc/idmapd.confをに変更することで、ようやく機能するようになりました

  • ドメインを正しく設定する
  • [email protected]とローカルユーザーの間に静的なマッピングがある

質問

NFS全体でのidmapdの役割を理解しています。

ただし、この場合:

  • なぜ明示的なマッピングが必要なのですか?それ自体がわかりませんか?
  • なぜマッピングが必要なのですか? NASも同じfreeIPAドメインにあり、LDAPクライアントであり、適切なkerberosプリンシパルを持っています。[email protected]が誰であるかを完全に認識しています。なぜ、そのuidを使用できないのですか。ローカルユーザーのuidではなく、そのフォルダーのファイルの所有権について?ローカルユーザーの作成を回避できますか?

私の現在のidmapd.confは次のようになります:

[General]
Domain=hq.example.com

[Mapping]
Nobody-User=guest
Nobody-Group=users

[Translation]
Method=nsswitch
GSS-Methods=static,synomap

[Static]
[email protected]=user1

私が達成したいのは、静的マッピング[email protected]=user1が必要ないことと、可能であれば、NASにローカルユーザーuser1を作成する必要すらないことです。

2
cornuz

要するに、NFSv4プロトコルは、UID/GID number s(以前のバージョンで使用されていた)ではなく、サーバーとクライアント間で共有されるユーザーnameに依存しているということです。 )およびUID <==>ユーザー名マッピングは、実際にはクライアントとサーバーで異なる場合があります。

NFSv4プロトコルの一部として、サーバーは両方とも、共通のセキュリティコンテキスト/権限、ownerおよびowner_groupを、ローカルファイルシステムの操作に意味のあるものにマップする必要があります。そのマッピングは、Linuxシステム上のIDMAPDによって行われます。

Linuxシステムでは、多くのローカルファイルシステム操作はUID/GIDベースですが、NFSサーバーに送信する前に、共有NFSv4コンテキストに変換する必要があります。

多分 RFC 35 それをよりよく説明することができます:

§5.8。 ownerとowner_groupの解釈

推奨される属性"owner"および"owner_group"(および「acl」属性内のユーザーとグループ)は、UTF-8文字列で表されます。クライアントまたはサーバーでの特定の基礎となる実装に関連付けられている表現を回避するために、UTF-8文字列の使用が選択されています。 [RFC2624]のセクション6.1が追加の理論的根拠を提供していることに注意してください。クライアントとサーバーには、ローカルストレージまたはエンドユーザーへの表示に使用されるownerとowner_groupの独自のローカル表現があることが期待されます。したがって、これらの属性がクライアントとサーバー間で転送されると、ローカル表現が"user@dns_domain"という形式の構文に変換されることが期待されます。これにより、同じローカル表現を使用しないクライアントとサーバーが、両方で解釈できる共通の構文に変換できるようになります。


編集 imapd.confへの応答。

ローカルユーザーへの静的マッピングを使用している。 NFSv4 IDをLDAPユーザーにマップすることをお勧めします。これは、おそらくnsswitchオプションで実行する必要がありますが、そうではないようです。 NFSサーバー上のidmapdの詳細度を上げることで、何が起こっているかを確認することができます。

または、LDAPサーバーに直接クエリを実行するようにidmapdを構成します。正確な構文は、使用しているバージョンによって異なりますが、 man page は次の行に沿って表示されます。

[General]

Verbosity = 0
Domain = domain.org
Local-Realms = DOMAIN.ORG,MY.DOMAIN.ORG,YOUR.DOMAIN.ORG

[Mapping]

Nobody-User = nfsnobody
Nobody-Group = nfsnobody

[Translation]

Method = umich_ldap,nsswitch
GSS-Methods = umich_ldap,static

[Static]
[email protected] = johnny

[UMICH_SCHEMA]   
LDAP_server = ldap.domain.org
LDAP_base = dc=org,dc=domain
1
HBruijn