2009-08-04 49 views
38

我的朋友的网站工作正常,直到他将文档根从/var/www/xxx移动到/home/user/xxx在用户的主目录中拒绝Apache 13权限

当我们尝试通过网络浏览器访问网站时,Apache给出了13个权限被拒绝的错误消息。

该站点被配置为虚拟目录。所有的Apache配置都没有变化(目录更改除外)

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

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

任何帮助表示赞赏!

谢谢!

+3

应该去serverfault。 – 2009-08-04 03:21:58

+0

直到你提到它才知道= =)我想我会试试看。为什么他们保留两个(也许更多?)网站呢?集中这些类别不是更好吗? – Dave 2009-08-04 03:50:02

+0

@Dave:stackoverflow.com用于编程问题; serverfault.com用于sysadmin/server问题; superuser.com是针对一般“高级用户”和其他与计算机有关的其他问题。我想,帮助人们专注于他们的专业领域。 – Josh 2009-08-04 13:47:52

回答

84

原来......除xxx之外,我们还必须chmod 755父目录user。

-2

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

chmod -R 777 /home/user/xxx 
+2

你永远不应该对可公开访问的文件执行chmod 777 – 6bytes 2014-02-11 22:08:23

3

Apache的错误日志将解释您为什么拒绝权限。此外,serverfault.com是这样一个问题的更好的论坛。

如果错误日志只是简单地说“权限被拒绝”,su让用户运行web服务器并尝试从相关文件中读取。举例来说:

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

看看其中一个是否会给你“权限被拒绝”的错误。

+0

是的,我们查看了错误日志。它只有(13)许可被拒绝。 是否有一些参数可以设置为启用更多调试输出? – Dave 2009-08-04 03:51:35

2

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

+0

感谢您的帮助。我试图查看/ var/log/messages;有一大堆:消息,messages.1.gz,messages.2.gz,...直到messages.14.gz。/var/log/messages是空的;所以是我解压缩后的其他人... – Dave 2009-08-04 04:35:26

3

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

EE USR /本地/ etc/apache22/httpd.conf中

变化记录等级:

“的LogLevel:控制记录在error_log中的消息的数量。 可能的值包括:debug,info,notice,warn,error,crit, alert,emerg。'

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

+0

谢谢,现在的错误日志是:(13)权限被拒绝:/home/user/.htaccess pcfg_openfile:无法检查htaccess文件,确保它是可读的 – Dave 2009-08-05 20:01:11

6

不知道,如果你已经固定,但在你的httpd.conf

请查看您的用户/组设置。通常它会被设置为

用户WWW 集团WWW

如果是将其更改为使用的CentOS 5.5姓名/组

用户格雷格 组人员

37

IM,对我来说是SElinux搞乱了,我忘了检查一下。 你可以通过做作为根临时禁用它

echo 0 > /selinux/enforce 

希望它能帮助别人

11

SELinux的原因是该问题.....

TException:错误:TSocket:无法连接到localhost:9160(Permission denied [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 /本地/ Apache2的/ htdocs中/富 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 ..

重复直到根

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

对虾-m在/ usr /本地/apache2/htdocs/foo/bar.html

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

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

即使“只是测试服务器”,也不要将文件或目录设置为模式777,即使是“仅测试”。测试服务器的目的是在安全的环境中正确地做事,而不是为了避免做错事。它会告诉你的是如果问题出在实际存在的文件上。

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 

解决方案:

 
[[email protected]]# perror 13 
OS error code 13: Permission denied 
[[email protected]]# chown apache.apache /home/XXX/svn/ -R 
[[email protected]]# semanage fcontext -a -t httpd_sys_script_rw_t "/home/XXX/svn(/.*)?" 
[[email protected]]# restorecon -R -v /home/XXX/svn/ 
[[email protected]]# restorecon reset /home/XXX/svn/ context 
[[email protected]]# ls -dZ /home/XXX/svn/ 
drwxr-xr-x. apache apache system_u:object_r:httpd_sys_rw_content_t:s0 /home/XXX/svn/ 
[[email protected]]# 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 
[[email protected]]# 

相关问题