我已经在一台服务器上创建了一个NFS共享到另一台(客户端)服务器,并成功地将文件夹(例如/ home / user / public_html / examplefolder)挂载到第二台(客户端)服务器。
我已登录到第二个(客户端)服务器上的FTP帐户,我正在尝试将文件夹/文件写入已挂载的NFS位置(/ home / user / public_html / examplefolder),但我获得了许可否认错误。
如果我以root身份进入客户端服务器,我有完全的权限写入NFS挂载位置,所以我知道它必须是用户权限类型的错误。
我在两台服务器上运行CentOS 5。
答案 0 :(得分:1)
我认为你正在运行root squash
,但我无法关注您说明中的所有客户端和服务器,所以这里是{的快速摘要{1}},您可以更好地判断这是发生了什么:
NFS提供root squash
选项,以确保在客户端上以root squash
运行的进程在服务器上没有特权。因此,服务器“压缩”所有客户端root
访问服务器上的root
用户。 (这就是为什么程序应该从不运行nobody
;用户ID已经具有特定用途,不应该用于几个不相关的目的。)
另一种可能性是您的FTP服务器受限于AppArmor,SElinux,TOMOYO或SMACK等工具。这些mandatory access control工具中的任何一个都可以阻止应用程序在特定位置写入,并且可能尚未针对您的站点进行配置。检查nobody
输出以查看是否有拒绝消息,如果dmesg(1)
未运行,大多数或所有这些工具都会记录到dmesg(1)
。
而且,也许您的ftp服务器已经configured to deny writes。找出 auditd(8)
错误消息的来源非常重要;您可以Access Denied
(或任何进程名称)将所有系统调用和结果记录到strace -o /tmp/ftp.out -f $(pidof ftpd)
文件,这将使您有机会查看/tmp/ftp.out
调用是否被拒绝操作系统或程序。
答案 1 :(得分:1)
我最终进行了完整的用户和组修改,以使客户端服务器上的用户和组与原始服务器匹配。