Apache 在从 NFS 共享提供图像时抛出 403

Apache 在从 NFS 共享提供图像时抛出 403

当我尝试从运行在机器 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 挂载的资料才能自动执行此操作

相关内容