1

我已经在一台服务器上创建了一个 NFS 共享到另一台(客户端)服务器,并成功地将文件夹(比如 /home/user/public_html/examplefolder)挂载到第二台(客户端)服务器。

我已经登录到第二台(客户端)服务器上的 FTP 帐户,我正在尝试将文件夹/文件写入已安装的 NFS 位置(/home/user/public_html/examplefolder),但我收到权限被拒绝错误。

如果我以 root 身份 ssh 进入客户端服务器,我将拥有写入 NFS 安装位置的完全权限,所以我知道它必须是用户权限类型的错误。

我在两台服务器上都运行 CentOS 5。

4

2 回答 2

1

我不认为您遇到了root squash,但我在跟踪您描述中的所有客户端和服务器时遇到了麻烦,所以这里有一个快速摘要root squash,您可以更好地判断这是否是正在发生的事情:

NFS 提供了一个root squash选项,以确保root在客户端上运行的进程不会在服务器上获得特殊权限。因此,服务器将所有客户端root访问“压缩”到nobody服务器上的用户。(这就是为什么程序永远不应该作为 as 运行的原因nobody;用户 id 已经有特定用途,不应该用于几个不相关的目的。)

另一种可能性是您的 FTP 服务器受限于AppArmorSElinuxTOMOYOSMACK等工具。这些强制访问控制工具中的任何一个都可以阻止应用程序在特定位置写入,并且可能尚未为您的站点配置。检查dmesg(1)输出以查看是否有任何拒绝消息,dmesg(1)如果auditd(8)没有运行,大多数或所有这些工具都会记录到。

而且,也许您的 ftp 服务器已配置为拒绝写入。找出错误消息的来源很重要Access Denied您可以strace -o /tmp/ftp.out -f $(pidof ftpd)(或任何进程名称)将所有系统调用和结果记录到/tmp/ftp.out文件中,这将使您有机会查看open(2)调用是否被操作系统或程序拒绝。

于 2011-03-16T00:53:07.703 回答
1

我最终进行了完整的用户和组修改,以使客户端服务器上的用户和组与原始服务器匹配。

于 2011-03-18T03:28:51.590 回答