在设置权限前,需确保Apache已正确安装并运行:
# 安装Apache(CentOS默认仓库提供httpd)
sudo yum install httpd -y
# 启动Apache并设置开机自启
sudo systemctl start httpd
sudo systemctl enable httpd
Apache需以专用用户/组运行,避免使用root提升安全性:
www用户):sudo groupadd www
sudo useradd -g www -d /var/www -s /usr/sbin/nologin www
注:
-s /usr/sbin/nologin禁止用户登录,降低安全风险。
/etc/httpd/conf/httpd.conf,找到并修改以下指令:User www
Group www
合理设置权限是权限管理的核心,需区分目录与文件的不同需求:
/var/www/example.com/public_html为例):sudo mkdir -p /var/www/example.com/public_html
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 {} \;
SELinux会限制Apache访问非标准目录,需调整上下文:
sudo yum install policycoreutils-python -y
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
sudo setenforce 0
注:关闭SELinux会降低系统安全性,仅用于测试环境。
通过配置文件细化权限控制,限制访问范围:
/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>
允许HTTP(80端口)和HTTPS(443端口)流量通过防火墙:
# 永久添加服务规则
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
# 重新加载防火墙
sudo firewall-cmd --reload
sudo systemctl restart httpd
http://服务器IP,确认网站能正常加载;Require all granted为Require ip 192.168.1.100,测试指定IP是否可访问)。755,文件权限不建议超过640;httpd.conf和虚拟主机配置文件,防止误操作导致服务中断。