当前位置:首页 > 文章列表 > 文章 > linux > Linux mount namespace 修改挂载时怎么避免影响宿主

Linux mount namespace 修改挂载时怎么避免影响宿主

来源:17golang原创 2026-09-08 06:48:35 0浏览 收藏

在 Linux 上用 mount namespace 做临时挂载,最容易踩的坑是以为“有了 --mount 就天然不会影响宿主”。真正决定 mountumount 是否外溢的是挂载传播属性。稳妥做法是:创建独立的 mount namespace,进入后把根挂载树递归设为 private,再只操作专用目录;PID namespace 和 network namespace 可以一起创建,但它们不会替代挂载隔离。

可复用的判断是:先用 unshare --mount --propagation private 建立边界,再用 /proc/self/mountinfo 看有没有 shared:master: 标记。没有传播关系的挂载操作才不会回到宿主的挂载视图。
要点速览
  • mount namespace 隔离的是进程看到的挂载列表,不是磁盘本身。
  • shared 会传播事件,private 不进不出,slave 只接收上游事件。
  • PID 和网络 namespace 是独立维度,是否影响宿主挂载要回到 mount propagation 检查。

先分清三种 namespace 的边界

mount namespace 给进程一份独立的挂载视图;使用 cloneunshare 创建时,初始挂载列表通常是原视图的副本。之后的挂载修改默认只在自己的命名空间可见,但 shared subtree 会改变这个默认行为。

PID namespace 解决进程编号和进程树隔离,network namespace 解决网卡、路由和端口空间隔离。把它们同时打开,只能说明进程运行环境更完整,不能说明挂载已经变成 private。

Linux mount namespace、PID namespace 与 network namespace 的隔离边界关系图
图1:mount namespace 负责挂载视图,PID 与 network namespace 分别负责进程树和网络资源;三者是并列边界。

创建隔离挂载并关闭事件传播

在测试机或具备必要能力的受控进程中,可以从一个干净 shell 开始:

# 创建新的挂载、PID、网络命名空间,并在新环境中启动 shell
sudo unshare --mount --pid --net --fork --mount-proc sh

# 递归切断当前挂载树的传播关系,避免 mount/umount 回到宿主
mount --make-rprivate /

# 只在命名空间内准备实验目录和临时文件系统
mkdir -p /run/ns-lab
mount -t tmpfs -o size=64M ns-lab /run/ns-lab
findmnt /run/ns-lab

--mount-proc 只是为新 PID namespace 准备匹配的 proc 视图;它不是 mount 隔离的替代品。--make-rprivate /r 表示递归处理,适合避免某个父挂载仍是 shared、导致子挂载事件外溢。

Linux private mount propagation 下宿主挂载树与命名空间专用目录的静态边界关系图
图2:把根挂载树设为 private 后,专用目录中的 tmpfs 只属于隔离视图,宿主只保留自己的挂载关系。

用 mountinfo 判断边界是否真的生效

不要只看 mount 的简略输出,检查当前进程的 mountinfo 更直接:

# 查看挂载点及传播标签;shared/master 出现在可选字段中
awk '{print $5, $6, $7, $8}' /proc/self/mountinfo | sed -n '1,12p'

# 只检查是否仍存在共享或主从传播标记
grep -E ' shared:[0-9]+| master:[0-9]+' /proc/self/mountinfo || true

没有匹配结果通常说明当前视图里没有 shared 或 master 标记;若仍看到它们,先找出对应的父挂载点,再对明确范围执行 mount --make-rprivate。不要把“命令成功”当成“宿主安全”,挂载点层级和传播属性才是证据。

常见问题

mount namespace 会复制数据吗?

不会。它主要复制挂载视图和关系,底层文件系统、块设备和目录数据仍可能是同一份,写入风险仍需单独控制。

为什么只用 --mount 仍可能看到宿主变化?

因为新视图可能保留 shared subtree 的传播关系。创建后显式执行递归 private,并检查 mountinfo。

slave 和 private 该怎么选?

完全不希望挂载事件进出时选 private;需要接收上游挂载、但不把自己的事件传回去时才考虑 slave。

小结:隔离挂载的落点是传播属性,不是 namespace 参数数量。把操作限定在专用目录,配合 mount --make-rprivate 和 mountinfo 复查,才能把“看起来隔离”变成可检查的边界。

版本声明
本文转载于:17golang原创 如有侵犯,请联系study_golang@163.com删除
Python sqlite3 多线程共享连接时报错怎么改Python sqlite3 多线程共享连接时报错怎么改
上一篇
Python sqlite3 多线程共享连接时报错怎么改
Go WalkDir 遇到权限错误时怎么记录并继续扫描
下一篇
Go WalkDir 遇到权限错误时怎么记录并继续扫描
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    516次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    500次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    485次学习
查看更多
AI推荐
  • H2O EvalGPT:开源LLM大模型评估与排行榜工具
    H2O EvalGPT
    H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
    19次使用
  • SuperCLUE中文大模型评测基准:功能、能力维度与应用指南
    SuperCLUE
    SuperCLUE是权威的中文大语言模型综合评测基准,涵盖语言理解、知识应用、AI Agent智能体及安全性等12项核心能力。通过多轮对话与客观测试,定期发布榜单与技术报告,为模型研发、优化及行业选型提供科学依据。
    176次使用
  • C-Eval中文评测基准:大语言模型多学科能力评估指南
    C-Eval
    深入了解C-Eval中文评估套件,涵盖52个学科与4级难度。本文详解其功能特点、Zero-shot/Few-shot使用方法及代码示例,助您全面评测LLM中文理解与泛化能力。
    111次使用
  • AI Prompt Library:免费AI提示词库,助力ChatGPT高效创作与营销
    AI Prompt Library
    探索AI Prompt Library免费资源库,涵盖营销、写作及多场景AI提示词。兼容ChatGPT、Claude等工具,一键复制优化输出,提升工作效率。
    38次使用
  • Generrated:DALL·E 2/3 AI绘画提示词灵感库与图像对比平台
    Generrated
    Generrated汇集9300+张DALL·E生成图像及对应提示词,支持查看完整图集、对比DALL·E 2与3版本差异,是AI绘图新手学习Prompt设计与获取创作灵感的实用工具。
    18次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码