在 Debian 下使用 Apache 时,“设权限”通常包含 文件系统权限、Apache 运行用户、目录访问权限 和 虚拟主机/配置文件权限 几个方面。下面按常见场景说明。
Debian 中 Apache 默认用户是:
www-data:www-data
查看:
ps aux | grep apache
或
grep -E '^User|^Group' /etc/apache2/apache2.conf
假设网站目录为:
/var/www/html
sudo chown -R www-data:www-data /var/www/html
sudo find /var/www/html -type d -exec chmod 755 {} \;
sudo find /var/www/html -type f -exec chmod 644 {} \;
含义:
755(drwxr-xr-x)644(rw-r–r–)更安全的做法:
sudo chown -R youruser:www-data /var/www/html
sudo chmod -R 750 /var/www/html
sudo chmod g+s /var/www/html
解释:
www-data 组读取如果允许用户上传:
sudo chown -R www-data:www-data /var/www/html/uploads
sudo chmod -R 775 /var/www/html/uploads
⚠️ 上传目录 不要给 777
编辑虚拟主机或 apache2.conf:
sudo nano /etc/apache2/sites-available/000-default.conf
示例:
<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
说明:
Require all granted:允许访问AllowOverride All:允许 .htaccessIndexes:允许目录列表(不建议生产环境)修改后:
sudo systemctl reload apache2
确保 Apache 允许:
AllowOverride All
文件本身权限:
sudo chmod 644 /var/www/html/.htaccess
<FilesMatch "^\.|\.env|\.git">
Require all denied
</FilesMatch>
Debian 默认 不启用 SELinux,而是用:
sudo aa-status
如果使用 AppArmor,注意 /var/www 默认允许。
Require all granted✅ 不用 777
✅ 网站文件归 www-data 或 user:www-data
✅ 上传目录单独设置
✅ 禁用目录浏览
✅ 隐藏 .env / .git
如果你能告诉我:
我可以给你 精确权限方案。