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

我有两个相同的Linux机器(在亚马逊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匹配

这里是我从客户端运行的mount命令

 /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) 

正如使用NFS和ZFS的UID / GID所解释的,NFSv4不使用UID。 我有一个类似的问题,并能够通过使用NFSv3解决它。 这只需要在mount命令中添加-o vers=3即可。 当然,如果你确实需要使用NFSv4,这个响应对你来说没有什么用处。

在这里阅读http://blather.michaelwlucas.com/archives/796

如果NFSv4客户端和服务器域名不匹配,则所有用户名将显示为“nobody”。

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

    [一般]

    Domain = localdomain

    [翻译]

    方法= nsswitch

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

  3. 启动idmapd服务

这是一个用户ID映射问题。 出于某种原因,系统正在使用“nobody”帐户而不是真正的帐户ID。 检查你的挤压选项和你的idmapd.conf文件。

这里是我发现的一个线索,讨论这个问题,这个链接到感兴趣的post, http://www.mail-archive.com/rhelv5-list@redhat.com/msg03303.html

FYI,4294967294是-2,如果视为32位有符号整数。 -1或-2在各种Linux发行版上用于nobody UID和nogroup GID(在passwd文件中,通常使用最高16位无符号数65535)。

您需要更改/ etc / default / nfs-common文件(在您的服务器和客户端上):将NEED_IDMAPD设置为yes

至less这对我有帮助。

我们使用NFS选项anonuidanongid来设置服务器将用于由匿名创build的文件的用户/组ID。 如果没有设置,将使用“nobody”和“nogroup” – 根据操作系统的版本和分布情况可能有所不同。 所以a

 /websites 10.0.0.0/8 (fsid=0,no_subtree_check,rw,no_root_squash,anonuid=1001,anongid=1001) ^^^^^^^^^^^^^^^^^^^^^^^^^^ 

可能的窍门(与1001是一个有效的和可用的UID / GID在您的服务器上)。