Ubuntu Apache 权限设置指南
一 基础安全原则
二 文件与目录权限设置
# 设置属主与属组
sudo chown -R www-data:www-data /var/www/html
# 目录 755,文件 644
sudo 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/uploads
sudo chmod 775 /var/www/html/uploads
三 Apache 运行身份与虚拟主机配置
ps aux | grep apache2
sudo nano /etc/apache2/envvars
# 修改:
export APACHE_RUN_USER="www-data"
export APACHE_RUN_GROUP="www-data"
<VirtualHost *:80>
ServerAdmin webmaster@yourdomain.com
ServerName yourdomain.com
DocumentRoot /var/www/yourdomain.com
<Directory /var/www/yourdomain.com>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
sudo a2ensite yourdomain.com.conf
sudo systemctl reload apache2
<Location "/admin">
Require ip 192.168.1.0/24 203.0.113.10
</Location>
sudo a2enmod auth_basic authn_file
sudo htpasswd -c /etc/apache2/.htpasswd admin
<Location "/admin">
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
</Location>
四 安全加固与运维要点
sudo aa-status
# 按需编辑 /etc/apparmor.d/usr.sbin.apache2 并 reload
sudo systemctl reload apparmor
sestatus
sudo chcon -Rv --type=httpd_sys_content_t /var/www/html
# 或策略调整(示例)
sudo setenforce 0 # 临时
sudo sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config # 永久示例
sudo ufw allow 'Apache Full'
sudo tail -f /var/log/apache2/error.log
sudo tail -f /var/log/apache2/access.log
五 常见问题与排查