在 CentOS(以及 RHEL 系列 Linux) 中,context 类型 通常指的是 SELinux 安全上下文(SELinux security context)中的“类型”(type)。
下面分点说明,避免混淆:
在启用了 SELinux 的 CentOS 系统中,每一个:
都会被赋予一个 安全上下文(security context),格式通常是:
user:role:type:level
例如:
system_u:object_r:httpd_sys_content_t:s0
其中:
user:SELinux 用户(如 system_u)role:角色(如 object_r)type:类型(最关键,用于访问控制)level:MLS/MCS 安全级别(可选)type(类型) 是 SELinux TE(Type Enforcement)机制的核心:
某个类型的进程,能否访问某个类型的文件
例如:
httpd_t:Apache 进程类型httpd_sys_content_t:Web 内容文件类型httpd_t 读取 httpd_sys_content_t如果文件类型不对(例如是 default_t),即使权限是 777,也会被拒绝。
| 对象 | 常见类型 | 说明 |
|---|---|---|
| Apache 网页 | httpd_sys_content_t |
网站根目录 |
| MySQL 数据 | mysqld_db_t |
数据库文件 |
| SSH 配置 | etc_t |
系统配置文件 |
| 普通用户文件 | user_home_t |
家目录文件 |
| 可执行程序 | bin_t |
系统命令 |
ls -Z /var/www/html
ps -Z
chcon -t httpd_sys_content_t /data/web
semanage fcontext -a -t httpd_sys_content_t "/data/web(/.*)?"
restorecon -Rv /data/web
CentOS 中的 context 类型,就是 SELinux 用来判断“进程能不能访问文件/端口”的“类型标签”。
如果你指的是 systemd 的 context、PAM context 或 容器 context,可以告诉我具体场景,我可以针对性解释。