温馨提示×

CentOS Context 如何切换

小樊
36
2026-08-04 07:59:51
栏目: 智能运维

在 CentOS(以及 RHEL 系列)中,“Context 切换”通常指的是 SELinux 上下文(Security Context) 的切换或管理。下面分几种常见场景说明。


一、SELinux Context 是什么?

SELinux 会给系统中的 进程、文件、端口 打上安全标签,格式通常是:

user:role:type:level

例如:

system_u:object_r:httpd_sys_content_t:s0

二、查看 SELinux Context

1️⃣ 查看文件 Context

ls -Z

示例:

ls -Z /var/www/html

2️⃣ 查看进程 Context

ps -eZ

3️⃣ 查看端口 Context

semanage port -l

三、临时切换(修改)文件 Context

使用 chcon(重启或 restorecon 后会失效)

chcon -t httpd_sys_content_t /var/www/html/index.html

恢复默认:

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

四、永久修改文件 Context(推荐)

使用 semanage

semanage fcontext -a -t httpd_sys_content_t "/var/www/html(/.*)?"

应用修改:

restorecon -Rv /var/www/html

查看已定义的规则:

semanage fcontext -l | grep www

五、切换 SELinux 运行模式(Enforcing / Permissive / Disabled)

⚠️ 这不是 Context 切换,而是 SELinux 工作模式

查看当前模式

getenforce

临时切换

setenforce 0   # Permissive
setenforce 1   # Enforcing

永久修改(重启生效)

编辑:

vi /etc/selinux/config

修改:

SELINUX=enforcing

六、进程 Context 切换(角色 / 域转换)

一般通过 SELinux Policysudo + 域转换 实现,不是普通用户常操作的内容。

示例(需要策略支持):

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

⚠️ 大多数情况下不建议手动 runcon,容易破坏安全策略。


七、常见问题示例

Apache 无法访问文件

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),可以告诉我具体场景,我可以更精准说明。

0