root_squash をオフ (-maproot=root) にした NFS4 エクスポート (FreeBSD ZFS ファイルシステムから) があります。
最近まで、このドライブをいくつかのマシン (主に Ubuntu 12.04 サーバー) に問題なくマウントしていましたが、突然、次のような奇妙な問題が発生しました。
私がセットアップを試みた 3 つの OS (Mint 15、Ubuntu 13.04、Ubuntu 12.04 クライアント) で、ldap と nfs の構成を行い、ドライブをマウントすると、すべて正常に表示されます。ID からマップされた適切なユーザー名とグループ名を確認できます。ただし、これらのファイルのいずれかを他のユーザーに chown しようとすると、常に nobody:nobody に設定されます。
注意: これは古いマシンでは発生しません。古い Ubuntu 12.04 マシンから新しいマシンに正確な構成 (/etc/idmapd.conf、/etc/ldap*、/etc/pam.d/*) をコピーしましたが、それでも動作しません。また、ほとんど chown に制限されているようです。どのユーザーでも新しいファイルに触れることができ、正しい所有権があります。何が起こっているのかわかりません。
私が得た唯一の手がかりは、壊れたマシンが syslog に次のエラーを出すことです (idmapd の詳細度を上げた後):
Sep 10 16:58:48 cabernet rpc.idmapd[1009]: nfs4_name_to_uid: calling nsswitch->name_to_uid
Sep 10 16:58:48 cabernet rpc.idmapd[1009]: nss_getpwnam: name '[email protected]' domain 'test.com': resulting localname '5000'
Sep 10 16:58:48 cabernet rpc.idmapd[1009]: nss_getpwnam: name '5000' not found in domain 'test.com'
稼働中の機械は以下を提供します:
Sep 10 17:03:44 node-2 rpc.idmapd[2906]: nfs4_uid_to_name: calling nsswitch->uid_to_name
Sep 10 17:03:44 node-2 rpc.idmapd[2906]: nfs4_uid_to_name: nsswitch->uid_to_name returned 0
Sep 10 17:03:44 node-2 rpc.idmapd[2906]: nfs4_uid_to_name: final return value is 0
Sep 10 17:03:44 node-2 rpc.idmapd[2906]: Client 18: (user) id "5000" -> name "[email protected]"
つまり、何らかの理由で、壊れたマシンが ID をユーザー名として使用しようとしているようです。
何かアドバイス?
答え1
この問題は、以下の設定で解決されました。http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=500778
/etc/idmapd.conf
[General]
Cache-Expiration = 10