NFS:如何让特定的用户在NFS挂载中写入?

我写了一个Nagios检查,它应该检查服务器将文件写入其中一个挂载的时间。 该检查由用户nagios运行。

NFS服务器configuration如下:

[root@ny4aftp2 ~]# tail /etc/exports /proxy_logs *(rw,insecure,insecure_locks,no_subtree_check,async) /sync_logs *(rw,insecure,insecure_locks,no_subtree_check,async) [root@ny4aftp2 ~]# ls -ld /sync_logs/ drwxrwxr-x 3 peeradmin peeradmin 4096 Dec 10 10:14 /sync_logs/ [root@ny4aftp2 ~]# 

这是检查脚本运行的命令:

 dd if=/dev/zero of=/$MOUNTPOINT/`hostname`.dat bs=1024 count=102 

客户端configuration如下:

 [root@ny4aproxy11 ~]# grep sync /etc/fstab IP:/sync_logs /sync_logs nfs intr,noatime 0 0 

当nagios用户运行检查时,即使用户nagios在两台计算机上configuration相同,当dd命令尝试将.dat文件写入nfs share /sync_logs时,它也会得到一个“Permission denided”错误:

服务器:

 [root@ny4aftp2 ~]# id nagios uid=498(nagios) gid=498(nagios) groups=498(nagios),500(peeradmin) 

客户:

 [root@ny4aproxy11 ~]# id nagios uid=498(nagios) gid=498(nagios) groups=498(nagios),500(peeradmin) 

而nagios用户是/sync_logs目录的所有者peeradmin组的成员。

NFS服务器上的/sync_logs

 [root@ny4aftp2 ~]# ls -ld /sync_logs/ drwxrwxr-x 3 peeradmin peeradmin 4096 Dec 10 10:20 /sync_logs/ 

NFS客户端上的/sync_logs

 [root@ny4aproxy11 ~]# ls -ld /sync_logs/ drwxrwxr-x 3 peeradmin peeradmin 4096 Dec 10 10:20 /sync_logs/ 

我不希望chmod o+w /sync_logs ,我更喜欢修复它应该是这样的…就像nagios用户将获得从peeradmin组成员的事实,这将允许nagios用户写入/sync_logs目录。

怎么做,我做错了什么?

编辑#1:

 IP:/sync_logs on /sync_logs type nfs (rw,noatime,intr,vers=4,addr=SERVER_IP,clientaddr=CLIENT_IP) 

提前致谢

根据目前的评论:

  • 你的挂载与NFSv3协同工作,它不支持NFSv3。
  • 你正在使用本地帐户。

这意味着问题很可能是NFSv4帐号处理和idmapd 。 NFSv3中发生的事情是,您的客户端会告诉服务器您使用的是什么UID和GID。

在NFSv4中发生的是他们使用用户名和使用idmapd来回映射。 这意味着您不再需要在身份validation领域拥有相同的UID和GID。

但是这里有个idmapdidmapd需要能够来回映射。 它将发送user@domain (等效)而不是数字UID / GID。

所以检查你的/etc/idmapd.conf 。 同时检查您的客户端和主机上的域名是否匹配。 您正在寻找idmapd.conf中的domainname – 如果没有设置,它将默认为您的服务器/客户端报告中的任何domainname命令。

切换到NFSv3可能是一个解决方法(和validation),但可能不是一个好主意 – NFSv4比v3有一些很好的增强function,并且由于auth问题而closures它并不理想。