Ubuntu 20.04下Apache 2.4.53遇AH00037符号链接错误,求解决方案
解决方案:Apache 403 Forbidden(符号链接访问失败)
问题背景
环境信息:
- Ubuntu 20.04.4 LTS
- Apache/2.4.53 (Ubuntu)
访问http://160.55.56.28/artifacts时触发403错误,错误日志明确提示:
AH00037: Symbolic link not allowed or link target not accessible: /var/www/html/artifacts
该符号链接指向/home/admin/.mits/packages/releases,已执行chown -R admin:admin相关权限命令并重启服务,问题未解决。
核心原因
Apache默认以www-data用户运行,即使符号链接本身权限正常,www-data也需要拥有目标路径所有父目录的遍历权限以及目标目录/文件的读取权限,否则无法正常访问链接指向的内容。
解决步骤
1. 确认Apache运行用户
执行命令验证Apache的运行用户:
ps aux | grep apache2
默认配置下,输出会显示www-data为Apache的运行用户。
2. 赋予父目录遍历权限
/home/admin及其子目录需要允许www-data遍历(execute权限),可选择两种方式:
- 简单直接方式:给/home/admin添加其他用户的遍历权限
chmod o+x /home/admin - 更安全的方式:将www-data加入admin组,再配置组权限
sudo usermod -aG admin www-data chmod g+rx /home/admin /home/admin/.mits /home/admin/.mits/packages /home/admin/.mits/packages/releases
3. 确保目标目录文件可读取
给目标目录下的所有文件添加读取权限:
chmod -R g+r /home/admin/.mits/packages/releases
4. 检查Apache配置是否覆盖FollowSymLinks
确认/var/www/html的Directory配置未覆盖FollowSymLinks(部分默认配置会单独设置/html目录),在/etc/apache2/apache2.conf或/etc/apache2/sites-available/000-default.conf中添加:
<Directory /var/www/html> Options Indexes FollowSymLinks MultiViews AllowOverride All Require all granted </Directory>
5. 重启Apache服务
sudo systemctl restart apache2
6. 排查AppArmor限制(若上述步骤无效)
Ubuntu默认启用AppArmor,可能阻止Apache访问/home目录:
sudo aa-status
若看到apache2的profile处于enforce模式,修改/etc/apparmor.d/usr.sbin.apache2,添加一行:
/home/admin/.mits/packages/releases/** r,
然后重新加载AppArmor:
sudo systemctl reload apparmor
内容的提问来源于stack exchange,提问作者user4948798
相关产品推荐
相关产品推荐

