linux apache拒绝访问目录,Linux更改Apache默认网站目录出错:Document root must be a directory的解决办法...

Document root must be a directory

这是系统开启了SELinux安全策略造成的。把目录或文件设成了 user_home_t 类型,因此 apache 的进程没有权限,无法访问。针对Apache的进程所使用的SELinux target policy规定了apache的进程只能访问 httpd_sys_content_t 类型的目录或文件。

查看下SElinux状态

[root@localhost home]# getenforce

Enforcing

果然SElinux被开启了,而且还是强制模式,所以只要修改相关的权限就可以了。

解决办法:

方法一:更改文件夹权限

把目录或文件的策略类型改成 httpd_sys_content_t 就可以了。

chcon -R -t httpd_sys_content_t /home/www/

然后用 ls -Z 命令查看文件目录的策略类型(目录权限)。

[root@localhost home]# ls -Z

drwx------. mysql mysql unconfined_u:object_r:user_home_dir_t:s0 mysql

drwxr-xr-x. root root unconfined_u:object_r:httpd_sys_content_t:s0 www

方法二:禁用SELinux

如果你真的被SELinux折磨的没有办法了。那就直接禁用SELinux吧。系统的不安全总比服务器不能访问的权重要低些吧。直接编辑SELinux的配置文件。

vim /etc/sysconfig/selinux #或 vim /etc/selinux/config

把SELINUX的值从enforcing改成disabled就行。存盘退出,这回一定可以了,如果还不可以就重启一下服务器吧。

若想不重启系统的同学可以使用setenforce命令设置SElinux。

setenforce disabled #或 setenforce 0

chcon 命令参数详解

[root@localhost home]# chcon --help

用法: chcon [选项]... 环境 文件...

或: chcon [选项]... [-u 用户] [-r 角色] [-l 范围] [-t 类型] 文件...

或: chcon [选项]... --reference=参考文件 文件...

Change the SELinux security context of each FILE to CONTEXT.

With --reference, change the security context of each FILE to that of RFILE.

-h, --no-dereference affect symbolic links instead of any referenced file

--reference=参考文件使用指定参考文件的安全环境,而非指定值

-R, --recursive 递归处理所有的文件及子目录

-v, --verbose 为处理的所有文件显示诊断信息

-u, --user=用户 设置指定用户的目标安全环境

-r, --role=角色 设置指定角色的目标安全环境

-t, --type=类型 设置指定类型的目标安全环境

-l, --range=范围 设置指定范围的目标安全环境

以下选项是在指定了 -R 选项时被用于设置如何穿越目录结构体系。

如果您指定了多于一个选项,那么只有最后一个会生效。

-H 如果命令行参数是一个通到目录的符号链接,则遍历符号链接

-L 遍历每一个遇到的通到目录的符号链接

-P 不遍历任何符号链接(默认)

--help显示此帮助信息并退出

--version显示版本信息并退出

你可能感兴趣的:(linux,apache拒绝访问目录)