文章摘要
Landlock是Linux 5.13引入的安全API,允许应用程序动态声明可访问的资源,类似OpenBSD的unveil()机制。它通过运行时策略限制当前线程及其子进程的权限,比SELinux等传统方案更简单易用。开发者只需定义需要限制的操作类型和允许访问的对象列表,即可实现深度防御,且策略随进程退出自动失效。
文章总结
Landlock:Linux应用沙盒新选择
什么是Landlock?
Landlock是一种Linux API,允许应用程序明确声明可访问的资源。其设计理念类似于OpenBSD的unveil()和pledge(),程序可以与内核达成"契约":仅访问特定文件或资源,若遭入侵则拒绝其他所有访问。相比传统Linux安全机制,Landlock更易理解与集成。
核心机制
- 运行时策略:作为Linux 5.13引入的安全模块(LSM),Landlock采用临时性限制策略,无需文件标签或扩展属性
- 双层策略:
- 操作类别限制(如文件系统读写)
- 具体对象授权(如允许读写
/tmp目录)
- 不可逆限制:通过
landlock_restrict_self()生效后,线程及其子进程将永久受限 - 策略叠加:支持最多16层策略叠加,子层只能缩减权限不能扩增
独特优势
- 零特权要求:任何应用都可自我沙盒化
- 开发者友好:无需管理员介入,策略可直接嵌入代码
- 兼容性强:支持ABI版本控制,可与其他LSM(如SELinux)叠加使用
应用场景示例
- Web服务器限制仅访问
/var/www/html - PDF阅读器限制仅操作已打开文件
- 特权守护进程通过Landlock降低风险
开发现状
已支持Rust/Go/Haskell等语言绑定,正在开发的重要功能包括: - 交互式权限管理(类似Android) - 精细化套接字控制 - 多线程同步限制 - 更精确的文件系统权限控制
对比其他方案
| 方案 | 优势 | 劣势 | |-----------|---------------------|---------------------| | Docker | 服务隔离完善 | 桌面应用支持差 | | Flatpak | 图形应用支持好 | CLI工具适配困难 | | SELinux | 功能强大 | 配置复杂需管理员介入 | | Landlock | 无特权要求/易集成 | 功能仍在演进中 |
未来展望
若"监督模式"提案通过,Linux桌面有望实现类Android的权限系统,结合GUI管理界面可显著提升安全性。
(注:保留技术细节和对比表格,删减了代码示例和部分开发讨论,聚焦核心价值和应用场景)
评论总结
以下是评论内容的总结:
Landlock的功能与用途
- 主要面向开发者,通过代码限制程序的文件读写权限
- "LandLock is a Minor LSM intended for software developers"
- "Interesting they added new syscalls...because of the no privilege principle"
技术实现疑问
- 采用新系统调用而非传统/sys配置引发讨论
- "Can sysadmins disable access via seccomp?"
- "Since when is not a C API the first...interface for Linux kernel stuff?"
容器集成问题
- 容器运行时可能滞后于内核支持
- "CRIs trying to define their own custom Landlock interface"
- "I don't foresee many...maintaining a Landlock sandbox policy"
实际应用案例
- Nomad的exec2驱动展示实用场景
- "check out Nomad's exec2 task driver"
- "Pretty useful...without having to containerise"
安全性质疑
- 对运行时自限制的有效性提出疑问
- "what's the point of an application restricting itself?"
- "if compromised, wouldn't it simply un-restrict itself?"
开发者体验
- 缺乏官方C库引发困惑
- "A official c library doesn’t exist yet unfortunately"
- 提供Go语言示例代码展示具体实现方式
(注:所有评论均无评分数据,故未体现认可度差异)