web-dev-qa-db-ja.com

NFS = 4 idmapをsec = sysで動作させるには?

NFSを介していくつかのフォルダーにサービスを提供しているServer(Debian)と、NFSv4を使用してNFSサーバーに接続し、エクスポートされたフォルダーをマウントするClient(Debian)があります。これまでのところすべてが順調ですが、接続してフォルダの内容を変更できます。しかし、ユーザーは完全に混乱しています。私が理解していることから、これは、NFSがUIDを使用してアクセス許可を設定しているためであり、ClientServerのユーザーのUIDが異なるため、これが発生します。それはまだ予想されています。しかし、私が理解したところによると、NFSv4を有効にすることで、IDMAPDが起動し、UIDの代わりにユーザー名を使用するはずです。ユーザーはServer側とClient側に存在し、異なるUIDしか持っていません。しかし、何らかの理由でIDMAPDが機能しないか、何も実行しないようです。

これが私がこれまでに行ったことです:

サーバー側:

  • インストールされたnfs-kernel-server
  • / etc/exportsに適切なエクスポート設定を入力->/ rfolder ip/24(rw、sync、no_subtree_check、no_root_squash)
  • / etc/default/nfs-commonを変更してNEED_IDMAPD = yes

クライアント側

  • インストールされたnfs-common
  • / etc/default/nfs-commonを変更してNEED_IDMAPD = yes
  • そして「mount -t nfs4 ip:/ rfolder/media/lfolder」でフォルダをマウントします

両方を数回再起動して再起動しましたが、まだ何も起こりません。 Serverからユーザー[〜#〜] a [〜#〜]を含むフォルダを作成すると、 クライアントフォルダの所有者が一部のユーザー[〜#〜] x [〜#〜]であることがわかりました。 Clientからユーザー[〜#〜] a [〜#〜]を使用してファイルを作成すると、 サーバーあるユーザーからのメッセージ[〜#〜] y [〜#〜].

HTOPで、rpc.idmapプロセスがServerで実行されていることを確認しました。 Client上では実行されているようには見えません。 Clientでサービスを手動で開始しようとすると、IDMAPを実行するにはnfs-kernel-server依存関係が必要であることを示すエラーメッセージが表示されました。 Client側にインストールしたので、ClientServerの両方でrpc.idmapプロセスを実行しています。両方を再起動しても、問題は解決しない。

ここで何が間違っているのでしょうか?またはこれを適切に設定するにはどうすればよいですか?

7

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/ に構成ファイルを作成します。

servermodprobe.d/nfsd.conf):

options nfsd nfs4_disable_idmapping=N

client(s)modprobe.d/nfs.conf):

options nfs nfs4_disable_idmapping=N
8
sebasth

それはかなり知られており、文書化された動作です。同じuidを共有するサーバー側とクライアント側に異なるユーザーがいる場合、ファイルは異なる所有者を持つように表示されます

共有ファイルの他に、同じファイルシステムを共有するすべてのマシンで同じIDを持つユーザーをマップするように注意することをお勧めします。

手動、最低限の自動化/スクリプトシステム、またはそれ以上の方法で、またはLDAPなどの集中認証を設定できます。 を参照してくださいOpenLDAPを使用した集中認証

0
Rui F Ribeiro