温馨提示×

CentOS Context 如何加载

小樊
37
2026-08-04 07:58:56
栏目: 智能运维

CentOS 里,“Context” 通常指 SELinux 安全上下文(Security Context)。下面按常见场景说明如何查看、设置、加载 SELinux Context。


一、查看 SELinux Context

1. 查看文件/目录的 Context

ls -Z /path/to/file
ls -Zd /path/to/dir

示例:

ls -Z /var/www/html

2. 查看进程的 Context

ps -eZ

3. 查看当前 SELinux 状态

getenforce
sestatus

二、临时修改 SELinux Context(重启后失效)

1. 使用 chcon

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

常用参数:

  • -t:类型(最重要)
  • -u:用户(如 system_u
  • -r:角色(如 object_r

示例:

chcon -R -t httpd_sys_content_t /var/www/html

⚠️ chcon 只是临时修改,系统 relabel 或 restorecon 后会恢复。


三、永久加载 / 设置 SELinux Context(推荐)

1. 使用 semanage 定义默认 Context

semanage fcontext -a -t httpd_sys_content_t "/data/web(/.*)?"

说明:

  • -a:添加
  • -t:类型
  • "/data/web(/.*)?":匹配目录及子内容

2. 应用 Context(加载)

restorecon -Rv /data/web

✅ 这样才是 真正“加载”并永久生效


四、验证是否加载成功

ls -Z /data/web

五、常见 SELinux Context 类型

场景 Context 类型
Web 目录 httpd_sys_content_t
Web 可写目录 httpd_sys_rw_content_t
MySQL 数据 mysqld_db_t
SSH 密钥 ssh_home_t
自定义服务 根据 policy 定义

六、如果 SELinux 被禁用

getenforce
  • Disabled:SELinux 不生效,Context 无意义
  • Permissive:仅记录,不拦截
  • Enforcing:强制生效

启用 SELinux(需重启):

vi /etc/selinux/config
SELINUX=enforcing
reboot

七、典型排错流程

# 查看拒绝日志
ausearch -m avc -ts recent

# 或
tail -f /var/log/audit/audit.log

如果你指的是 不是 SELinux Context,而是:

  • systemd service 的 Context
  • 用户 session context
  • 内核 cgroup / namespace context
  • 某个软件(如 Docker、Podman)的 context

可以告诉我具体场景,我可以给你更精确的命令。

0