NFS服务器端:
[USER@NFSSERVER ~]$ cat /etc/exports
/var/foo/logs 10.75.16.4(ro,sync)
/var/foobar 10.100.102.0/24(rw,sync)
[USER@NFSSERVER ~]$
NFS 客户端:
[root@NFSCLIENT ~]# grep nfs /etc/fstab
10.100.102.34:/var/foobar /var/foobar nfs auto 0 0
[root@NFSCLIENT ~]#
NFS 客户端位于 10.100.102.0/24
其他 NFS 客户端可以写入此目录。
问题:
[root@NFSCLIENT foobar]# touch testing
touch: cannot touch `testing': Permission denied
[root@NFSCLIENT foobar]#
问题: 为什么我们没有权限写? FS 安装为 RW,均为 RHEL 6、NFSv4。
答案1
当您在没有该选项的情况下导出文件系统时no_root_squash
,您的根用户 ID 会在服务器端映射为“anonymous”或“nobody”。这实际上拒绝了您的写入权限。这是通过 NFS 安装来防范 SUID 类型攻击的常识性默认设置,但对于不熟悉它的人来说,它可能会导致此类问题。您可以以非 root 用户(UID != 0)正常访问 NF 挂载,也可以添加选项no_root_squash
,/etc/exports
从服务器重新导出,并在客户端重新挂载以获得写入挂载的权限文件系统作为客户端上的 root。