在 CentOS(尤其是启用 SELinux 时)中,Context 策略通常指 SELinux 安全上下文(Security Context)。调整 Context 策略,主要包括:查看、修改、恢复、持久化 文件/进程的 SELinux Context。
下面按常见场景系统说明。
SELinux Context 通常由四部分组成:
user:role:type:level
例如:
system_u:object_r:httpd_sys_content_t:s0
最常见的是 type(类型),决定访问策略。
ls -Z /var/www/html
ps -eZ | grep httpd
ls -dZ /var/www
⚠️ 重启或 restorecon 后可能失效
chcon -R -t httpd_sys_content_t /data/web
参数说明:
-R:递归-t:指定类型-u / -r:用户、角色(一般不用改)✅ 推荐方式
semanage fcontext -l | grep httpd
semanage fcontext -a -t httpd_sys_content_t "/data/web(/.*)?"
restorecon -Rv /data/web
✅ 这样即使系统重启也不会丢失。
restorecon -Rv /path
或者:
touch /.autorelabel
reboot
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 表示永久生效。
getenforce
setenforce 0
vi /etc/selinux/config
SELINUX=disabled
⚠️ 生产环境不建议关闭
tail -f /var/log/audit/audit.log
或用:
ausearch -m avc -ts recent
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 策略流程
semanage fcontext 定义规则restorecon 应用如果你有 具体场景(如:
可以告诉我,我可以给你精确命令和策略示例。