将/ var / www更改为/ srv获取403

时间:2016-06-01 01:22:32

标签: linux apache web permissions

我曾经使用/srv作为apro的webroot。创建新的CentOS计算机后,默认的DocumentRoot设置为/var/www/html。我已经更改了这个/srv,但是当我访问我的域名时,我得到了403.

从创建的默认httpd.conf文件中,我更改了以下内容:

DocumentRoot "/srv/www/html"

<Directory "/srv/www">
    AllowOverride None
    Require all granted
</Directory>
<Directory "/srv/www/html">
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

这是ls -lhA中的/srv

rwxrwxrwx. 3 root root 34 Jan 29 06:51 www

777目录只是为了让它发挥作用。在我弄清楚错误之后,我会改变这一点。 chmod -R a=rwx /srv就是我做的。

1 个答案:

答案 0 :(得分:1)

默认情况下,CentOS以Enforcing模式运行SELinux,这会对文件系统施加额外的安全限制。为了让SELinux允许Apache读取文件系统位置,它们必须具有正确的SELinux上下文。

/var/www/html的典型背景是httpd_sys_content_t。您需要使用/srv/www/usr/bin/chcon上设置该上下文。

# Set the correct context for readable web server documents
$ chcon -t httpd_sys_content_t /srv/www

要递归执行此操作,请使用chcon -R。我不希望您需要在父/srv上设置该上下文,而是专门针对/srv/www。之后,请务必限制您当前拥有的chmod的正常777文件系统权限。

如果您的路径必须可由Apache Web服务器写入,除了使那些可写chmod之外,您还需要设置读/写上下文:httpd_sys_rw_content_t

要列出Apache使用且SELinux已知的上下文及其所属的路径,请运行:

$ semanage fcontext -l | grep httpd

要检查现有文件的上下文,请使用-Z标记ls。这可以帮助您匹配新目录的正确上下文。

$ ls -lZ /var/www

drwxr-xr-x. 2 root root system_u:object_r:httpd_sys_script_exec_t:s0 4096 Jan  4 02:25 cgi-bin
drwxr-xr-x. 2 root root system_u:object_r:httpd_sys_content_t:s0     4096 Jan  4 02:25 html