mount --bind本质是VFS层路径重定向,不复制数据、不依赖文件系统类型;需手动创建目标目录,非递归绑定不包含子挂载点,递归需--rbind;开机挂载写/etc/fstab用none bind格式,可叠加ro或ACL实现权限控制。

Linux 中用 mount --bind 实现目录映射,本质是让两个路径指向同一份数据,不复制、不移动、不依赖文件系统类型,只在 VFS 层做路径重定向。
基础绑定:让新路径访问原目录内容
执行前必须确保目标目录已存在,且源目录可读:
- 创建目标目录:
mkdir -p /new/path - 执行绑定:
sudo mount --bind /old/path /new/path - 验证效果:
ls /new/path应显示与/old/path完全一致的内容,stat或ls -i可确认 inode 相同
注意:绑定后修改任一路径下的文件,另一路径实时可见;但绑定本身不继承子挂载点(比如 /old/path 下挂了 tmpfs,它不会自动出现在 /new/path)。
递归绑定:连带子挂载点一起映射
当源目录下还挂载了其他文件系统(如容器中 /proc、/sys,或 chroot 环境),需用 --rbind:
- 命令形式:
sudo mount --rbind /old/path /new/path(等价于-o bind,rbind) - 典型场景:构建隔离环境、调试容器根文件系统、复刻完整运行时视图
- 区别:非递归绑定只映射目录本身;递归绑定会把源路径下所有已挂载的子树也一并映射过去
开机自动挂载:写入 /etc/fstab
要让绑定在重启后依然生效,不能直接写设备名,得用伪类型 none 并显式声明 bind 选项:
- fstab 条目格式:
/old/path /new/path none bind 0 0 - 若需只读映射,加
ro:/old/path /new/path none bind,ro 0 0 - 注意顺序:确保
/old/path所在的原始挂载点(如某 LVM 卷)已在该行之前挂载成功,否则启动可能失败
权限与安全控制:绑定后还能限权
绑定本身不改变权限模型,但可叠加挂载选项或 ACL 进行精细管控:
- 只读绑定:
sudo mount --bind -o ro /data /safe/view,后续任何写操作均报 Read-only file system - 限制访问者:
chmod 700 /safe/view配合setfacl -m u:alice:r-x /safe/view,让特定用户可读、其他人完全不可见 - 适用场景:审计日志分发、配置文件只读交付、开发环境敏感路径隔离











