我有一个 NFS4 导出(来自 FreeBSD ZFS 文件系统),并且 root_squash 已关闭(-maproot=root)。
直到最近,我已经在几台机器(主要是 Ubuntu 12.04 服务器)上顺利安装此驱动器,但突然间我遇到了这个奇怪的问题:
在我尝试设置的三个操作系统(Mint 15、Ubuntu 13.04、Ubuntu 12.04 客户端)上,我执行了 ldap 和 nfs 配置并挂载了驱动器,一切看起来都很好。我可以看到从 id 映射的相应用户名和组名。但如果我尝试将这些文件中的任何一个文件 chown 给任何其他用户,它总是将它们设置为 nobody:nobody。
请注意,这不会发生在旧机器上。我甚至将确切的配置(/etc/idmapd.conf、/etc/ldap*、/etc/pam.d/*)从旧的 Ubuntu 12.04 机器复制到新机器上,但仍然无法正常工作!它似乎也主要局限于 chown。我可以以任何用户的身份接触新文件,并且它们具有正确的所有权。我不知道发生了什么。
我可能得到的唯一线索是,损坏的机器在系统日志中给出了此错误(在增加 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