0

0

Linux SELinux 的 semodule -i / -r 与自定义模块打包规范

冰川箭仙

冰川箭仙

发布时间:2026-02-21 17:27:12

|

983人浏览过

|

来源于php中文网

原创

selinux模块安装失败主因是未编译源码:须用checkmodule编译.te为.mod,再用semodule_package打包为.pp;卸载后需手动清理布尔值、端口、文件上下文等残留配置。

linux selinux 的 semodule -i / -r 与自定义模块打包规范

semodule -i 安装模块时为什么提示 “Invalid module”

常见错误是模块文件没编译,直接拿 .te 源文件去安装。SELinux 模块必须是二进制格式(.pp),semodule -i 不接受源码。

  • 正确流程:用 checkmodule 编译 .te → 用 semodule_package 打包成 .pp → 再用 semodule -i
  • checkmodule -M -m -o policy.mod mypolicy.te 生成中间模块对象,-M 启用 MLS(若策略启用 MLS,漏掉会编译失败)
  • 打包时路径不能含空格或特殊字符,semodule_package -o mypolicy.pp -m policy.mod,注意 -m 后必须是 checkmodule 输出的 .mod 文件,不是 .te
  • 如果系统启用了 MLS 但模块未声明 require { type my_t; }; 或缺少 mlsconstrain 相关语句,checkmodule 可能静默失败,建议加 -v 查看详细报错

semodule -r 卸载后策略没生效或残留规则

semodule -r 只移除模块本身,不回滚该模块曾插入的布尔值、端口类型、文件上下文等配置——这些是独立于模块生命周期的运行时状态。

  • 卸载前先查模块是否带布尔开关:semanage boolean -l | grep mymodule,若有,需手动重置:setsebool mymodule_enable off
  • 检查是否注册了端口:semanage port -l | grep myport,卸载模块后端口映射仍存在,得用 semanage port -d -p tcp 8080 显式删除
  • 文件上下文规则(semanage fcontext)同样不会随模块卸载自动清理,遗漏会导致后续 restorecon 误标文件
  • 执行 semodule -r 后,务必运行 restorecon -Rv /path 或重启相关服务,否则旧上下文可能继续生效

自定义模块打包时 require 块里该写什么

require 块不是“导入依赖”,而是向编译器声明当前模块将引用哪些已有类型、属性、角色——漏写会导致 checkmoduleundefined type/attribute 错误;多写无害但可能掩盖权限设计问题。

MakeLogo AI
MakeLogo AI

AI驱动的Logo生成器

下载
  • 必须声明所有在 allowtype_transition 等规则中出现的自定义类型(如 myapp_t)和基础类型(如 bin_tetc_t
  • 若规则中用了 sysadm_r 角色,就得在 require 里写 role sysadm_r types myapp_t;;只写 type myapp_t; 不够
  • 不要把标准策略里的宏(如 corenet_tcp_connect_http_port)塞进 require——那是接口,不是类型,应通过 interface 调用
  • seinfo -tsesearch -A -s unconfined_t 辅助确认目标类型是否存在、是否拼写一致(SELinux 类型名区分大小写)

模块加载后 AVC 拒绝仍在发生,但 semodule -l 显示已启用

模块加载成功 ≠ 策略立即覆盖所有进程,尤其当进程已在运行且其域未重启时,旧域仍按旧策略执行。

  • 检查模块是否真被激活:semodule -l | grep mymodule 输出应含版本号,如 mymodule 1.0;若只有名字没版本,说明加载失败但没报错(常见于 SELinux 处于 permissive 模式下静默跳过)
  • 确认当前进程是否运行在新域:用 ps -eZ | grep myapp,看输出中上下文第三段是否为 mymodule_t;不是的话,需要 kill 进程再由 init 重启,或手动 runcon -t mymodule_t -- myapp 测试
  • AVC 日志里 comm="myapp"scontext=unconfined_u:unconfined_r:unconfined_t:s0 表明进程根本没进入你的域,模块规则压根没触发
  • ausearch -m avc -ts recent | audit2why 是比 audit2allow 更准的诊断方式——它告诉你“为什么这条拒绝合理”,而不是直接建议加规则

最常被忽略的一点:模块编译时用了 -M 参数,但目标系统 SELinux 策略实际是 non-MLS 模式(sestatus -vPolicy MLS Status),此时模块无法加载,且错误提示极不明确。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

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

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

364

2023.11.13

java boolean类型
java boolean类型

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

39

2025.11.30

require的用法
require的用法

require的用法有引入模块、导入类或方法、执行特定任务。想了解更多require的相关内容,可以阅读本专题下面的文章。

482

2023.11.27

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

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

1557

2023.10.19

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

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

443

2025.10.17

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

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

2270

2025.12.29

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

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

39

2026.01.19

go中interface用法
go中interface用法

本专题整合了go语言中int相关内容,阅读专题下面的文章了解更多详细内容。

77

2025.09.10

pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

796

2026.02.13

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 9.5万人学习

Git 教程
Git 教程

共21课时 | 3.8万人学习

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

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号