当前位置: 首页>>技术问答>>正文


Apache:访问被拒绝,因为缺少搜索权限

, ,

问题描述

我知道这个问题很多,但我看到的解决方案对我不起作用。

我只启用了一个虚拟主机,并且我正在尝试启用对不在文档根目录下的文件夹的访问

ServerAdmin webmaster@localhost
DocumentRoot /var/www/html

Alias /movies /home/username/Videos/Movies

<Directory /home/username/Videos/Movies/>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

我按如下方式设置了/etc/apache2/envvars

export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=public

我确保/home /username /Videos /和它的子floders由username:public拥有,将权限设置为777(775之后不起作用)并确保用户www-data属于组public

现在,当我进入localhost/movies时,我得到了

[Mon Apr 21 11:28:14.971844 2014] [core:error] [pid 1385:tid 140067725104896] (13)Permission denied: [client 127.0.0.1:46603] AH00035: access to /movies/ denied (filesystem path '/home/username/Videos') because search permissions are missing on a component of the path

但是当我将/etc/apache2/envvars设置为在username(我自己的用户名)下运行Apache时,一切正常。问题是权限相关,但我不知道在我的情况下,特别是当我将权限设置为777时。有任何想法吗?

附: Ubuntu版本是14.04,Apache是​​2.4.7,我没有编辑其他配置文件。

最佳解决思路

在您的用户目录上执行chmod +x,然后重新启动apache。 755权限应该工作。我遇到了644问题。

次佳解决思路

如果selinux是问题,而不是仅仅禁用它,this pagethis page给出命令来授予访问权限:

chcon -R -t httpd_sys_content_t ~/public_html/

第三种解决思路

您可能启用了selinux。尝试

getenforce

如果显示”Enforcing”,请尝试

setenforce 0

并尝试,如果这可以解决您的问题。

第四种思路

我遇到了同样的问题,经过几个小时的尝试,我发现一个解决方案正好解决了这个问题:

https://wiki.apache.org/httpd/13PermissionDenied

基本上,Apache服务器不仅需要它所服务的所有文件的读取权限,还需要虚拟主机路径中所有目录的执行权限。

实用程序名称可用于通过列出路径的每个组件的权限来帮助查找权限问题:

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

在我的情况下,我的路径中的目录具有权限700,它会导致问题。将其更改为701后,问题就解决了。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/1550.html,未经允许,请勿转载。