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 身份运行良好。我究竟做错了什么?
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 存在分歧。