在 CentOS 上配置 Apache 的权限,通常包含以下几个方面:文件权限、目录权限、SELinux、Apache 用户、防火墙。下面按常见场景一步步说明。
CentOS 中 Apache(httpd)默认用户是:
apache
配置文件位置:
/etc/httpd/conf/httpd.conf
查看:
grep -E "User|Group" /etc/httpd/conf/httpd.conf
一般看到:
User apache
Group apache
chown -R apache:apache /var/www/html
chmod -R 755 /var/www/html
解释:
755:目录可进入、可读、可执行644find /var/www/html -type f -exec chmod 644 {} \;
find /var/www/html -type d -exec chmod 755 {} \;
如果程序需要写入:
chown -R apache:apache /var/www/html/uploads
chmod -R 775 /var/www/html/uploads
⚠ 不建议设置为 777
getenforce
Enforcing:严格模式(推荐)Permissive:只记录不拦截Disabled:关闭semanage fcontext -a -t httpd_sys_content_t "/var/www/html(/.*)?"
restorecon -Rv /var/www/html
如果是可写目录(如上传):
semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/uploads(/.*)?"
restorecon -Rv /var/www/html/uploads
setsebool -P httpd_can_network_connect on
编辑虚拟主机或 httpd.conf:
<Directory "/var/www/html">
AllowOverride All
Require all granted
</Directory>
如果是 CentOS 7+(Apache 2.4):
Require all grantedOrder allow,denyfirewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
Require all granted.htaccess 语法错误✅ 不要使用 777
✅ 不要改 Apache 为 root
✅ 可写目录单独隔离
✅ SELinux 保持 Enforcing
如果你能告诉我:
我可以给你精确到命令的配置方案。