温馨提示×

CentOS Apache权限设置指南

小樊
43
2025-11-03 15:25:18
栏目: 智能运维

CentOS Apache权限设置指南

1. 前置准备:安装与启动Apache

在设置权限前,需确保Apache已正确安装并运行:

# 安装Apache(CentOS默认仓库提供httpd)
sudo yum install httpd -y

# 启动Apache并设置开机自启
sudo systemctl start httpd
sudo systemctl enable httpd

2. 用户与用户组管理

Apache需以专用用户/组运行,避免使用root提升安全性:

  • 创建专用用户和组(若系统未自带www用户):
    sudo groupadd www
    sudo useradd -g www -d /var/www -s /usr/sbin/nologin www
    

    注:-s /usr/sbin/nologin禁止用户登录,降低安全风险。

  • 修改Apache配置,指定运行用户/组:
    编辑/etc/httpd/conf/httpd.conf,找到并修改以下指令:
    User www
    Group www
    

3. 文件与目录权限设置

合理设置权限是权限管理的核心,需区分目录文件的不同需求:

  • 创建网站目录(以/var/www/example.com/public_html为例):
    sudo mkdir -p /var/www/example.com/public_html
    
  • 设置所有者:将目录归属Apache用户/组,确保Apache有访问权限:
    sudo chown -R www:www /var/www/example.com/public_html
    
  • 设置目录权限:目录需读+执行权限(允许遍历),推荐755
    sudo chmod -R 755 /var/www/example.com
    
  • 设置文件权限:文件需权限(避免写入风险),推荐640(所有者可读写,组可读,其他无权限):
    sudo find /var/www -type f -exec chmod 640 {} \;
    

4. SELinux配置(仅CentOS启用SELinux时需操作)

SELinux会限制Apache访问非标准目录,需调整上下文:

  • 安装SELinux管理工具(若未安装):
    sudo yum install policycoreutils-python -y
    
  • 设置目录SELinux上下文:将网站目录标记为httpd_sys_content_t(允许Apache读取):
    sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/example.com/public_html(/.*)?"
    sudo restorecon -Rv /var/www/example.com/public_html
    
  • 临时关闭SELinux(不推荐生产环境)
    sudo setenforce 0
    

    注:关闭SELinux会降低系统安全性,仅用于测试环境。

5. Apache配置文件优化

通过配置文件细化权限控制,限制访问范围:

  • 目录访问控制:编辑/etc/httpd/conf/httpd.conf或虚拟主机配置文件,添加<Directory>指令:
    <Directory "/var/www/example.com/public_html">
        Options Indexes FollowSymLinks  # 允许目录列表和符号链接
        AllowOverride None               # 禁止.htaccess覆盖(提升性能)
        Require all granted              # 允许所有IP访问(生产环境建议限制)
    </Directory>
    
  • 启用基本认证(可选):为敏感目录添加密码保护:
    ① 创建密码文件:
    sudo htpasswd -c /etc/httpd/.htpasswd username
    
    ② 在目标目录的.htaccess文件中添加:
    AuthType Basic
    AuthName "Restricted Access"
    AuthUserFile /etc/httpd/.htpasswd
    Require valid-user
    
    ③ 修改Apache配置,允许.htaccess覆盖:
    <Directory "/var/www/example.com/secure_dir">
        AllowOverride AuthConfig
    </Directory>
    

6. 防火墙配置

允许HTTP(80端口)和HTTPS(443端口)流量通过防火墙:

# 永久添加服务规则
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
# 重新加载防火墙
sudo firewall-cmd --reload

7. 测试与验证

  • 重启Apache使配置生效:
    sudo systemctl restart httpd
    
  • 验证权限
    ① 浏览器访问http://服务器IP,确认网站能正常加载;
    ② 检查敏感目录是否能被未授权用户访问(如修改Require all grantedRequire ip 192.168.1.100,测试指定IP是否可访问)。

注意事项

  • 避免过度开放权限:目录权限不建议超过755,文件权限不建议超过640
  • 定期检查权限:尤其是新增文件或目录时,需重新应用正确的权限;
  • 备份配置文件:修改前备份httpd.conf和虚拟主机配置文件,防止误操作导致服务中断。

0