核心机制与工作原理 SELinux 在 Linux 内核 中提供 强制访问控制(MAC),与传统的 自主访问控制(DAC,rwx 属主/属组/其他) 并行工作。它通过给主体(进程)和客体(文件、目录、套接字、端口等)打上 安全上下文(user:role:type 或 user:role:domain) 的标签,并依据策略中的 allow 规则(主体域、客体类型、对象类、许可集) 决定是否放行。访问判定顺序通常是:先检查 DAC,再检查 SELinux MAC;因此即便你是 root,若 MAC 不允许,访问仍会被拒绝。未被策略允许的访问会记录到 AVC 日志(/var/log/audit/audit.log),便于审计与排障。
关键概念与策略类型
管理流程与常用命令
getenforce、sestatussetenforce 1|0(分别对应 Enforcing/Permissive)SELINUX=enforcing|permissive|disabled 与 SELINUXTYPE=targeted|mls|...,修改后需重启生效。ls -Z(文件/目录)、ps -Z(进程)、id -Z(用户)chcon -t 类型 文件semanage fcontext -a -t 类型 '路径(/.*)?' 后执行 restorecon -Rv 路径tail /var/log/audit/audit.log | grep AVCaudit2why、audit2allow、setroubleshootsesearch --allow -s 主体域 -t 客体类型典型场景与操作示例
semanage fcontext -a -t httpd_sys_content_t '/var/www/html(/.*)?'restorecon -Rv /var/www/htmlgetenforce 为 Enforcing 且 ls -Z 显示目标类型为 httpd_sys_content_t。cp 会继承目标目录的默认上下文;mv 保留原上下文,可能导致服务访问失败,需用 restorecon 修复。setenforce 0,若操作恢复则基本可判定为 SELinux 策略限制;随后用 audit2why/audit2allow 生成或调整策略,再恢复 Enforcing。