![apache 不会遵循符号链接 | 403 权限被拒绝](https://linux22.com/image/1408556/apache%20%E4%B8%8D%E4%BC%9A%E9%81%B5%E5%BE%AA%E7%AC%A6%E5%8F%B7%E9%93%BE%E6%8E%A5%20%7C%20403%20%E6%9D%83%E9%99%90%E8%A2%AB%E6%8B%92%E7%BB%9D.png)
我正在使用 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 group
sudo 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/mesudo 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”。