oks*_*far 6 permissions virtualhost
我在使用 CentOS 6.3 在 Apache 2.4 上设置虚拟主机时遇到问题。
这个问题似乎在这个论坛上已经回答了几次,但没有一个解决方案对我有用。
基本上,我设置了一个具有特定文档根目录的虚拟主机。当我尝试访问该站点时,出现权限错误。但是如果我使用不同的根,我没有问题。
更具体地说,如果我将根设置为 /volume1/web/xxx,由于 index.html 上的权限问题,我会收到 503。
但是如果我将它设置为 /volume1/web,index.html 就会毫无问题地出现。
细节:
在 httpd.conf 中,我设置了 VirtualHost 选项,以便我可以通过更改 2 个注释标记轻松切换文档根目录
我在 conf 文件中有以下几行:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName localhost
#DocumentRoot /volume1/web
DocumentRoot /volume1/web/xxx
#<Directory /volume1/web>
<Directory /volume1/web/xxx>
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Order Allow,Deny
Allow from all
</Directory>
ErrorLog logs/localhost-error_log
CustomLog logs/localhost-access_log common
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
这些行包含适用于其他有相同问题的人的所有建议。
当我在浏览器中输入 localhost 时得到的结果取决于文档根目录。
如果 root 是 /volume1/web/xxx,那么我会收到 503 错误,并且 apache 错误日志中有这一行:
[2012 年 7 月 19 日星期四 17:17:52] [错误] [客户端 ::1] (13)权限被拒绝:访问 /index.html 被拒绝
我还尝试将 index.php 文件添加到目录中。然后,我收到了 php 文件和 html 文件的权限被拒绝消息。
我还尝试在目录和文件上将 user : group 设置为 apache : apache 。那没有帮助。
我已经做了我能想到的一切来修复权限,但无济于事。
有没有人知道这里发生了什么?
谢谢。
Mic*_*ton 12
您似乎在标准文件系统层次结构之外创建了一个新目录来保存您的 Web 文档。
当您这样做时,SELinux 不知道您的自定义目录结构,也不知道 Apache (httpd) 应该有权访问它。/var/log/audit/audit.log
在这种情况下,您将看到显示拒绝的消息。
要真正解决问题,您需要告诉 SELinux Apache 可以访问该目录。使用semanage fcontext命令执行此操作:
semanage fcontext -a -t httpd_sys_content_t "/volume1/web(/.*)?"
Run Code Online (Sandbox Code Playgroud)
模式匹配是用正则表达式完成的,所以这将匹配/volume1/web
它下面的所有内容。它使用正则表达式的事实也意味着您需要如上所示引用它。
然后重新标记文件:
restorecon -r -v /volume1/web
Run Code Online (Sandbox Code Playgroud)
SELinux 现在将允许 Apache 访问/volume1/web
.