Apache组权限配置核心是按职责分组、最小权限赋权,需匹配运行组(RHEL/CentOS为apache,Debian/Ubuntu为www-data),网站根目录设750/755且属组为运行组,配置目录严格限制为750/640,日志目录设750/640并确保logrotate正确创建文件,模块目录须root:root且644,上传目录需禁用脚本执行并配合SELinux上下文恢复。

Apache 组权限配置的核心是“按职责分组、最小权限赋权”,不是给所有目录统一加一个组,而是让不同功能区域由不同组承担对应责任,并确保 Apache 进程能读(或写)所需资源,同时杜绝越权。
Apache 运行组必须与系统用户身份匹配
Apache 子进程默认以特定用户(如 apache 或 www-data)运行,它所属的主组就是关键执行组。这个组不能是 root,也不能是普通用户组(如 users),而应是专用于 Web 服务的系统组:
- RHEL/CentOS:
apache组 - Debian/Ubuntu:
www-data组
确认方式:ps aux | grep httpd | head -1或grep "^Group" /etc/httpd/conf/httpd.conf(Linux)
网站根目录:属组设为 Apache 运行组,权限 750 或 755
这是内容交付区,Apache 需要读取 HTML、CSS、JS 等静态文件:
- 目录属主:可设为开发者(如
deploy:apache),也可设为apache:apache - 权限建议:
750(安全优先)或755(兼容性优先) - 文件权限:静态资源设为
640或644,确保组可读、其他不可读
若需支持 CMS 上传(如 WordPress 的 wp-content/uploads):
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 单独设该子目录为
775(所有者+组可写) - 确保开发者账号加入
apache组:usermod -aG apache deploy - 不要把整个
wp-content设为可写,仅uploads目录开放写权限
配置目录(/etc/httpd/conf 或 /etc/apache2):组权限严格限制
配置是服务中枢,必须防篡改:
- 所有者:
root,所属组也应为root或专用组(如apacheconf) - 目录权限:
750(drwxr-x---),禁止其他用户访问 - 配置文件(如
httpd.conf):640(-rw-r-----),Apache 进程只需读,不可写
日志目录(/var/log/httpd 或 /var/log/apache2):组需有读权限,但不可写
Apache 进程需追加写入日志,但不应允许读取旧日志(防信息泄露):
- 属主:
root或apache(推荐root) - 所属组:
apache(保证进程能写) - 目录权限:
750 - 日志文件权限:
640(-rw-r-----) - logrotate 配置中需明确
create 640 root apache,避免轮转后权限丢失
模块目录(/usr/lib64/httpd/modules 或 /usr/lib/apache2/modules):组不可写、不可执行
模块一旦被替换,整个服务即失守:
- 所有者和所属组都设为
root:root - 目录权限:
755 -
.so文件权限:644 - 禁止
apache用户对 modules 目录有任何写权限,也不开放执行位给组或其他人
上传目录或动态脚本目录:额外用
即使组有写权限,也必须防止恶意脚本被执行:
<Directory "/var/www/example.com/uploads">
Require all granted
Options -ExecCGI -Includes -Indexes
<FilesMatch "\.(php|pl|py|jsp|sh|cgi)$">
Require all denied
</FilesMatch>
</Directory>搭配系统权限 775 + apache 组,既满足写入需求,又守住执行边界。
不复杂但容易忽略:每次 chown 或 chmod 后,若启用 SELinux,必须执行 restorecon -Rv /path 恢复上下文,否则 Apache 可能因策略拒绝访问。

















