ByteNoteByteNote
landlock-run 支持矩阵:平台、内核与降级策略
字

字节笔记本

2026年10月6日 · 约 5 分钟读完

landlock-run 支持矩阵:平台、内核与降级策略

API中转
¥120

@deepseek-ai/node-addon-landlock-run 是一个「先限制自身、再执行」的 Landlock 启动器:用约三百行 C11 写成,与 musl 静态链接。它先在自己身上安装 Landlock 规则集,再去 exec 被包装的命令;规则集会跨 execve 继承,于是命令及其全部后代进程都被关在文件系统允许清单里,而调用方进程本身保持不受限。对想把不可信命令关进围栏的 agent harness 作者来说,接入前第一个问题不是怎么用,而是自己的环境到底能不能用。它的支持矩阵文档回答的正是这件事:哪些平台有预编译二进制,内核要满足什么条件,不支持的平台会以什么方式落幕。

landlock-run 支持矩阵一览

两条平台线,构建方是 CI

支持矩阵只有两行。linux-x64 平台包由 GitHub 的 ubuntu-24.04 runner 构建,linux-arm64 平台包由 ubuntu-24.04-arm runner 构建,这两个 runner 就是所谓 builder of record:仓库里不存在交叉工具链,每个平台的二进制都由原生 runner 编译并验证,没有哪份产物是靠交叉编译猜出来的。两个平台包都把启动器与 musl 静态链接,得到不依赖目标机 libc 的单一可执行文件,glibc 系和 musl 系发行版拿同一份二进制都能直接跑。

发布形态是一个入口包加一组平台包。入口包装着 ESM 的 JavaScript,负责解析启动器路径、构造授权参数和执行功能探测,并把所有平台包列为可选依赖;平台包里只有一个预编译二进制和一份 prebuilds.json,一行 JavaScript 都没有。npm 依靠 os 与 cpu 字段在安装时只拉取匹配的平台包,项目刻意不提供安装时编译回退:宿主上没有对应平台包,解析出的路径就绝不存在。

内核说了算:full、partial、unusable

有平台包只是第一步,真正的强制执行还要求内核启用 Landlock,门槛是 5.13。起决定作用的不是内核版本号,而是探测结论:入口包的 probe 会在一个短命子进程里真实构建并安装一套最大规则集,用功能探测代替版本检查,因为版本检查发现不了一个带着 syscall 却拒绝强制执行的内核。

探测判定流程:三档结论与失败闭合

探测结论分三档。内核协商出的 ABI 能管控这份构建认识的所有访问,判 full;较老的 ABI 只能管控其中一个子集,判 partial,此时命令依然在它支持的那些访问上被围住;Landlock 缺席或被关闭,判 unusable,启动器直接拒绝执行任何命令。文档特别强调探测才是权威:一个编译时没带 Landlock、或 LSM 被禁用的内核,无论版本号多新,探测都是 unusable。partial 与 full 的差值也有明确定义:规则集最多覆盖到第五代 ABI,超出当前协商 ABI 的那些访问不受管控,这就是两档之间的全部差别。

明确不做的事,写在明处

支持矩阵里同样值得读的是刻意不支持清单。darwin 不做:macOS 用户通常用系统自带的 sandbox-exec 与 Seatbelt 做限制,操作系统里已经有一套机制,再分发一份二进制没有意义。win32 也不做:Windows 上的限制启动器会是另一种机制,应当放进它自己的仓库,而不是把这个项目移植过去。其余 Linux 架构(riscv64、s390x 等)暂时不做:没有原生的 CI builder of record,而仓库的规则是平台包必须与能构建并证明它的原生 runner 一起加入,绝不让交叉工具链先上车。

不支持平台的结局:失败闭合

这套矩阵的落点是一条统一的降级路径。消费方在不支持的平台上会解析到一个不存在的启动器路径,入口包在平台包缺失时返回一个确定性的、永远不存在的回退路径,探测得到 unusable,然后失败闭合。路径存在与否被刻意不检查,因为探测才是唯一的可用性信号:缺失的二进制和不能强制执行的内核,在消费方眼里是同一种结论,只有一条降级路径,不是两条。这条退化行为由 CI 的 darwin 分支持续演练,属于有测试兜底的文档化行为,不是留给调用方自行猜测的边角。

对接入方而言,这份矩阵实际上是一份承诺清单:能在哪两类平台上拿到二进制,内核要满足什么条件才能拿到 full,partial 意味着什么、缺了什么,以及所有不满足的情形都会以同一种方式安全地拒绝运行。比起一张号称到处能跑的兼容表,这种把边界写死、把降级路径测透的做法,对要把沙箱当作安全边界的 harness 作者来说更可信赖。

相关文章

分享: