温馨提示×

CentOS Context怎么验证生效

小樊
42
2026-07-20 19:09:20
栏目: 智能运维

你提到的 “CentOS Context” 一般是指 SELinux 上下文(Security Context),常见于文件、进程、端口等对象。下面按最常见场景给你一套验证方法。


一、确认 SELinux 是否开启

getenforce
  • Enforcing:生效
  • Permissive:仅记录不拦截
  • Disabled:未启用(Context 不生效)

查看详细状态:

sestatus

二、验证文件 Context 是否生效

1️⃣ 查看文件上下文

ls -Z /path/to/file

ls -Zd /path/to/dir

示例:

ls -Z /var/www/html/index.html
# system_u:object_r:httpd_sys_content_t:s0

✅ 看到 system_u:object_r:xxx_t 说明 Context 存在


2️⃣ 对比期望 Context

matchpathcon /var/www/html/index.html

如果和 ls -Z 不一致,说明 context 可能不正确。


3️⃣ 修复文件 Context

restorecon -v /var/www/html/index.html

递归修复目录:

restorecon -Rv /var/www/html

三、验证进程 Context 是否生效

1️⃣ 查看进程 Context

ps -eZ | grep httpd

示例:

system_u:system_r:httpd_t:s0 1234 /usr/sbin/httpd

✅ 进程运行在 httpd_t 才说明 SELinux 策略生效


四、验证端口 Context(常用于服务无法启动)

1️⃣ 查看端口 Context

semanage port -l | grep http

示例:

http_port_t tcp 80, 443, 8080

2️⃣ 添加自定义端口

semanage port -a -t http_port_t -p tcp 8888

验证:

semanage port -l | grep 8888

五、验证策略是否真正生效(关键)

1️⃣ 临时切换到 Permissive 测试

setenforce 0

如果服务立刻正常 → SELinux Context / 策略问题


2️⃣ 查看 SELinux 拒绝日志

ausearch -m AVC -ts recent

或:

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

常见关键字:

  • denied
  • scontext=
  • tcontext=

六、快速自检清单 ✅

检查项 命令
SELinux 状态 getenforce
文件 context ls -Z
修复 context restorecon
进程 context ps -eZ
端口 context semanage port -l
拒绝原因 ausearch -m AVC

七、常见误区

❌ 只改文件权限(chmod
❌ 只改属主(chown
SELinux 需要 context 正确


如果你能具体说一下是 文件 / 服务 / 端口 / Docker / K8s / 自定义策略 哪种 Context,我可以给你更精确的验证步骤

0