如何允许写入挂载的NFS分区

你如何允许特定的用户权限写入NFS分区?

我在本地主机(一个Fedora安装)上挂载了一个NFS共享,并且我可以以root身份读写,但是我无法写成apache用户,即使我本地共享中的所有文件和目录和远程主机是由Apache拥有。

例如,我已经通过这一行挂载在我的/ etc / fstab中:

remotehost:/data/media /data/media nfs _netdev,soft,intr,rw,bg 0 0 

这两个位置都是由apache拥有的:

 [root@remotehost ~]# ls -la /data total 24 drwxr-xr-x. 6 root root 4096 Jan 6 2011 . dr-xr-xr-x. 28 root root 4096 Oct 31 2011 .. drwxr-xr-x 4 apache apache 4096 Jan 14 2011 media [root@localhost ~]# ls -la /data total 16 drwxr-xr-x 4 apache apache 4096 Dec 7 2011 . dr-xr-xr-x. 27 root root 4096 Jun 11 15:51 .. drwxrwxrwx 5 apache apache 4096 Jan 31 2011 media 

但是,当我尝试和写入的Apache用户,我得到一个“权限被拒绝”的错误。

 [root@localhost ~]# sudo -u apache touch /data/media/test.txt' touch: cannot touch `/data/media/test.txt': Permission denied 

但当然,它作为根很好。 我究竟做错了什么?

NFS根据用户标识授权操作,而不是用户名。 为了能够在NFS客户端上写入/data/media ,您需要确保localhost apacheremotehost上的apache具有相同的数字用户ID。

文章中的文件列表不确认。

事实上, localhost上市说, 挂载点 /data/media属于apache @ localhost。

 [root@localhost ~]# ls -la /data ... drwxrwxrwx 5 apache apache 4096 Jan 31 2011 media 

远程列表显示共享资源 /data/media由apache @ remotehost拥有。

 [root@remotehost ~]# ls -la /data drwxr-xr-x 4 apache apache 4096 Jan 14 2011 media 

如果apache @ localhost和apache @ remotehost的数字用户ID不同,则该目录将不可写。

您可以使用命令ls -lna来检查数字用户标识。

这只是一个猜测。 OP中没有任何内容明确确认在用户标识中存在分歧。

  • 导出是否可写(在服务器上检查/etc/exports )? 正如你将会在exports(5)看到的那样:

      rw Allow both read and write requests on this NFS volume. The default is to disallow any request which changes the filesystem. This can also be made explicit by using the ro option. 
  • (可能不相关,但我不太了解现有的SELinux策略)您是否在服务器上使用SELinux? 你可以用getenforce检查,可能要在setenforce 0之后再试(用setenforce 1撤销)。

  • 我确实注意到UID恰好匹配。 但是我相信值得一提的是,为了确保用户和用户组按名称而不是用户名匹配,可以在两台主机上都configurationidmap服务。