NFS与anonuid / anongid的根共享

我从我的服务器中导出了一个共享,并将anonuid和anongid设置为0(root)。 但是,当我在客户端上安装共享时,它不会出现我的设置正在工作,因为我得到的权限被拒绝到根拥有的共享内的文件夹。

服务器CentOS 5.7 /客户端CentOS 6.4使用NFS version 3.2.29.

这是我在SERVER上的/ etc / exports:

 /STORAGE 10.0.5.10(rw,sync,no_subtree_check,no_root_squash,anonuid=0,anongid=0) 

基本上,当客户端(10.0.5.10)连接到服务器时,我需要它的行为,就像它在服务器上的根。 预先感谢您的帮助!

如果您希望10.0.5.10上的任何用户以root身份显示,则需要执行以下操作:

/STORAGE 10.0.5.10(rw,sync,no_subtree_check,all_squash,anonuid=0,anongid=0)

all_squash告诉NFS,对于从10.0.5.10连接的任何用户,忽略它们的实际UID / GID,而是把它们当作UID = anonuid和GID = anongid。 由于您设置了anonuid=0,anongid=010.0.5.10上的所有用户提供/STORAGE上的root访问权限,从而有效地绕过了/STORAGE上的所有安全性,并将其从任何来自10.0.5.10 IP地址。

FWIW,从安全的angular度来看,这是一个可怕的想法。

如果您可以在服务器上使用NFSv4,则可以启用UID / GID映射,并将静态映射添加到服务器上的/etc/idmapd.conf ,告诉它/etc/idmapd.conf上的特定用户应该在NFSv4上获得root访问权限服务器。 man idmapd.conf了解如何设置configuration文件。 一旦configuration文件在NFSv4服务器上设置,更新您的导出:

/STORAGE 10.0.5.10(rw,sync,no_subtree_check,no_root_squash)

然后,您只需启用映射,清除idmapcaching,然后重新启动地图服务:

 echo N > /sys/module/nfs/parameters/nfs4_disable_idmapping nfsidmap -c service rpcidmapd restart 

如果你这样做,你只给一个用户root权限,而不是所有的用户。

首先,你应该升级到NFS4,因为每个版本的行为都略有不同。

而不是no_root_squash你将需要使用root_squashall_squash – 这是关于这个问题的唯一相关参数。

all_squash使连接到该共享的任何客户端使用anonuid / anongid参数中给定的ID。