在 CentOS(以及 RHEL 系列)中,“Context 切换”通常指的是 SELinux 上下文(Security Context) 的切换或管理。下面分几种常见场景说明。
SELinux 会给系统中的 进程、文件、端口 打上安全标签,格式通常是:
user:role:type:level
例如:
system_u:object_r:httpd_sys_content_t:s0
ls -Z
示例:
ls -Z /var/www/html
ps -eZ
semanage port -l
chcon(重启或 restorecon 后会失效)chcon -t httpd_sys_content_t /var/www/html/index.html
恢复默认:
restorecon -v /var/www/html/index.html
semanagesemanage fcontext -a -t httpd_sys_content_t "/var/www/html(/.*)?"
应用修改:
restorecon -Rv /var/www/html
查看已定义的规则:
semanage fcontext -l | grep www
⚠️ 这不是 Context 切换,而是 SELinux 工作模式
getenforce
setenforce 0 # Permissive
setenforce 1 # Enforcing
编辑:
vi /etc/selinux/config
修改:
SELINUX=enforcing
一般通过 SELinux Policy 或 sudo + 域转换 实现,不是普通用户常操作的内容。
示例(需要策略支持):
runcon system_u:system_r:httpd_t:s0 /usr/sbin/httpd
⚠️ 大多数情况下不建议手动 runcon,容易破坏安全策略。
chcon -Rt httpd_sys_content_t /data/web
# 或
semanage fcontext -a -t httpd_sys_content_t "/data/web(/.*)?"
restorecon -Rv /data/web
| 需求 | 命令 |
|---|---|
| 查看文件 Context | ls -Z |
| 临时修改 | chcon |
| 永久修改 | semanage fcontext + restorecon |
| 切换 SELinux 模式 | setenforce |
| 查看进程 Context | ps -eZ |
如果你指的是 不是 SELinux,而是用户角色 / sudo / 多环境(如 CentOS Stream vs CentOS Linux),可以告诉我具体场景,我可以更精准说明。