当我尝试从运行在机器 A 上的 apache 提供图像时,我反复收到 403 权限被拒绝错误。图像位于机器 B 的 NFS 共享目录中。机器 B /etc/exports 上的条目如下:/dir/xxx.xxx.xxx.xxx(rw,sync,no_root_squash)
我能够成功浏览机器 A 上 NFS 挂载的文件/目录。
在查看 httpd.conf 之后,我还取消了那里写的选项 EnableMMAP off 和 EnableSendFile Off 的注释。
两台机器都使用 RHEL5。
答案1
终于解决了这个问题。这一直是 SELinux 的问题。在这里找到了解决方案 - http://www.redhat.com/docs/manuals/enterprise/RHEL-4-Manual/selinux-guide/rhlcommon-section-0068.html
在 Red Hat Enterprise Linux 4 中,大多数目标守护进程不与用户数据交互,并且不受 NFS 挂载主目录的影响。Apache HTTP 是一个例外。例如,挂载文件系统上的 CGI 脚本具有 nfs_t 类型,而这不是 httpd_t 允许执行的类型。
在相关服务器上将 SELinux 设置为宽容对我来说就完成了工作。
答案2
每当 UID/GID 没有正确排列时,NFS 总会导致类似有趣的事情发生。
假设您的网络服务器以用户“apache”的身份运行,请确保该文件的权限是全世界可读的。
su 到 apache 用户并 cd 到目录,然后尝试 cat 文件。
这很可能是权限问题。如果 apache 没有写入目录,它不会关心它读取的文件是在 NFS 上还是其他地方。
答案3
除了 Matt 的建议之外,还要检查 Apache 是否被允许从 NFS 挂载点所在的位置提供文件。出于安全考虑,许多 Apache 发行版都附带了如下限制指令:
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>
这样可以防止从 / 及以上目录提供任何文件。通常,您将有一个限制较少的规则,以允许包含您的 DocumentRoots 的另一个目录更自由地提供文件。
我不熟悉 RHEL5 如何分发其 Apache 配置文件。但您可能需要创建额外的目录指令以允许从挂载点提供文件。
答案4
我也遇到了同样的问题。
我在 Xubuntu 上,www-data 用户(apache)无权访问 nfs 挂载。
在“sudo mount -a”之前,挂载点是……
上传者:
但是之后
德鲁伊斯---
有人提到将目录的组更改为 www-data,但我在挂载后将其 chmod 改回 777。我需要阅读有关 nfs 挂载的资料才能自动执行此操作