我有两台相同的 Linux 机器(在 Amazon EC2 中启动的相同映像),并且我正尝试通过 NFSv4 挂载导出的目录。以下是客户端计算机上挂载的目录:
root@server:~# ls -l /websites/
drwxr-xr-x 6 4294967294 4294967294 92 2010-01-01 20:21 logs
drwxr-xr-x 2 4294967294 4294967294 20 2009-12-23 01:14 monit.d
...
我仔细检查了一遍,确保 UID 匹配
以下是我从客户端运行的挂载命令
/sbin/mount.nfs4 $MASTER_DN:/ /websites -o rw,_netdev,async
以下是/etc/exports
服务器上的条目:
/websites 10.0.0.0/8(fsid=0,no_subtree_check,rw,no_root_squash)
答案1
阅读此处http://blather.michaelwlucas.com/archives/796
如果 NFSv4 客户端和服务器域名不匹配,所有用户名都将显示为“nobody”。
编辑 /etc/idmapd.conf 并将服务器和客户端上的域设置为“localdomain”
[一般的]
域 = localdomain
[翻译]
方法 = nsswitch
更改 /etc/default/nfs-common 文件(在服务器和客户端上):设置 NEED_IDMAPD= yes
启动 idmapd 服务
答案2
正如解释的那样NFS 和 ZFS 的 UID/GID,NFSv4 不使用 UID。我遇到了类似的问题,但能够通过使用 NFSv3 来解决它。这只需要添加-o vers=3
到命令中mount
。当然,如果您确实需要使用 NFSv4,这个响应对您来说就没什么用了。
答案3
这是用户 ID 映射问题。出于某种原因,系统使用“nobody”帐户而不是真实帐户 ID。请检查压缩选项和 idmapd.conf 文件。
这是我找到的一个讨论该问题的帖子,它链接到我感兴趣的帖子,http://www.mail-archive.com/[电子邮件保护]/msg03303.html。
仅供参考,如果将 4294967294 视为 32 位有符号整数,则为 -2。在各种 Linux 发行版中,nobody UID 和 nogroup GID 使用 -1 或 -2(在 passwd 文件中,通常使用最高的 16 位无符号数 65535)。
答案4
我们正在使用 NFS 选项anonuid
并anongid
设置服务器将用于匿名创建的文件的用户/组 ID。如果未设置这些,将使用“nobody”和“nogroup”——这可能因操作系统版本和发行版而异。因此
/websites 10.0.0.0/8
(fsid=0,no_subtree_check,rw,no_root_squash,anonuid=1001,anongid=1001)
^^^^^^^^^^^^^^^^^^^^^^^^^^
可能需要技巧(1001 是服务器上有效且可用的 UID/GID)。