讲师中心 微信公众号
AI工具推荐 视频效率加速

Linux SELinux 高级策略调优

酷敏君_5156

酷敏君_5156

发布时间:2026-02-22 14:01:02

|

712人浏览过

|

来源于php中文网

原创

SELinux策略修改后不生效是因为需先编译(checkmodule)再打包(semodule_package)并加载(semodule -i),且必须指定模块名(-n)、正确设置文件上下文并执行restorecon,否则规则无法触发。

linux selinux 高级策略调优

SELinux 策略为什么改了还不生效?

因为策略编译和加载是两步,且内核只认 policy.kern 这个二进制格式——直接改 te 文件或 if 文件不会触发任何变化。

  • 必须用 checkmodule -M -m -o policy.mod policy.te 编译模块源码
  • 再用 semodule_package -o policy.pp policy.mod 打包成可加载包
  • 最后用 semodule -i policy.pp 加载(注意:不是 load_policy,那是重启时用的)
  • 常见错误:semodule -i 报 Permission denied?检查当前 shell 是否在 sysadm_r 或 unconfined_r 下,普通用户即使 sudo 也受限于角色域

如何让自定义策略不被 semodule -r 清掉?

默认 semodule 安装的是“命名模块”,卸载时按名匹配;但如果你用 -i 装了未命名包(比如没指定 -n myapp),它会被归为“无名模块”,semodule -l 看不见,semodule -r 也删不掉,只能靠 semodule -b /etc/selinux/targeted/modules/active/base.pp 强制回滚整个基础策略——非常危险。

Obsidian (Linux)
Obsidian (Linux)

操作 Obsidian 库(纯 Markdown 笔记),并通过 notesmd-cli 实现自动化。

下载
  • 安装时务必加 -n myapp:例如 semodule -i -n myapp policy.pp
  • 升级策略时用 -u 替换而非 -i,否则同名模块会叠加而非覆盖
  • semodule -l | grep myapp 能查到才算真正注册成功
  • 模块名不能含下划线或点号,只支持小写字母、数字、短横线

audit2why 显示 allowed 但实际被拒绝?

说明 AVC 拒绝日志里混着多个原因,audit2why 只挑了一个路径解释,而真实拦截点可能在另一条策略链上,比如 file_contexts 不匹配导致类型标注失败,后续所有规则都失效。

  • 先跑 ausearch -m avc -ts recent | audit2why 看完整拒绝链
  • 重点检查 ls -Z 输出的目标文件上下文是否真为你期望的 type(比如你写了 allow httpd_t myapp_log_t:file { read write };,但日志文件其实是 var_log_t)
  • 用 semanage fcontext -a -t myapp_log_t "/var/log/myapp(/.*)?" 注册上下文,再执行 restorecon -Rv /var/log/myapp
  • 别跳过 restorecon:SELinux 不自动重标已存在文件,只对新建文件生效

为什么 setsebool -P 不持久?

因为 -P 只把布尔值写进 /etc/selinux/targeted/modules/active/booleans.local,但某些发行版(如 RHEL 8+)默认启用 selinux-policy-devel 包,它会在每次策略更新时清空这个文件并重建 booleans 数据库。

  • 确认布尔值是否真写入:semanage boolean -l | grep your_bool,看 default 和 current 列是否一致
  • 若不一致,手动运行 semanage boolean -m --on your_bool(这会走数据库接口,比 setsebool 更底层)
  • 检查 /etc/selinux/config 中 SELINUXTYPE 是否与当前加载策略名完全一致(大小写敏感),否则 semanage 会静默失败
  • 容器环境里 setsebool 基本无效——宿主机策略不传递到容器进程域,得用 podman run --security-opt label=type:your_type
SELinux 策略调优最麻烦的从来不是写规则,而是搞清当前生效的是哪一版策略、哪个上下文、哪条布尔值——三个地方各改一半,问题反而更难复现。

热门AI工具

更多
豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

相关专题

更多
java中boolean的用法
java中boolean的用法

在Java中,boolean是一种基本数据类型,它只有两个可能的值:true和false。boolean类型经常用于条件测试,比如进行比较或者检查某个条件是否满足。想了解更多java中boolean的相关内容,可以阅读本专题下面的文章。

2130

2023.11.13

java boolean类型
java boolean类型

本专题整合了java中boolean类型相关教程,阅读专题下面的文章了解更多详细内容。

163

2025.11.30

硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

3168

2023.10.19

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

5009

2025.10.17

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3809

2025.12.29

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

466

2026.01.19

default gateway怎么配置
default gateway怎么配置

配置default gateway的步骤:1、了解网络环境;2、获取路由器IP地址;3、登录路由器管理界面;4、找到并配置WAN口设置;5、配置默认网关;6、保存设置并退出;7、检查网络连接是否正常。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

357

2023.12.07

数据库三范式
数据库三范式

数据库三范式是一种设计规范,用于规范化关系型数据库中的数据结构,它通过消除冗余数据、提高数据库性能和数据一致性,提供了一种有效的数据库设计方法。本专题提供数据库三范式相关的文章、下载和课程。

2825

2023.06.29

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

40

2026.10.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn