查看 SELinux 运行状态
-
使用
sestatus
命令sestatus
- 关键输出:
SELinux status
:enabled
(已启用)或disabled
(已禁用)Current mode
:enforcing
(强制模式)、permissive
(宽容模式)或disabled
Policy version
: 当前策略版本(如31
)Policy from config file
: 加载的策略名称(如targeted
)
- 关键输出:
-
检查内核参数
grep -E "SELINUX=|SELINUXTYPE=" /etc/selinux/config
- 结果说明:
SELINUX=enforcing
:系统重启后将启用强制模式SELINUXTYPE=targeted
:默认策略类型(针对网络服务限制)
- 结果说明:
查看当前模式(无需重启)
getenforce
- 返回结果:
Enforcing
:强制模式(拒绝违规操作并记录日志)Permissive
:宽容模式(仅记录日志,不阻止操作)Disabled
:已禁用
查看策略详情
-
列出所有布尔值(动态开关)
getsebool -a
- 示例输出:
httpd_can_network_connect --> off
(表示 Apache 禁止联网) - 修改布尔值:
setsebool -P httpd_can_network_connect on # -P 永久生效
- 示例输出:
-
检查文件/目录的上下文标签
ls -Z /var/www/html
- 输出示例:
-rw-r--r--. root root system_u:object_r:httpd_sys_content_t index.html
- 关键字段:
httpd_sys_content_t
(Web 内容默认标签)
- 关键字段:
- 输出示例:
-
查看进程的上下文
ps -eZ | grep nginx
- 输出示例:
system_u:system_r:httpd_t:s0 1234 ? nginx
httpd_t
:Web 服务进程的默认标签
- 输出示例:
诊断 SELinux 拒绝事件
-
查看审计日志
ausearch -m AVC,USER_AVC -ts today # 查询今日的拒绝记录
- 关键字段:
scontext=system_u:system_r:httpd_t
(源上下文)
tcontext=system_u:object_r:samba_share_t
(目标上下文)
tclass=file
(操作对象类型)
- 关键字段:
-
使用
sealert
生成分析报告sealert -a /var/log/audit/audit.log
- 该工具会提供解决方案建议(需安装
setroubleshoot
包)
- 该工具会提供解决方案建议(需安装
常见问题排查
- 服务无法启动:
检查日志中的AVC denied
记录,确认是否因标签错误导致。 - 文件访问被拒:
使用restorecon
修复标签:restorecon -Rv /path/to/file # -R 递归修复,-v 显示详情
- 临时切换模式(调试用):
setenforce 0 # 切换为 Permissive 模式 setenforce 1 # 切回 Enforcing 模式
重要提示:
- 修改配置后需重启生效:
reboot
- 生产环境避免禁用 SELinux,优先调整策略或布尔值
- 策略包更新命令:
yum update selinux-policy*
引用说明:
本文操作基于 CentOS/RHEL 8 及 SELinux 官方文档,参考来源:
- Red Hat SELinux 用户手册(https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-single/using_selinux/index)
- NSA SELinux 项目(https://github.com/SELinuxProject)
- Linux 手册页(
man semanage
,man auditd
)
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/9213.html