惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
DataBreaches.Net
T
Threatpost
N
News and Events Feed by Topic
PCI Perspectives
PCI Perspectives
V2EX - 技术
V2EX - 技术
D
Docker
G
Google Developers Blog
Microsoft Security Blog
Microsoft Security Blog
N
News and Events Feed by Topic
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Google Online Security Blog
Google Online Security Blog
The GitHub Blog
The GitHub Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
Y
Y Combinator Blog
M
MIT News - Artificial intelligence
Blog — PlanetScale
Blog — PlanetScale
博客园 - 司徒正美
T
Troy Hunt's Blog
Webroot Blog
Webroot Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
量子位
Apple Machine Learning Research
Apple Machine Learning Research
H
Help Net Security
F
Full Disclosure
B
Blog
O
OpenAI News
H
Hackread – Cybersecurity News, Data Breaches, AI and More
博客园_首页
Google DeepMind News
Google DeepMind News
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Engineering at Meta
Engineering at Meta
大猫的无限游戏
大猫的无限游戏
Forbes - Security
Forbes - Security
Know Your Adversary
Know Your Adversary
B
Blog RSS Feed
MongoDB | Blog
MongoDB | Blog
Scott Helme
Scott Helme
T
The Exploit Database - CXSecurity.com
博客园 - 聂微东
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
The Last Watchdog
The Last Watchdog
Recorded Future
Recorded Future
IT之家
IT之家
Project Zero
Project Zero
Stack Overflow Blog
Stack Overflow Blog
小众软件
小众软件
Attack and Defense Labs
Attack and Defense Labs
L
Lohrmann on Cybersecurity
SecWiki News
SecWiki News
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com

博客园 - 悠哉大斌

debian(WSL) apt 代理配置 大语言模型推理中的隐藏瓶颈及其解决方法 Docker Sandboxes 技术是什么,和docker容器有什么区别 什么是 Docker Agent以及一个Docker Agent示例 windows wsl 安装 Temurin® JDK claude Code 和 codex 作为编程代理,前者使用typescript开发,后者使用rust,他们的决策依据是什么 Java 并发编程发展史与 java.util.concurrent 全景解析 LLM 真的改变了编码风格吗? 如果人工智能会犯错且不精确,为什么它正在改变世界? Python 的协程模型和 JavaScript 的 async/await python闭包和function.__closure__特殊属性 python 的 dunder name和 sunder name 基于nodejs设计REST API的知名开源框架 windows上使用node-oracledb Thick 模式连接 Oracle 11g Claude Code CLI连接 DeepSeek V4模型后调用报400错误 python里对象(object)到底是什么 Python 泛型演变史 Python 类型别名的演变 Python 类型提示的演变史 PEP 593 新增的Annotated 类型 Alibaba AgentScope 和 microsoft agent framework 详细对比分析 spring AI Alibaba Agent Framework 和 agentscope有什么区别和联系 AI Agent协作模式以及主流开源框架对协作模式的支持 Tailscale 是如何接管 DNS 的? Agent = Model + Harness 使用rust编写typescript编译器的难点在什么地方,哪些数据结构是rust不擅长的? TypeScript/JavaScript 中的异步迭代语句 js中的生成器函数 Tailscale Serve and Funnel openclaw gateway的网络绑定模式 websocket协议和http协议有何依赖关系? MCP通信的双方是谁? claude code MCP 安装范围 如何在wsl2环境下给claude code cli 配置 playwright-mcp wsl的网络模式有哪几种,有哪些区别? AI Agent memory是什么? ai agent skills是什么? Go测试生态系统工具与最佳实践深度调研(聚焦认证授权系统) 线性代数中常见矩阵类型的概念关系思维导图 三种主流授权策略
linux内核之Namespaces、Cgroups、Capabilities、Seccomp和Landlock
悠哉大斌 · 2026-06-15 · via 博客园 - 悠哉大斌

这几个技术都属于Linux内核的关键部分,但它们扮演的角色截然不同。总的来说,NamespacesCgroups是容器技术的“基石”,负责构建运行环境;而CapabilitiesSeccompLandlock则构成层层递进的“安全防线”,共同实现纵深防御。

下面是它们具体角色的一个梳理:

角色分工 Namespaces Cgroups Capabilities Seccomp Landlock
一句话总结 隔离"视图"
负责"看什么"
限制"用量"
负责"用多少"
拆分"特权"
负责"给什么权力"
过滤"系统调用"
负责"能打什么电话"
控制"文件访问"
负责"能碰哪些文件"
核心功能 为进程提供独立的系统资源视图,实现资源隔离。 限制和统计进程组的资源使用(CPU、内存等)。 将传统root用户的"万能"特权拆分为一个个独立的小权限,遵循最小权限原则 拦截和过滤进程发起的系统调用,限制其与内核的交互方式。 提供路径级别的细粒度文件访问控制,可限制对特定文件或目录的读写执行等操作。
类比理解 为进程创建独立、封闭的"房间",不同房间内看到的内容不同。 为进程设定"预算",限制其能使用的硬件资源。 将"万能钥匙"变成一串单独的钥匙,使用时只给必要的钥匙。 限制进程能拨打哪些"内核电话",防止其滥用。 在文件柜的每个抽屉上加装独立的"密码锁",而非仅锁住整个柜子。
适用场景 容器的核心:构建容器隔离环境的基础,用于进程、网络、文件系统等隔离。 资源管控:在容器和云平台中,确保每个容器不会耗尽宿主机资源。 权限收紧:为容器或服务进程"降权",移除其不需要的敏感权限(如修改系统时间、加载内核模块)。 攻击面缩减:阻止容器内进程执行mountswapon等危险系统调用。 精细化沙箱:在容器内进一步隔离子进程(如浏览器渲染引擎),或为非容器化应用(如Web服务器、数据库)自身增加安全限制。

🎬 它们如何协同工作?

这几个技术常常协同工作,形成一个纵深防御体系。例如,在启动一个容器时:

  1. Namespaces 负责创建隔离环境(如独立的网络和文件系统),让进程"住进独立的房间"。
  2. Cgroups 则设置资源上限,防止这个"房间"占用过多"水电"(CPU和内存)。
  3. Capabilities 会丢弃容器进程绝大多数不必要的特权(如加载内核模块的权限)。
  4. Seccomp 会设置过滤器,禁止调用mountswapon等危险系统调用。
  5. 最后,Landlock 可以作为一个额外的、细粒度的沙盒,例如限制容器内的Web服务器只能写入特定日志目录,即使它被攻破也无法破坏其他文件。

🆚 Namespaces vs Landlock

这里想再特别说明一下,Namespaces 和 Landlock 都涉及文件系统隔离,但机制和粒度存在关键差异:

  • 机制不同:Namespaces 的隔离发生在系统视图层面。当容器中执行 chrootpivot_root 时,进程看到的是一个新的文件系统视图,但对这个"新视图"里的所有文件享有同等访问权限。而 Landlock 是基于路径的访问控制,它直接限制进程对宿主机中真实文件路径的访问。
  • 管控深度不同:Namespaces 是粗粒度的,一旦进入 namespace,对所有挂载的文件都拥有相同权限。而 Landlock 允许你定义精细的策略,例如,允许读取 /etc 但禁止写入,只允许在 /tmp 下创建新文件等。Landlock 甚至可以作用于宿主机全局的文件系统,这是 Namespaces 做不到的。

💎 总结

简单来说,这张表格可以帮你从宏观上理解它们的角色:

  • Namespaces:为进程分配独立的“房间”。
  • Cgroups:为房间设定“水电煤”用量。
  • Capabilities:拆分“万能钥匙”,只给必要的门钥匙。
  • Seccomp:屏蔽“电话本”上危险的号码。
  • Landlock:为房间内的每个“抽屉”加装独立的锁。