Ubuntu 上 Apache2 权限设置实操指南
一 基础权限与所有权
ps aux | grep apache2 验证。sudo chown -R www-data:www-data /var/www/htmlsudo find /var/www/html -type d -exec chmod 755 {} \;(所有者 rwx,组和其他 rx)sudo find /var/www/html -type f -exec chmod 644 {} \;(所有者 rw,组和其他 r)二 Apache 运行身份与目录访问控制
export APACHE_RUN_USER="www-data"export APACHE_RUN_GROUP="www-data"sudo systemctl restart apache2<Directory /var/www/html>
Options Indexes FollowSymLinksAllowOverride All(如需 .htaccess)Require all granted</Directory><Location "/admin"> Require ip 192.168.1.0/24 </Location>sudo a2enmod auth_basic authn_filesudo htpasswd -c /etc/apache2/.htpasswd myuser<Location "/admin"> AuthType Basic AuthName "Restricted" AuthUserFile /etc/apache2/.htpasswd Require user myuser </Location>sudo systemctl restart apache2。三 上传目录与特殊目录的权限
sudo chown -R youruser:www-data /var/www/html/uploadssudo find /var/www/html/uploads -type d -exec chmod 775 {} \;sudo find /var/www/html/uploads -type f -exec chmod 664 {} \;sudo chown -R www-data:www-data /var/www/html/uploadssudo chmod -R 755 /var/www/html/uploads(目录)与 644(文件)<Directory /var/www/html/uploads>
Options -ExecCGI -IncludesAddHandler cgi-script .php .pl .py .sh .cgiRequire all granted</Directory>四 SELinux 与 AppArmor 安全模块
sudo aa-status。如需为 Apache 调整策略,可编辑相应配置并 sudo systemctl reload apparmor。getenforce 或 sestatussudo chcon -Rv --type=httpd_sys_content_t /var/www/htmlsudo setenforce 0五 故障排查与常用命令
ps aux | grep apache2sudo apache2ctl configtestsudo systemctl reload apache2 或 sudo systemctl restart apache2sudo tail -f /var/log/apache2/error.logsudo ufw allow 'Apache Full'(开放 80/443)