UID が一致しないシステム間で NFSv4 UID マッピングを行うにはどうすればよいですか?

UID が一致しないシステム間で NFSv4 UID マッピングを行うにはどうすればよいですか?

私は 3 つの Ubuntu システムを備えたラボで作業しており、NFS 経由でいくつかのファイルシステムをクロスマウントしたいと考えています。しかし、システムの一部に同じユーザー名がありますが、3 つのシステムは別々に設定されているため、UID と GID は一致しません。あるシステムから別のシステムに NFS ファイルシステムをマウントすると、所有権が間違って表示されます。たとえば、UID 1000 が server1 の alice で、同じ UID 1000 が server2 の bob である場合、server1 が server2 のエクスポートされたファイルシステムをマウントすると、bob のファイルは alice によって所有されているように見えます。

では、NFS (v4) で、関連付けられたユーザー名を介してサーバー間の UID を変換する方法はありますか? これについて Google で検索すると、Kerberos、LDAP、または NIS への参照が多数見つかりましたが、このような単純なタスクには過剰な機能のように思えますし、これらのシステムは集中管理されていないため、不可能かもしれません。このリンク私が尋ねていることは不可能であることを示しているようです。それは正しいですか?

編集: 考えられる、またはインターネットで見つけられるあらゆる構成を試しましたが/etc/idmapd.conf、idmapd プロセスは明らかに実行されていますが、これまでのところ、NFS がそれを使用しようとしているという証拠はまったく見られず、NFS マウント時に報告されるユーザー ID にまったく影響がありませんでした。

答え1

NFSv4 は ID マッピングをサポートします。有効にすると、NFS は数値 ID の代わりにユーザー名を送信します。ユーザー名はホスト上の UID にマップされるため、同じユーザーに対して異なる数値 UID を持つホストは問題になりません。

ID マッピングは常に Kerberos セキュリティ モード ( sec=krb5) で使用されます。

ID マッピングは AUTH_UNIX (デフォルトsec=sys) モードでも使用できます。設定の詳細については、次の質問への回答で説明しました。sec=sys で NFSv4 idmap を動作させる方法

答え2

集中化されたユーザー管理がない場合、私が考える「最善の」方法は、すべてのサーバーで各ユーザーに対して同じ GID と UID を使用するように強制することです。ここでは、ファイルとディレクトリについてのみ話しています。

この場合、私は次のようにします。

  • 現在使用中の各 UID と GID を登録します。
  • すべてのサーバーのグループを編集し/etc/passwdて一致させます。次のステップが速くなるように、できれば新しいUIDとGIDにします。/etc/group
  • これを実行します(しばらく時間がかかります)。

    find / -group <OLD_GID> -exec chgrp <NEW_GID> '{}' \+
    find / -user  <OLD_UID> -exec chown <NEW_UID> '{}' \+
    

関連情報