我有一个 Ubuntu 12.04 服务器,它通过 NFS 导出几个文件系统。
server$ cat /etc/exports
/home 192.168.42.0/255.255.255.0(rw,anonuid=65534,anongid=65534,async,no_subtree_check)
/stuff 192.168.42.0/255.255.255.0(rw,anonuid=65534,anongid=65534,async,no_subtree_check)
/stuff 192.168.99.0/255.255.255.0(ro,anonuid=65534,anongid=65534,async,no_subtree_check)
我还有一个安装它们的客户端:
client$ cat /etc/fstab
...
server:/home /home nfs hard,intr,rsize=8192,wsize=8192,_netdev 0 0
server:/stuff /server/stuff nfs hard,intr,rsize=8192,wsize=8192,_netdev 0 0
客户端的 IP 在 192.168.42.x 范围内。直到昨天它还在运行 Ubuntu 10.04。NFS 工作得很好,或多或少(有时它不会在启动时自动挂载,但我有一个 cron 脚本来检测和修复它)。
我昨天将客户端升级到 Ubuntu 12.04 并重新启动。NFS 继续正常工作。
我今天将客户端升级到 Ubuntu 14.04 并重新启动。现在 NFS 已挂载,但所有文件所有权信息都映射到 nobody:4294967294:
client$ ls -ld /home/weblate
drwxr-xr-x 5 nobody 4294967294 4096 Jan 29 2014 weblate
为什么会这样,我需要做什么才能使文件所有权再次发挥作用?
重要线索出现在
/var/log/syslog
:结合NFSv4Howto的这段摘录
这个评论在
/etc/idmap.conf
:结果我的服务器认为它的域是
lan
:而我的客户没有域:
修复:在客户端上编辑
/etc/hosts
以阅读并重新启动。
我通过这种方法解决了我的问题。打开文件
/etc/nfsmount.conf
并找到Nfsvers=
.取消注释该行并写入服务器支持的 NFS 版本。我的是 3,所以我写道:
我重新启动了 NFS 服务器。