在 CentOS(以及 RHEL 系列)里提到的 context 异常,绝大多数情况是指 SELinux 安全上下文(security context)异常。下面从「是什么、为何异常、常见表现、排查与修复」几个角度说明。
在启用了 SELinux 的 CentOS 中,每一个:
都有一个 SELinux context(安全上下文),格式通常类似:
system_u:object_r:httpd_sys_content_t:s0
含义简析:
user:SELinux 用户role:角色type:类型(最关键,决定访问权限)level:MLS/MCS 安全级别最常见原因:
cp 文件
mv 文件
tar 解压
rsync 不加参数
这些行为不会自动继承正确 context。
例如:
/var/www/html 但 context 还是 user_home_thttpd 无法读取 → 报 403例如:
/var/lib/mysql 改到 /data/mysql/data/mysql 没有对应 contextdisabled 切回 enforcingchcon 是临时修改:
例如:
denied { read } for ... scontext=... tcontext=...
ls -Z 看到 context 不对ps -Z 进程 context 异常ls -Z /var/www/html
ps -eZ | grep httpd
ausearch -m AVC -ts recent
# 或
journalctl | grep AVC
getenforce
restorecon -Rv /var/www/html
semanage fcontext -a -t httpd_sys_content_t "/data/web(/.*)?"
restorecon -Rv /data/web
chcon -t httpd_sys_content_t /var/www/html/index.html
semanage port -a -t ssh_port_t -p tcp 2222
CentOS 中 context 异常,本质几乎都是 SELinux 类型(type)不匹配,通常因文件移动、目录变更或未重新打标签引起。
如果你有具体报错或场景(比如某个服务、某个目录、某条 AVC 日志),可以直接贴出来,我可以帮你精准定位。