CentOS Apache HTTPD配置(禁止403)


8

这就是我的httpd.conf中的内容

<VirtualHost *:80>
        ServerAdmin spero78@spero78.com
        ServerName mcmoddr.com
        ServerAlias www.mcmoddr.com
        DocumentRoot /home/mcmoddr/www/
        ErrorLog /mcmoddr/logs/error.log
        CustomLog /mcmoddr/logs/accesslog combined
</VirtualHost>

当访问该网站时,我收到403禁止错误,该文件与vsftpd一起添加,并具有drwxr-xr-x权限

Answers:


12

您使用的是CentOS的常规安装,如果正确,请检查SELinux是否处于Enforcecing模式

getenforce

如果结果为“执行”

暂时将其更改为宽松

setenforce 0

然后再试一次,您也可以将Web内容的状态引导到主目录中的文件。


就我而言,这就是窍门。但是,如果我随后再次使用setenforce 1进行加固,则即使以前使用的配置与以前相同,也不会再显示403错误。
damix911

这不过是一个肮脏的hack。当然,禁用简单的安全功能不是正确的方法。您应该改为配置它们。
的傻瓜

9

禁用SELinux或在ROOT中运行

setsebool -P httpd_enable_homedirs on
chcon -R -t httpd_sys_content_t /home/
chcon -R -t httpd_sys_rw_content_t /home/

5

Freaktor对“ setenforce 0”的回答为我做了“工作”(谢谢!)

但是要使其正常运行并重新启用SELinux,我需要

sudo chcon -Rv --type=httpd_t /path/to/my/files

...这为我的目录及其中的所有文件和目录提供了“ httpd_t”的安全上下文,这是一种笨拙的说法,SELinux允许httpd读取这些文件。

再次启用selinux很简单

setenforce 1

2
这只是暂时的;您创建的任何新文件都将具有其原始上下文,而SELinux仍将拒绝访问这些新文件。有关永久解决方案,请参见此答案
迈克尔·汉普顿

3

您可能会拒绝全局配置中的所有内容。尝试将其添加到vhost节中:

<Directory /home/mcmoddr/www>
  Order allow,deny
  Allow from all
</Directory>

+ 1,@ Spero78还应确保没有.htaccess文件位于带有限制性指令的vhost根目录中

0

您需要使用上述<Directory>容器。

然后,您需要从DocumentRoot路径中检查每个目录必须具有读取权限,以便服务用户apache可以访问。

你可以检查使用 ls -ld


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.