这让我抓狂了!
刚刚安装了带有 Apache 2.4.7 的 Ubuntu 14.04。我找到了很多关于这个问题的帖子,但似乎都不起作用。我确实启用了 ACL,但 -b(删除条目)或为 www-data 组添加权限都不起作用。真正让我烦恼的是,我真的不知道问题出在哪里(不过我认为这是 Apache 的问题)?
尝试了这里的一切:Apache 2.4 不遵循所有符号链接
apache2.conf
<Directory /var/www/>
Options +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
启用站点的/vhost.conf
<VirtualHost *:80>
ServerName dev.net
ServerAdmin [email protected]
DocumentRoot /var/www/dev
<Directory /var/www/dev/>
Options +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.dev.log
CustomLog ${APACHE_LOG_DIR}/access.dev.log combined
</VirtualHost>
ls-al /var/www
lrwxrwxrwx 1 root root 40 Sep 30 13:51 dev -> /home/yyyy/dev
sudo -u www-data ls -al /var/www/dev/
ls: cannot access /var/www/dev/: Permission denied
错误日志
[Tue Sep 30 14:16:22.508794 2014] [core:error] [pid 544] [client 127.0.0.1:52850] AH00037: Symbolic link not allowed or link target not accessible: /var/www/dev
这些是与身份验证相关的启用模块(这些在安装期间默认启用):
access_compat.load -> ../mods-available/access_compat.load
auth_basic.load -> ../mods-available/auth_basic.load
authn_core.load -> ../mods-available/authn_core.load
authn_file.load -> ../mods-available/authn_file.load
authz_core.load -> ../mods-available/authz_core.load
authz_host.load -> ../mods-available/authz_host.load
authz_user.load -> ../mods-available/authz_user.load
我在这里做错了什么?
解决方案
我明白了。希望我的愚蠢能为其他人节省一些时间。我忘了自己曾经加密了我的主目录这是我以前没有做过的。
一旦我将符号链接从等式中取出,日志错误就会发生改变,这导致了这个问题:
[Tue Sep 30 16:16:36.497015 2014] [core:error] [pid 2292] (13)Permission denied: [client 127.0.0.1:54012] AH00035: access to / denied (filesystem path '/home/yyyy/zzzz') because search permissions are missing on a component of the path
果然drwx------ /home/yyyy/zzzz
答案1
添加www-data
为所有者和所有者组:
sudo chown -R www-data:www-data /var/www
root
默认情况下,用户始终对整个文件系统拥有读写权限。
或者…
您可以修改运行 apache 的用户,但这可能会造成损害,因此我不建议这样做。