我有一个 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)
Run Code Online (Sandbox Code Playgroud)
我还有一个安装它们的客户端:
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
Run Code Online (Sandbox Code Playgroud)
客户端的 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
Run Code Online (Sandbox Code Playgroud)
为什么会这样,我需要做什么才能使文件所有权再次生效?
重要线索出现在/var/log/syslog:
Sep 16 13:11:07 client nfsidmap[7340]: nss_getpwnam: name 'www-data@lan' does not map into domain 'localdomain'
Run Code Online (Sandbox Code Playgroud)
结合NFSv4Howto 的这段摘录
如果所有目录列表只显示“nobody”和“nogroup”而不是真实的用户名和组名,那么您可能需要检查/etc/idmapd.conf 中的域参数集。NFSv4 客户端和服务器应该在同一个域中。
和这个评论/etc/idmap.conf:
# set your own domain here, if id differs from FQDN minus hostname
# Domain = localdomain
Run Code Online (Sandbox Code Playgroud)
结果我的服务器认为它的域是lan:
server$ hostname -f
server.lan
server$ grep server /etc/hosts
127.0.1.1 server.lan server
Run Code Online (Sandbox Code Playgroud)
虽然我的客户没有域:
client$ hostname -f
client
client$ grep client /etc/hosts
127.0.1.1 client
Run Code Online (Sandbox Code Playgroud)
修复:/etc/hosts在客户端上编辑以阅读
127.0.1.1 client.lan client
Run Code Online (Sandbox Code Playgroud)
并重新启动。
| 归档时间: |
|
| 查看次数: |
58459 次 |
| 最近记录: |