CentOS 上 Apache 权限设置实操指南
一 运行身份与最小权限原则
User apache
Group apache
示例二(自建 www 账户,推荐为服务专用且禁止登录):sudo groupadd www
sudo useradd -g www -s /sbin/nologin www
# 在 httpd.conf 中
User www
Group www
二 目录与文件权限推荐值
sudo mkdir -p /var/www/example.com/public_html
sudo chown -R centos:www /var/www/example.com
find /var/www/example.com -type d -exec chmod 755 {} \;
find /var/www/example.com -type f -exec chmod 640 {} \;
# 例如仅对上传目录放开
sudo chown -R centos:www /var/www/example.com/public_html/uploads
find /var/www/example.com/public_html/uploads -type d -exec chmod 750 {} \;
find /var/www/example.com/public_html/uploads -type f -exec chmod 660 {} \;
三 SELinux 与访问控制
# 只读内容
sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/example.com(/.*)?"
sudo restorecon -Rv /var/www/example.com
# 需要写入的目录(如 uploads、cache)设置为 httpd_sys_rw_content_t
sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/example.com/public_html/(uploads|cache)(/.*)?"
sudo restorecon -Rv /var/www/example.com/public_html
<Directory /var/www/example.com/public_html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
四 防火墙与端口放行
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
五 变更生效与验证
sudo httpd -t # 语法检查
sudo systemctl reload httpd # 平滑重载
# 或重启
sudo systemctl restart httpd