Apache 13权限在用户的主目录中被拒绝

时间:2009-08-04 03:18:48

标签: apache permissions

我的朋友的网站工作正常,直到他将文档根目录从/var/www/xxx移动到/home/user/xxx

当我们尝试通过网络浏览器访问网站时,Apache会提供13条权限被拒绝的错误消息。

该站点配置为虚拟目录。所有Apache配置都未更改(目录更改除外)

我们尝试chmod 777 /home/user/xxx,chown apache / home / user / xxx。但他们没有用。

用户的主目录中是否设置了某种安全功能?服务器操作系统是CentOS(Godaddy VPS)。

感谢任何帮助!

谢谢!

9 个答案:

答案 0 :(得分:86)

原来......我们还必须chmod 755父目录,用户,以及xxx。

答案 1 :(得分:37)

即时通讯使用CentOS 5.5,对我而言, SElinux 搞乱它,我忘了检查出来。 您可以通过root身份临时禁用它

echo 0 > /selinux/enforce

希望它可以帮到某人

答案 2 :(得分:11)

selinux是导致这个问题的原因.....

TException:错误:TSocket:无法连接到localhost:9160(权限被拒绝[13]) 要解决此问题,您需要更改SELinux布尔值(它将在重新启动后自动保留)。您可能还想重新启动httpd以重置代理工作程序,尽管这不是严格要求的。

setsebool -P httpd_can_network_connect 1

(13)拒绝许可

错误13表示文件系统权限问题。也就是说,由于权限不正确,Apache被拒绝访问文件或目录。通常,它不会暗示Apache配置文件中存在问题。

为了提供文件,Apache必须拥有操作系统授予的适当权限才能访问这些文件。特别是,httpd.conf中指定的用户或组必须能够读取将要提供的所有文件并搜索包含这些文件的目录,以及直到文件系统根目录的所有父目录。

对于不属于httpd.conf中指定的用户或组的资源,类Unix系统的典型权限对于普通文件为644 -rw-r-r--,对于目录或CGI脚本为755 drwxr-xrx 。您可能还需要在支持它们的操作系统上检查扩展权限(例如SELinux权限)。

示例

假设您在类似unix的系统上访问文件/usr/local/apache2/htdocs/foo/bar.html时收到了Permission Denied错误。

首先检查文件的现有权限:

cd / usr / local / apache2 / htdocs / foo ls -l bar.htm

必要时修复它们:

chmod 644 bar.html

然后对目录和每个父目录(/ usr / local / apache2 / htdocs / foo,/ usr / local / apache2 / htdocs,/ usr / local / apache2,/ usr / local,/ usr)执行相同操作:

ls -la chmod + x。 cd ..

重复到根

在某些系统上,实用程序名称可以通过列出路径的每个组件的权限来帮助查找权限问题:

namei -m /usr/local/apache2/htdocs/foo/bar.html

如果所有标准权限都正确并且您仍然收到“权限被拒绝”错误,则应检查扩展权限。例如,您可以使用命令setenforce 0关闭SELinux并检查问题是否消失。如果是这样,ls -alZ可以用来查看SELinux权限和chcon来修复它们。

在极少数情况下,这可能是由其他问题引起的,例如apache2.conf文件中其他位置的文件权限问题。例如,WSGIScriptAlias指令未映射到实际文件。有关哪个文件不可读的错误消息可能不准确。

不要将文件或目录设置为模式777,即使“只是为了测试”,即使“它只是一个测试服务器”。测试服务器的目的是在安全的环境中做正确的事情,而不是逃避做错。所有它会告诉你的是问题是否与实际存在的文件有关。

答案 3 :(得分:7)

不确定你是否修复了它但是在你的httpd.conf

检查您的用户/组设置。通常它将被设置为

用户www 集团www

如果有,请将其更改为您的姓名/小组

用户Greg 小组工作人员

答案 4 :(得分:3)

Apache的错误日志将解释您获得权限被拒绝的原因。此外,serverfault.com对于像这样的问题来说是一个更好的论坛。

如果错误日志只是说“权限被拒绝”,则向用户表示网络服务器正在运行,并尝试从相关文件中读取。例如:

sudo -s
su - nobody
cd /
cd /home
cd user
cd xxx
cat index.html

查看其中一个是否为您提供“权限被拒绝”错误。

答案 5 :(得分:3)

你不能在httpd.conf中设置Loglevel来调试吗? (我正在使用FreeBSD)

ee usr / local / etc / apache22 / httpd.conf

更改loglevel:

'LogLevel:控制记录到error_log的消息数。 可能的值包括:debug,info,notice,warn,error,crit, 警报,emerg。'

尝试更改为调试并在此之后重新检查错误日志。

答案 6 :(得分:2)

可能是SELinux。检查相应的日志文件(/ var / log / messages? - 因为我使用了RedHat派生词已经有一段时间了),看看是否阻止了访问。

答案 7 :(得分:0)

错误:

[error] [client 127.0.0.1] (13)Permission denied: Could not open password file: /home/XXX/svn/svn_password

的信息:

##SELinux Security Context File Labels
#httpd_sys_content_t  The type used by regular static web pages with .html and .htm extensions.
#httpd_sys_script_ro_t  Required for CGI scripts to read files and directories.
#httpd_sys_script_ra_t  Same as the httpd_sys_script_ro_t type but also allows appending data to files by the CGI script.
#httpd_sys_script_rw_t  Files with this type may be changed by a CGI script in any way, including deletion.
#httpd_sys_script_exec_t  The type required for the execution of CGI scripts 

解决方案:

[root@localhost]# perror 13
OS error code  13:  Permission denied
[root@localhost]# chown apache.apache /home/XXX/svn/ -R
[root@localhost]# semanage fcontext -a -t httpd_sys_script_rw_t  "/home/XXX/svn(/.*)?"
[root@localhost]# restorecon -R -v /home/XXX/svn/
[root@localhost]# restorecon reset /home/XXX/svn/ context
[root@localhost]# ls -dZ /home/XXX/svn/
drwxr-xr-x. apache apache system_u:object_r:httpd_sys_rw_content_t:s0 /home/XXX/svn/
[root@localhost]# ls -dZ /home/XXX/svn/svn_password 
-rwxr-xr-x. apache apache system_u:object_r:httpd_sys_rw_content_t:s0 /home/XXX/svn/svn_password
[root@localhost]# 

答案 8 :(得分:-2)

您是否更改了单个文件以及目录的权限?

chmod -R 777 /home/user/xxx