NFS 与 root 共享 anonuid / anongid

Jas*_*son 7 nfs root export

我已经从我的服务器导出了一个共享并将 anonuid 和 anongid 设置为 0(root)。但是,当我在客户端上安装共享时,我的设置似乎不起作用,因为我对 root 拥有的共享中的文件夹的权限被拒绝。

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

这是我在服务器上的 /etc/exports:

/STORAGE 10.0.5.10(rw,sync,no_subtree_check,no_root_squash,anonuid=0,anongid=0)
Run Code Online (Sandbox Code Playgroud)

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

Ear*_*uby 13

如果您希望 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.10root 访问权限的所有用户/STORAGE,因此有效地绕过了所有安全性,/STORAGE并使其对任何似乎来自 10.0.5.10 IP 地址的人的滥用敞开大门。

FWIW,从安全的角度来看,这是一个糟糕的主意。

如果您可以在服务器上使用 NFSv4,您可以启用 UID/GID 映射并/etc/idmapd.conf在服务器上添加一个静态映射,告诉它应该为 10.0.5.10 上的特定用户授予 NFSv4 服务器上的 root 访问权限。man idmapd.conf有关设置配置文件的详细信息。在 NFSv4 服务器上设置配置文件后,更新您的导出:

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

然后你只想启用映射,清除idmap缓存,并重新启动地图服务:

echo N > /sys/module/nfs/parameters/nfs4_disable_idmapping
nfsidmap -c
service rpcidmapd restart
Run Code Online (Sandbox Code Playgroud)

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


Kir*_*ván 7

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

相反,no_root_squash您将需要使用root_squashall_squash- 这是与此问题相关的唯一相关参数。

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