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


11

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

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

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


1
私はあなたのために最も簡単なことはすべてのものを整頓することです。ボックスは3つしかないため、現在の認証スキームをそのまま使用できますが、すべてのユーザーのUID / GIDをボックス間で同期する必要があります。これは実際には難しい作業ではありません。
セルジュ

はい、それが最終的に私がやったことです。
ライアンC.トンプソン

回答:


5

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

この場合、私は何をしますか:

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

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

うーん、 "find"ステートメントはルートディレクトリから始まります。コマンドは、システム上のすべてのディレクトリの所有権を変更しています。これらのコマンドに対する推奨される変更には、システム上のすべてのファイルが含まれます。このコマンドを実行するディレクトリを制限することをお勧めします。そうしないと、非常に悪い日になります。

2
find manから:-group gnameファイルがグループgnameに属している場合は真。gnameが数値であり、group(4)データベースにない場合、それはグループIDと見なされます。
BitsOfNix 2014年

1

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

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

IDマッピングは、AUTH_UNIX(デフォルトsec=sys)モードでも使用できます。私は答えに構成の詳細を説明しました:sec = sysでNFSv4 idmapを動作させる方法

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.