温馨提示×

CentOS Context策略如何调整

小樊
36
2026-07-20 18:58:10
栏目: 智能运维

CentOS(尤其是启用 SELinux 时)中,Context 策略通常指 SELinux 安全上下文(Security Context)。调整 Context 策略,主要包括:查看、修改、恢复、持久化 文件/进程的 SELinux Context。

下面按常见场景系统说明。


一、SELinux Context 是什么?

SELinux Context 通常由四部分组成:

user:role:type:level

例如:

system_u:object_r:httpd_sys_content_t:s0

最常见的是 type(类型),决定访问策略。


二、查看当前 Context

1️⃣ 查看文件 Context

ls -Z /var/www/html

2️⃣ 查看进程 Context

ps -eZ | grep httpd

3️⃣ 查看目录 Context

ls -dZ /var/www

三、临时修改 Context(chcon)

⚠️ 重启或 restorecon 后可能失效

示例:允许 Apache 访问自定义目录

chcon -R -t httpd_sys_content_t /data/web

参数说明:

  • -R:递归
  • -t:指定类型
  • -u / -r:用户、角色(一般不用改)

四、永久修改 Context(semanage + restorecon)

推荐方式

1️⃣ 查看默认 Context 规则

semanage fcontext -l | grep httpd

2️⃣ 添加自定义 Context 规则

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

3️⃣ 应用规则

restorecon -Rv /data/web

✅ 这样即使系统重启也不会丢失。


五、恢复默认 Context

restorecon -Rv /path

或者:

touch /.autorelabel
reboot

六、端口 Context(服务端口策略)

查看端口 Context

semanage port -l | grep http

添加端口

semanage port -a -t http_port_t -p tcp 8080

七、布尔值策略(常见服务开关)

有些 Context 策略通过布尔值控制:

查看布尔值

getsebool -a | grep httpd

启用

setsebool -P httpd_can_network_connect on

-P 表示永久生效。


八、禁用 / 启用 SELinux(不推荐)

查看状态

getenforce

临时关闭

setenforce 0

永久关闭

vi /etc/selinux/config
SELINUX=disabled

⚠️ 生产环境不建议关闭


九、常见错误及排查

1️⃣ 访问被拒绝

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

或用:

ausearch -m avc -ts recent

2️⃣ 生成建议策略

yum install policycoreutils-python
audit2why < /var/log/audit/audit.log

十、典型场景速查

场景 操作
Apache 访问目录 httpd_sys_content_t
FTP 访问 public_content_t
NFS 共享 nfs_t
MySQL 数据目录 mysqld_db_t
服务监听非标准端口 semanage port

十一、总结(推荐做法)

正确调整 Context 策略流程

  1. semanage fcontext 定义规则
  2. restorecon 应用
  3. 必要时调整布尔值
  4. 不要直接关闭 SELinux

如果你有 具体场景(如:

  • Nginx + SELinux
  • Docker + CentOS
  • Samba / NFS
  • 自定义服务被拒绝访问

可以告诉我,我可以给你精确命令和策略示例

0