你提到的 “CentOS Context” 在 Linux 里通常和 SELinux 上下文(Security Context) 有关。下面我按最常见场景给你一个系统性的排查思路,基本能覆盖 90% 的问题。
getenforce
或
sestatus
常见结果:
Enforcing ✅(最严格)Permissive ⚠️(只记录不拦截)Disabled ❌(SELinux 关闭)如果是
Disabled,那和 Context 基本无关,问题可能在权限或配置。
ls -Z /path/to/file
示例:
ls -Z /var/www/html/index.html
输出类似:
system_u:object_r:httpd_sys_content_t:s0 index.html
ps -eZ | grep httpd
示例:
system_u:system_r:httpd_t:s0 1234 httpd
Permission deniedls -Z /var/www/html
正常应是:
httpd_sys_content_t
如果看到:
user_home_t
或
unlabeled_t
✅ 修复方式
semanage fcontext -a -t httpd_sys_content_t "/var/www/html(/.*)?"
restorecon -Rv /var/www/html
semanage port -l | grep http
如果程序监听 非标准端口,需要添加:
semanage port -a -t http_port_t -p tcp 8080
ls -Z /data
如果进程需要写权限,常见类型:
httpd_sys_rw_content_tmysqld_db_tvar_log_t修改示例:
semanage fcontext -a -t httpd_sys_rw_content_t "/data(/.*)?"
restorecon -Rv /data
ausearch -m avc -ts recent
或实时查看:
tail -f /var/log/audit/audit.log
audit2why < /var/log/audit/audit.log
audit2allow -a
生成策略模块:
audit2allow -a -M mypolicy
semodule -i mypolicy.pp
⚠️ 不建议直接上线,先确认规则是否合理
setenforce 0
如果问题消失 ✅ → 就是 SELinux Context 问题
排查完后记得:
setenforce 1
| 服务 | Context 类型 |
|---|---|
| Apache / Nginx | httpd_sys_content_t |
| 可写目录 | httpd_sys_rw_content_t |
| MySQL | mysqld_db_t |
| SSH | ssh_home_t |
| 日志 | var_log_t |
你可以直接贴出:
ls -Z 或 audit.log 内容我可以 直接帮你定位是哪一条 Context 错了,并给出最小修复命令。