NFS 客户端报告权限被拒绝,服务器报告权限被授予

NFS 客户端报告权限被拒绝,服务器报告权限被授予

我有两台 RedHat 4 服务器。客户端是 4.6,服务器是 4.5。我正尝试通过 NFS 将服务器上的共享安装到客户端上。

/etc/exports配置如下:

/opt/data/config bkup(rw,no_root_squash,async)
/opt/data/db bkup(rw,no_root_squash,async)

exportfs 返回这些(以及其他)共享,nfs 正在根据ps输出运行。

我一直尝试在客户端上使用 autofs,但考虑到我遇到的问题,我选择手动安装共享。

因此,我发出挂载请求:
mount dist:/opt/data/config /mnt/config

mount:dist:/opt/data/config 失败,服务器给出的原因:权限被拒绝

好的,让我们看看服务器本身要说什么。

5月6日 23:17:55 dist mountd[3782]: 来自 bkup:662 的针对 /opt/data/config (/opt/data/config) 的经过验证的挂载请求

据称,它允许进行安装。

我如何诊断客户端和服务器对结果存在分歧的原因?

答案1

这是身份验证和授权之间差异的一个很好的例子。在这种情况下,身份验证成功,但主机目录的授权可能是问题所在。为了进行测试,您可以尝试将主机的目录权限递归设置为 777(不要忘记稍后再次更改此权限)。

检查事项:

  • 客户端和主机上的用户的用户名和uuid是否相同?
  • 主机上的权限是否设置正确?
  • 主机服务器上的 NFS 是否具有正确的权限来访问它应该共享的文件?即 NFS 是否以 root 身份运行,如果不是,它尝试访问的文件是否设置了正确的权限以允许 NFS 守护程序本身访问它们?

答案2

我通常使用 tcpdump 来调试此类问题。原始数据包捕获总会告诉我们一些信息。

从 NFS 客户端和服务器开始数据包捕获。

tcpdump -s0 -i ethX -w /tmp/tcpdump_from_client.pcap host <NFS-server-IP>
tcpdump -s0 -i ethX -w /tmp/tcpdump_from_server.pcap host <NFS-client-IP>

将 ethX 替换为 eth1 或 2 或任何其他您拥有的值。

然后,在数据包捕获中查找 RPC 传输。我更喜欢使用 wireshark 并查看 TCP 部分。我经常看到它提供某种线索。

下一步是启用 NFS 调试日志。

我强烈建议您将 tcpdump 数据保留给自己或让您信任的人进行检查。

答案3

检查中是否有某些文件/proc/fs/nfsd

如果没有,请发出此命令:

mount -t nfsd none /proc/fs/nfsd

如果有的话我也不知道。

相关内容