在 Ubuntu 上,Apache2 的“权限”通常涉及三个方面:
下面按常见场景说明。
Ubuntu 中 Apache 默认以 www-data 用户和组运行:
ps aux | grep apache2
配置文件中可见:
/etc/apache2/envvars
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
/var/www/html/example.com
sudo chown -R www-data:www-data /var/www/html/example.com
sudo find /var/www/html/example.com -type d -exec chmod 755 {} \;
sudo find /var/www/html/example.com -type f -exec chmod 644 {} \;
含义:
755644www-data如果是开发环境,也可以把你的用户加入 www-data 组,避免每次 sudo。
sudo usermod -aG www-data $USER
sudo chown -R $USER:www-data /var/www/html/example.com
sudo chmod -R 775 /var/www/html/example.com
然后重新登录。
在虚拟主机或 .htaccess 中控制访问。
<Directory /var/www/html/example.com/private>
Require all denied
</Directory>
<Directory /var/www/html/example.com/public>
Require all granted
</Directory>
修改后重启:
sudo systemctl restart apache2
确保 Apache 允许:
<Directory /var/www/html/example.com>
AllowOverride All
</Directory>
否则 .htaccess 不生效。
sudo chown -R www-data:www-data /var/www/html/example.com/wp-content/uploads
❌ 权限 777(不安全)
❌ 用 root 跑 Apache
❌ 目录没有 Require all granted
✅ 最小权限原则
如果你能说明:
我可以给你一套更精确的权限方案。