在 CentOS 中,“Context”通常指 SELinux 安全上下文(Security Context)。设置 SELinux Context 是提升系统安全的重要手段。下面从概念 → 查看 → 设置 → 持久化 → 常见场景系统说明。
SELinux 通过 安全上下文 控制进程对文件、端口、目录的访问。
一个完整 Context 示例:
system_u:object_r:httpd_sys_content_t:s0
含义:
system_u:用户身份object_r:角色httpd_sys_content_t:类型(最重要)s0:安全级别(MLS/MCS)ls -Z
或
ls -Z /var/www/html
ps -eZ
semanage port -l
chcon(临时)chcon -t httpd_sys_content_t /data/www/index.html
恢复默认:
restorecon -v /data/www/index.html
⚠️ chcon 不推荐用于生产环境
semanage + restorecon/data/www 目录被 Apache 访问semanage fcontext -a -t httpd_sys_content_t "/data/www(/.*)?"
restorecon -Rv /data/www
semanage fcontext -l | grep /data/www
semanage fcontext -d "/data/www(/.*)?"
restorecon -Rv /data/www
semanage fcontext -a -t httpd_sys_rw_content_t "/uploads(/.*)?"
restorecon -Rv /uploads
semanage port -a -t http_port_t -p tcp 8080
查看:
semanage port -l | grep http_port_t
很多服务安全策略通过布尔值控制:
getsebool -a
setsebool -P httpd_can_network_connect on
-P 表示永久生效
❌ 不推荐:
setenforce 0
✅ 正确做法:
setenforce 1
unconfined_tausearch -m avc -ts recent
或
sealert -a /var/log/audit/audit.log
| 服务 | Context 类型 |
|---|---|
| Apache 静态目录 | httpd_sys_content_t |
| Apache 可写目录 | httpd_sys_rw_content_t |
| Nginx | httpd_sys_content_t |
| MySQL 数据目录 | mysqld_db_t |
| SSH | sshd_key_t |
# 查看
ls -Z
# 永久设置
semanage fcontext -a -t httpd_sys_content_t "/data(/.*)?"
restorecon -Rv /data
# 端口
semanage port -a -t http_port_t -p tcp 8080
# 排查
ausearch -m avc
如果你有具体场景(如:
✅ Nginx + PHP
✅ Docker + SELinux
✅ CentOS 7 / 8 / Stream
✅ 某个目录访问被拒绝)
可以告诉我,我可以给你精准的 Context 配置方案。