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