在 CentOS / Linux 里提到 context,通常出现在 SELinux 场景中。你说的“CentOS context 有何区别”,一般是指在 SELinux 安全上下文(security context) 中,不同对象或不同维度的 context 区别。下面按常见情况说清楚。
SELinux 给每一个进程、文件、端口、用户都打上一个“安全标签”,叫 security context,格式通常是:
user:role:type:level
例如:
system_u:object_r:httpd_sys_content_t:s0
作用于:文件、目录
示例:
/var/www/html/index.html → system_u:object_r:httpd_sys_content_t:s0
特点:
semanage fcontext 定义restorecon 修复常见类型:
httpd_sys_content_t:Apache 可读user_home_t:用户家目录etc_t:配置文件作用于:正在运行的程序
示例:
ps -Z
system_u:system_r:httpd_t:s0
特点:
比如:
httpd_t 进程httpd_sys_content_t作用于:登录用户
示例:
user_u:user_r:user_t:s0
常见:
system_u:系统进程unconfined_u:不受限用户user_u:普通 SELinux 用户作用于:网络端口
示例:
semanage port -l | grep http
http_port_t tcp 80, 443
作用:
httpd_t 只能用 http_port_t在 SELinux 中:
真正决定权限的是 type
例如:
httpd_thttpd_sys_content_tSELinux 规则基本是:
allow httpd_t httpd_sys_content_t:file read;
| CentOS 版本 | SELinux 默认 |
|---|---|
| CentOS 6 | 默认开启 |
| CentOS 7 | 默认开启 |
| CentOS 8 | 默认开启 |
| CentOS Stream | 默认开启 |
命令基本一样,只是工具版本不同。
# 查看文件 context
ls -Z
# 查看进程 context
ps -Z
# 查看端口 context
semanage port -l
# 修复文件 context
restorecon -Rv /var/www
如果你指的是 “CentOS context 和其他系统(如 Ubuntu / RHEL)context 的区别”,或 “docker context / kubectl context”,也可以告诉我,我可以针对性对比。