使用 root 进行 NFS 共享以实现 anonuid / anongid

使用 root 进行 NFS 共享以实现 anonuid / anongid

我从服务器导出了一个共享,并将 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)

基本上,当客户端(10.0.5.10)连接到服务器时,我需要它表现得像服务器上的 root 一样。提前感谢您的帮助!!

答案1

如果您希望 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.10root 访问权限/STORAGE,从而有效地绕过 上的所有安全措施/STORAGE,并使其完全暴露给任何来自 10.0.5.10 IP 地址的人滥用。

无论如何,从安全角度来看,这是一个糟糕的想法。

如果您可以在服务器上使用 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

如果这样做,您只会授予一个用户根访问权限,而不是所有用户。

答案2

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

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

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

相关内容