升级到 14.04 后,NFS 挂载上的文件权限显示为“nobody”

升级到 14.04 后,NFS 挂载上的文件权限显示为“nobody”

我有一台 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

这是为什么?我需要做什么才能使文件所有权再次发挥作用?

答案1

重要线索出现在/var/log/syslog

Sep 16 13:11:07 client nfsidmap[7340]: nss_getpwnam: name 'www-data@lan' does not map into domain 'localdomain'

结合这段摘录NFSv4操作方法

如果所有目录列表都只显示“nobody”和“nogroup”,而不是真实的用户名和组名,那么您可能需要检查 /etc/idmapd.conf 中的域参数设置。NFSv4 客户端和服务器应该位于同一个域中。

以及以下评论/etc/idmap.conf

# set your own domain here, if id differs from FQDN minus hostname
# Domain = localdomain

事实证明我的服务器认为它的域名是lan

server$ hostname -f
server.lan

server$ grep server /etc/hosts
127.0.1.1   server.lan server

而我的客户没有域名:

client$ hostname -f
client

client$ grep client /etc/hosts
127.0.1.1   client

修复:/etc/hosts在客户端编辑以阅读

127.0.1.1   client.lan client

然后重新启动。

答案2

我通过这个方法解决了我的问题。打开文件/etc/nfsmount.conf并找到Nfsvers=

取消注释该行并写入服务器支持的 NFS 版本。我的是 3,所以我写道:

Nfsvers=3

我重新启动了 NFS 服务器。

相关内容