Ubuntu 上 Apache 权限问题的排查与修复
一 快速定位问题
sudo systemctl status apache2sudo tail -n50 /var/log/apache2/error.logsudo tail -n50 /var/log/apache2/access.logps -ef | grep apache2grep -E 'APACHE_RUN_USER|APACHE_RUN_GROUP' /etc/apache2/envvarssudo systemctl reload apache2 或 sudo systemctl restart apache2sudo ufw status;如未放行:sudo ufw allow 'Apache Full'(仅影响外部访问,不解决文件系统权限)二 修复文件与目录权限
sudo chown -R www-data:www-data /var/www/htmlsudo find /var/www/html -type d -exec chmod 755 {} \;sudo find /var/www/html -type f -exec chmod 644 {} \;sudo chown -R www-data:www-data /var/www/html/uploadssudo chmod 775 /var/www/html/uploadssudo usermod -a -G youruser www-datachmod 755 /home/youruser;必要时对 www 目录设 755 与属主 www-data:www-datasudo systemctl reload apache2三 修正 Apache 目录访问控制与虚拟主机配置
<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
AllowOverride 不为 None,并在需要时启用相应模块(如 mod_rewrite)。sudo a2ensite your-site.conf && sudo systemctl reload apache2<Directory> 配置、目录无执行权限、或上级目录不可访问导致,按上述示例修正后通常可恢复。四 处理安全模块与系统限制
sudo aa-statussudo systemctl reload apparmorgetenforcesudo setenforce 0(仅测试用途)五 安全加固与最佳实践