Lua-LSM 是一个运行在内核态的访问控制框架,支持使用 Lua 小程序来编写安全策略并且挂载到 LSM 框架的任意关键路径上——不需要编译模块,不需要重启,热加载即刻生效。
⚡热加载 🔒沙盒运行 📝小程序 🛡️零重启
什么是 Lua-LSM?
LSM(Linux Security Module)是 Linux 内核早期版本就内置的安全框架。它在文件访问、进程权限变更、socket 创建等关键路径上预埋了钩子(hook),SELinux、AppArmor、Yama 等安全模块都跑在这个框架上。
传统的 LSM 模块开发需要编写 C 代码、和内核一起参与编译,不能作为模块动态拆卸,这里每一步都有门槛。
Lua-LSM 改变了这一点:编写一个安全策略小程序,通过 securityfs 接口写入内核,内核内置的 Lua 引擎会将其编译为字节码,经过预编译检查后挂载到 LSM 钩子上,运行在安全沙盒,避免内核 Crash。
从写脚本到策略生效, 最简单只需要一个 echo 命令,极大地降低了 LSM 访问控制的开发门槛。

















典型场景
Lua-LSM 不是一个完整的安全解决方案,它是一个底层框架——让任何人可以用最低的成本在内核 LSM 关键路径上插入自定义逻辑。
- 漏洞热缓解:内核漏洞曝光后、补丁到达前的窗口期,用几行 Lua 脚本挂载到 LSM 钩子上做拦截,无需重启系统。
- 细粒度访问控制:对特定文件路径、特定进程属性的访问做精细化控制,比 SELinux 策略更轻量、更易维护。
- 安全审计与日志:在 LSM 钩子上挂载审计逻辑,记录敏感操作的调用者、时间、参数,用于安全分析和溯源。
- 多租户隔离增强:在容器宿主机上对非特权进程的敏感系统调用做额外限制,弥补 cgroup/namespace 的不足。

















三分钟上手
不需要任何编译工具链,不需要安装额外软件。只要你的内核是 ANCK 6.6 且启用了 Lua-LSM,就可以开始。
示例:只允许 /etc/shadow 文件被访问三次
local kernel = require('kernel') localfunction log(fmt, ...) local s = string.format('shadow_protect: ' .. fmt, ...) kernel.printk(s) end local function file_post_open(file, mask) local path = file:path() if path == "/etc/shadow"then local n = shared.dogs:incr('count') if n > 3 then log('%s %d Read deny, %s', current:comm(), n, path) return false end end end return { name = "shadow_protect", file_post_open = file_post_open }
小程序加载:
cat shadow_protect.lua > /sys/kernel/security/lua/register
此时对/etc/shadow 的前三次访问会被允许,从第四次开始的访问将被拒绝,返回 Operation not permitted。
小程序卸载:
echo 'shadow_protect' > /sys/kernel/security/lua/unregister
小程序功能
这个示例在 file_post_open 钩子上挂载了一段逻辑:当任何用户任何进程尝试打开包含 /etc/shadow 路径的文件时,会维持一个计数,当计数大于 3 时,拒绝打开操作,即使 root 用户也受该策略控制。









架构一览
Lua-LSM 的体系架构以及在内核安全子系统中的位置如下:
借助 Lua 语言的语法和元编程能力,可以屏蔽掉 LSM 底层的复杂逻辑,lua-lsm 的目标是以最接近自然语言的方式高效开发 LSM 程序,支持需要快速响应又无需更新内核的安全威胁场景,比如系统实时防御和动态止血能力。
正式开源,欢迎参与
Lua-LSM 项目已在龙蜥社区(OpenAnolis)正式开源,代码已合入 Cloud Kernel (ANCK) 6.6 主线,路径为 security/lua 目录。
项目地址:https://gitee.com/anolis/cloud-kernel
文档地址:https://github.com/openanolis/lua-lsm-kernel/wiki
Lua-LSM 是一个开源项目,我们欢迎所有形式的贡献:
- 提交 Issue:如果你发现了 bug、有功能建议、或者觉得文档不够清晰,提一个 Issue 就是最大的帮助。
- 提交 PR:如果你有好的想法,可以直接 Fork 仓库,修改后提交 PR。无论是修复 bug、增加 LSM 钩子支持、还是优化 Lua 引擎,我们都欢迎。
- 小程序:哪怕你不改一行 C 代码,你也可以用 Lua 脚本编写实用的安全小程序。好用的脚本欢迎提交到社区,让更多人受益。
这是一个刚刚起步的项目,每一个关注它的人都是它早期最重要的贡献者。欢迎大家加入钉钉交流群(群号:162895003107)讨论 Lua-LSM 开源技术。
📢 注意:Lua-LSM 目前仅在 Cloud Kernel (ANCK) 6.6 最新开发分支中可用,会在下个 Release 版本中发布。
本篇主要介绍了 Lua-LSM 及其架构等,在下一篇中,我们会用一个真实的安全漏洞场景,展示 Lua-LSM 如何在几十行脚本内完成对内核提权漏洞的热缓解。欢迎持续关注龙蜥不迷路。
—— 完 ——