我从我的服务器中导出了一个共享,并将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=0为10.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_squash或all_squash – 这是关于这个问题的唯一相关参数。
all_squash使连接到该共享的任何客户端使用anonuid / anongid参数中给定的ID。