問題
NFSv4 マウントで、所有権を持つすべてのファイルが「nobody:nobody」と誤って表示される 」。クライアント サーバーから、マウントされた NFSv4 共有は、NFSv4 サーバー上でそれらを所有する実際のユーザー、または新しいファイルとディレクトリを作成したユーザーではなく、nobody:nobody としてリストされているすべてのファイルとディレクトリの所有権を持ちます。
また、/var/log/messages に次のエラーが表示されます:
nss_getpwnam: name ‘[email protected]’ does not map into domain 'localdomain'
根本原因
NFSv3 では、username と group_name は UID/GID 値からマップされ、リソースを作成するユーザーの UID/GID はサーバーに保存されます。クライアント サーバーがアクセスすると、/etc/passwd および /etc/gpasswd ファイルがチェックされ、ID が存在するかどうか、および ID がどのユーザーにマップされるかが確認されます。同じ uid と gid を持つユーザーが存在する場合は、そのユーザーにマップされます。それ以外の場合は、数値が表示されます。
NFSv4 では、概念は user@domainname です。一元化されたユーザー マッピングがない場合、ユーザーはデフォルトのユーザー nobody または /etc/idmapd.conf で構成されている任意のユーザーにマップされます。
最初に /etc/imapd.conf の不正な構成をチェックします ファイル。 CentOS/RHEL 6.5 以降で idmapd.conf ファイルを変更する場合、古いマッピングを消去するコマンドは次のとおりです。
# nfsidmap -c
NFSv4 は、ID マッピングを使用して、エクスポートされた共有に権限が適切に設定されるようにします。クライアント サーバーと親サーバーのドメインが一致しない場合、パーミッションは nobody:nobody にマップされます。
解決策
1. /etc/idmapd.conf を変更します クライアントと親サーバーの両方で、適切な完全修飾ドメイン名 (FQDN) を使用します。この例では、適切なドメインは「example.com」であるため、/etc/idmapd.conf 内の「Domain =」ディレクティブを次のように変更する必要があります。
# vi /etc/idmapd.conf Domain = oracle.com
2. 変更を有効にするには、rpcidmapd サービスを再起動し、NFSv4 ファイルシステムを再マウントします。
# service rpcidmapd restart # mount -o remount /nfs/mnt/point注意 :rpc.idmapd が実際に ID マッピングを実行しているシステムでのみ、rpc.idmapd サービスを再起動する必要があります。 RHEL 6.3 以降の NFS CLIENTS では、マップはカーネル キーリングに保存され、ID マッピング自体は /sbin/nfsidmap プログラムによって実行されます。古い NFS CLIENTS (RHEL 6.2 以前) および RHEL を実行しているすべての NFS サーバーでは、ID マッピングは rpc.idmapd によって実行されます。クライアントとサーバーの UID と GID が一致していることを確認してください。 NFSv4 を使用する場合、UID と GID が異なっていてもよいというのはよくある誤解です。 ID マッピングの目的は、ID を名前に、またはその逆にマッピングすることです。 ID マッピングは、ID 管理に代わるものではありません。
Red Hat Enterprise Linux 6 では、上記の設定が適用され、UID/GID がサーバーとクライアントで一致し、ユーザーがまだ nobody:nobody にマップされている場合、idmapd キャッシュのクリアが必要になる場合があります。
# nfsidmap -c注意 :上記のコマンドは、キーリング ベースの ID マッパーを使用するシステムでのみ必要です。 RHEL 6.3 以降を実行している NFS クライアント。 RHEL 6.2 以前の NFS クライアント、および RHEL を実行しているすべての NFS サーバーでは、rpc.idmapd を再起動するとキャッシュがクリアされます。親サーバーとクライアント サーバーの両方の /etc/nsswitch.conf ファイルで、passwd:、shadow:、group:の設定が正しく設定されているかどうかを確認します。
idmapping の無効化
デフォルトでは、RHEL6.3 以降の NFS クライアントおよびサーバーは、AUTH_SYS/UNIX 認証フレーバーを使用する場合、次のブールステートメントを有効にすることで id マッピングを無効にします:
NFS クライアント サーバー
# echo 'Y' > /sys/module/nfs/parameters/nfs4_disable_idmapping
NFS 親サーバー
# echo 'Y' > /sys/module/nfsd/parameters/nfs4_disable_idmapping
トラブルシューティング
上記の計画で問題が解決しない場合は、次の診断手順を実行してください:
1. /etc/sysconfig/nfs を編集することでデバッグ/冗長性を有効にできます :
# vi /etc/sysconfig/nfs RPCIDMAPDARGS="-vvv"
2. マウントが完了すると、/var/log/messages に次の出力が表示され、システムはディレクトリおよびファイルに対するユーザーおよびグループのアクセス許可として nobody:nobody を示します:
Jul 3 00:23:18 node1 rpc.idmapd[1874]: nss_getpwnam: name ‘[email protected]’ does not map into domain ‘localdomain’ Jun 3 00:26:54 node1 rpc.idmapd[1874]: nss_getpwnam: name ‘[email protected]’ does not map into domain ‘localdomain’
3. マウント試行の tcpdump を収集します。
# tcpdump -s0 -i {INTERFACE} host {NFS.SERVER.IP} -w /tmp/{SR_number}-$(hostname)-$(date +”%Y-%m-%d-%H-%M-%S”).pcap &