apache 不会遵循符号链接 | 403 权限被拒绝

apache 不会遵循符号链接 | 403 权限被拒绝

我正在使用 Ubuntu 14.04,Apache 配置出现问题:

我创建了一个符号/var/www/html链接/home/me/myWebDirectory

localhost/myWebDirectory呈现

403-权限被拒绝

事实上,sudo -u www-data ls /home/me/myWebDirectory也会返回权限被拒绝

apache2.conf 有以下指令:

<Directory /var/www>
           Options Indexes FollowSymLinks
           AllowOverride None
           Require all granted
 </Directory>

我将其改为<Directory /var/www/html>,但没有结果。

我尝试使用此命令添加me用户,但这也无济于事www-data groupsudo usermod -a -G groupName userName

我错过了什么?

编辑:我将组更改/home/me/myWebDirectory为具有 rx 权限的 www-data,但也没有成功......

正如我所说的,我很清楚我有一个读取权限问题,因为这sudo -u www-data ls /home/me/myWebDirectory也返回了一个权限被拒绝(这意味着 www-data 无权查看其中的内容)。

但我需要你回答的某些要点更清楚:

您还应该使用 URL“localhost/html”,而不是“localhost/myWebDirectory”。

实际上我已经创建了如下符号链接:

  • cd /var/www/html
  • ln -s /home/user/me/myWebDirectory myWebDirectory

所以我认为访问localhost/myWebDirectory是正确的地址,不是吗?

chown -R www 数据:www 数据 /var/www/html

  • 从 ubuntu 14.04 开始,Apache DocRoot 是/var/www/html我为什么要改变它的主人(与许多其他守护进程一样,默认情况下为根)。
  • /localhost/testfile.html工作正常(了解测试文件在/var/www/html
  • /localhost/phpmyadmin也可以工作,即使它是一个符号链接/usr/share(当我尝试拥有一个符号链接时/home/user......)

chmod +r /var/www/html # 添加对目录的读取权限

chmod +r /var/www/html/* # add read permission to files in dir
  • 将读取权限添加到谁? 到 myUser?
  • 但这恰恰是我不想做的。
  • 我实际上希望 apache 能够读取 /home/me/myWebDirectory,而不是 myUser 去写入 apache 的目录。

注意: 我知道还有另一种方法可以做到这一点,即在激活 Apache 时mod_userdir,这可能就是我接下来要做的事情。但首先我想了解如何使这个“简单”的解决方案发挥作用...

答案1

我最终通过以下解决方案解决了我的问题,希望它能对将来的任何人有所帮助......

sudo chown me:www-data /home/me
sudo chmod 710 /home/me

sudo chown -R me:www-data /home/me/myWebDirectory

sudo chmod -R g+r /home/me/myWebDirectory

注意:例如,您可能不希望所有子目录都被 apache 读取,因此请调整 -R(ecursive)指令。

但重要的是授予 apache 用户组对您家的读取权限,然后授予对相关婴儿的读取权限。

答案2

问题是由于缺少读取权限而产生的。执行:

# chmod +r /var/www/html  # add read permission to dir
# chmod +r /var/www/html/* # add read persmission to files in dir
# chown -R www-data:www-data /var/www/html

另外,您的 shouse 使用 url“localhost/html”而不是“localhost/myWebDirectory”。

相关内容