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

Cer*_*rin 7 linux nfs fedora apache-2.2

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

我已经在我的本地主机上安装了一个 NFS 共享(Fedora 安装),我可以以 root 身份读写,但我无法以 apache 用户的身份写入,即使我的本地主机上共享中的所有文件和目录和远程主机归 apache 所有。

例如,我已经通过 /etc/fstab 中的这一行安装了它:

remotehost:/data/media     /data/media             nfs     _netdev,soft,intr,rw,bg        0 0
Run Code Online (Sandbox Code Playgroud)

这两个位置都归 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
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试以 apache 用户身份写入时,出现“权限被拒绝”错误。

[root@localhost ~]# sudo -u apache touch /data/media/test.txt'
touch: cannot touch `/data/media/test.txt': Permission denied
Run Code Online (Sandbox Code Playgroud)

但当然,它以 root 身份运行良好。我究竟做错了什么?

Dmi*_*rov 4

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

帖子中的文件列表并未证实这一点。

事实上,localhost清单显示安装点 /data/media由 apache@localhost 所有。

[root@localhost ~]# ls -la /data
 ...
 drwxrwxrwx   5 apache apache 4096 Jan 31  2011 media
Run Code Online (Sandbox Code Playgroud)

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

[root@remotehost ~]# ls -la /data
drwxr-xr-x   4 apache  apache  4096 Jan 14  2011 media
Run Code Online (Sandbox Code Playgroud)

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

您可以使用该命令ls -lna检查数字用户 ID。

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