以下是CentOS下Apache权限设置的核心技巧,涵盖用户、文件、配置及安全层面:
sudo groupadd apache
sudo useradd -g apache -s /sbin/nologin apache # 禁止登录shell
sudo chown -R apache:apache /var/www/html # 网站目录归属apache用户组
/var/www/html
):755
(所有者可读写执行,其他用户仅读执行)。/uploads
):775
或770
(需允许组内写入)。sudo chmod -R 755 /var/www/html
sudo find /var/www/html -type d -exec chmod 755 {} \; # 递归设置目录权限
644
(所有者可读写,其他用户仅读)。644
(无需执行权限,由Apache模块处理)。sudo find /var/www/html -type f -exec chmod 644 {} \;
/etc/httpd/conf/httpd.conf
):User apache
Group apache # 指定Apache运行用户/组
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted # 允许所有IP访问(生产环境建议限制为特定IP)
</Directory>
sudo a2enmod auth_basic # 启用基础认证模块
sudo systemctl restart httpd
sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/html(/.*)?" # 标记为HTTP可访问内容
sudo restorecon -Rv /var/www/html
sudo firewall-cmd --permanent --add-service=http --add-service=https
sudo firewall-cmd --reload
ServerSignature Off
ServerTokens Prod
<Directory>
中添加Options -Indexes
,防止未授权访问目录。关键命令总结:
场景 | 命令示例 | 作用 |
---|---|---|
设置所有者 | chown -R apache:apache /path |
确保Apache用户组拥有权限 |
设置目录权限 | chmod -R 755 /path |
允许所有者读写执行,其他用户仅读执行 |
设置文件权限 | find /path -type f -exec chmod 644 {} \; |
静态文件仅所有者可修改 |
调整SELinux上下文 | semanage fcontext -a -t httpd_sys_content_t /path |
允许Apache访问指定路径 |
参考来源: