NFSを介していくつかのフォルダーにサービスを提供しているServer(Debian)と、NFSv4を使用してNFSサーバーに接続し、エクスポートされたフォルダーをマウントするClient(Debian)があります。これまでのところすべてが順調ですが、接続してフォルダの内容を変更できます。しかし、ユーザーは完全に混乱しています。私が理解していることから、これは、NFSがUIDを使用してアクセス許可を設定しているためであり、ClientとServerのユーザーのUIDが異なるため、これが発生します。それはまだ予想されています。しかし、私が理解したところによると、NFSv4を有効にすることで、IDMAPDが起動し、UIDの代わりにユーザー名を使用するはずです。ユーザーはServer側とClient側に存在し、異なるUIDしか持っていません。しかし、何らかの理由でIDMAPDが機能しないか、何も実行しないようです。
これが私がこれまでに行ったことです:
サーバー側:
クライアント側
両方を数回再起動して再起動しましたが、まだ何も起こりません。 Serverからユーザー[〜#〜] a [〜#〜]を含むフォルダを作成すると、 クライアントフォルダの所有者が一部のユーザー[〜#〜] x [〜#〜]であることがわかりました。 Clientからユーザー[〜#〜] a [〜#〜]を使用してファイルを作成すると、 サーバーあるユーザーからのメッセージ[〜#〜] y [〜#〜].
HTOPで、rpc.idmapプロセスがServerで実行されていることを確認しました。 Client上では実行されているようには見えません。 Clientでサービスを手動で開始しようとすると、IDMAPを実行するにはnfs-kernel-server依存関係が必要であることを示すエラーメッセージが表示されました。 Client側にインストールしたので、ClientとServerの両方でrpc.idmapプロセスを実行しています。両方を再起動しても、問題は解決しない。
ここで何が間違っているのでしょうか?またはこれを適切に設定するにはどうすればよいですか?
Kerberosの代わりにデフォルトのAUTH_SYS認証(sec=sys
マウントオプション)を使用するマウントでNFSv4 idマッピングを使用する場合、注意すべき点がいくつかあります。
注:AUTH_SYS
を使用すると、idmappingはユーザー/グループ名のみを変換します。アクセス許可は引き続きローカルUID/GID値に対してチェックされます。ユーザー名を使用して権限を取得する唯一の方法は、Kerberosを使用することです。
最近のカーネルでは、サーバーのみがrpc.idmapdを使用しています( man rpc.idmapd
に文書化されています)。 idmapを使用する場合、ユーザー名はuser @ domain形式で送信されます。 /etc/idmapd.conf
でドメイン名が構成されていない限り、idmapdはシステムのDNSドメイン名を使用します。 idmapがユーザーを正しくマップするには、ドメイン名がクライアントとサーバーで同じである必要があります。
次に、カーネルはNFSv4 sec=sys
マウントのIDマッピングを無効にします デフォルトでは 。 nfs4_disable_idmapping
パラメータをfalseに設定すると、sec=sys
マウントのIDマッピングが有効になります。
サーバー上:
echo "N" > /sys/module/nfsd/parameters/nfs4_disable_idmapping
およびクライアント:
echo "N" > /sys/module/nfs/parameters/nfs4_disable_idmapping
マウントされたNFSv4ファイルシステムで変更を表示するには、クライアントでnfsidmap -c
を使用してidmapキャッシュをクリアする必要があります。
これらの変更を行うにはpermanent、 /etc/modprobe.d/
に構成ファイルを作成します。
server(modprobe.d/nfsd.conf
):
options nfsd nfs4_disable_idmapping=N
client(s)(modprobe.d/nfs.conf
):
options nfs nfs4_disable_idmapping=N
それはかなり知られており、文書化された動作です。同じuid
を共有するサーバー側とクライアント側に異なるユーザーがいる場合、ファイルは異なる所有者を持つように表示されます 。
共有ファイルの他に、同じファイルシステムを共有するすべてのマシンで同じIDを持つユーザーをマップするように注意することをお勧めします。
手動、最低限の自動化/スクリプトシステム、またはそれ以上の方法で、またはLDAPなどの集中認証を設定できます。 を参照してくださいOpenLDAPを使用した集中認証