通过 NFSv4 挂载的文件归 4294967294 所有,UID 和 GID 匹配

通过 NFSv4 挂载的文件归 4294967294 所有,UID 和 GID 匹配

我有两台相同的 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”。

  1. 编辑 /etc/idmapd.conf 并将服务器和客户端上的域设置为“localdomain”

    [一般的]

    域 = localdomain

    [翻译]

    方法 = nsswitch

  2. 更改 /etc/default/nfs-common 文件(在服务器和客户端上):设置 NEED_IDMAPD= yes

  3. 启动 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 选项anonuidanongid设置服务器将用于匿名创建的文件的用户/组 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)。

相关内容