温馨提示×

centos context怎么配置

小樊
43
2026-09-30 07:13:23
栏目: 智能运维

你提到的 “CentOS context”,通常是指 SELinux 的 security context(安全上下文) 配置。下面我按常见使用场景给你讲清楚怎么配置。


一、什么是 SELinux Context

在 CentOS(带 SELinux)中,每个文件 / 进程 / 端口都有一个安全上下文,格式通常是:

user:role:type:level

例如:

system_u:object_r:httpd_sys_content_t:s0

二、查看 Context

1. 查看文件 context

ls -Z /var/www/html/index.html

2. 查看进程 context

ps -Z

3. 查看端口 context

semanage port -l

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

chcon -t httpd_sys_content_t /data/web/index.html

示例:让 Nginx 访问目录

chcon -R -t httpd_sys_content_t /data/web

⚠️ chcon 修改的是当前状态,文件系统 relabel 后会失效。


四、永久修改 Context(推荐)

1. 添加默认 context 规则

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

2. 立即应用

restorecon -Rv /data/web

✅ 这样重启或 relabel 都不会丢


五、目录 vs 文件 Context 示例

Web 目录(Apache/Nginx)

semanage fcontext -a -t httpd_sys_content_t "/webroot(/.*)?"
restorecon -Rv /webroot

日志目录

semanage fcontext -a -t var_log_t "/mylog(/.*)?"
restorecon -Rv /mylog

六、端口 Context 配置(服务监听非标准端口)

例如让 Apache 监听 8081:

semanage port -a -t http_port_t -p tcp 8081

查看:

semanage port -l | grep http

七、常见排错命令

查看拒绝日志

ausearch -m avc -ts recent

生成修复建议

audit2why < /var/log/audit/audit.log

自动生成策略(谨慎)

audit2allow -a

八、关闭 / 开启 SELinux(不推荐)

getenforce
setenforce 0   # 临时

永久修改:

vi /etc/selinux/config
SELINUX=enforcing

九、常见场景速查

场景 Context 类型
Web 目录 httpd_sys_content_t
可写 Web 目录 httpd_sys_rw_content_t
FTP 目录 public_content_t
MySQL 数据 mysqld_db_t
Nginx httpd_t

如果你指的是 其他 context(如 systemd、PAM、Docker、Kubernetes),告诉我具体场景,我可以给你更针对性的配置示例。

0 踩