温馨提示×

centos context怎么排查

小樊
44
2026-09-15 06:50:01
栏目: 智能运维

在 CentOS(以及一般 Linux)上排查 SELinux context(安全上下文) 问题,通常可以按下面思路来。


一、先确认是不是 SELinux 引起的

1. 查看 SELinux 状态

getenforce
sestatus
  • Enforcing:SELinux 正在强制生效(最常见问题来源)
  • Permissive:只记录不拦截
  • Disabled:不是 SELinux 问题

二、查看文件 / 进程的 context

1. 查看文件上下文

ls -Z /path/to/file

ls -Zd /var/www/html

示例:

-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 index.html

2. 查看进程上下文

ps -eZ | grep httpd

示例:

system_u:system_r:httpd_t:s0 1234 ? 00:00:01 httpd

3. 查看目录上下文

ls -Zd /var/www

三、看 SELinux 拒绝日志(最关键)

1. 使用 audit 日志

ausearch -m AVC -ts recent

或实时看:

tail -f /var/log/audit/audit.log

常见关键字:

  • AVC denied
  • comm="httpd"
  • name="uploads"
  • scontext=... tcontext=...

2. 如果没开 audit

/var/log/messages
/var/log/secure

(CentOS 6/7 可能在这)


四、用 sealert 分析(推荐)

1. 安装工具

yum install -y setroubleshoot-server

2. 分析最近拒绝

sealert -a /var/log/audit/audit.log

它会直接告诉你:

  • 哪个进程
  • 访问了什么
  • 缺什么 context
  • 该执行哪条命令修复

五、修复 context 问题(常见操作)

1. 恢复默认 context

restorecon -Rv /var/www/html

2. 修改文件 context

semanage fcontext -a -t httpd_sys_content_t "/data/www(/.*)?"
restorecon -Rv /data/www

3. 给目录可写权限(Web 上传等)

semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/uploads(/.*)?"
restorecon -Rv /var/www/html/uploads

六、临时验证(不推荐长期)

1. 临时关闭 SELinux

setenforce 0

2. 给某个布尔值

getsebool -a | grep httpd
setsebool -P httpd_can_network_connect on

七、典型排查流程总结

  1. getenforce 确认状态
  2. ls -Z / ps -Z 看 context
  3. ausearch -m AVC 看拒绝
  4. sealert 分析
  5. restoreconsemanage fcontext 修复
  6. 必要时调整 boolean

如果你有 具体报错、服务名、文件路径,可以直接贴出来,我可以帮你精准定位是哪一条 SELinux 规则。

0