当前位置: 首页 > news >正文

Ubuntu 下通过 NFS 挂载点与符号链接实现多用户目录访问隔离

总体思路是正确的:用 Ubuntu 本机目录权限控制“是否能穿透到真实 NFS 挂载点”,再用符号链接暴露给允许访问的用户。user02即使能看到/nas01 -> /srv/nfs_user01/nas01,只要不能进入/srv/nfs_user01,就无法访问目标目录。

但原文有几处建议修正或补充:

  1. 不建议直接假设user01组一定存在且只包含 user01
    更稳妥的做法是创建一个专用本地组,例如nfs_user01_access,只把user01加进去。

  2. /home/user02/project_storage的本地属主权限,在 NFS 挂载成功后会被 NFS 目录本身的权限覆盖
    也就是说,最终能不能读写,仍取决于 NAS/NFS 服务端的 UID/GID 映射和目录权限。

  3. 10.0.0.10:/volume1/shared/project_b不一定能被直接挂载
    如果 NAS 只导出了/volume1/shared,而没有允许客户端直接挂载子目录project_b,这条挂载可能失败。可以在文章中保留“直接挂载子目录”的方案,同时补充一个“隐藏挂载父目录 + bind mount 子目录”的备用方案。

  4. 原文最后提到/archive*,但前文没有配置/archive*
    这是小笔误,建议删除。

  5. chmod 700 /home/user02是有效的,但可能影响其他用户或服务访问 user02 的 home
    适合普通多用户隔离场景。若有 Web、共享、协作服务依赖访问该 home,需要提前确认。

下面是整理后的 CSDN 可直接粘贴版本。


Ubuntu 本机通过隐藏挂载点与符号链接隔离 NFS 访问权限

在多用户 Ubuntu 服务器中,经常会遇到这样的需求:

某些 NFS 共享目录只允许指定用户访问,而另一个用户只能访问其中某个子目录。

例如:

用户 user01 可以访问: /nas01 /data1 /data2 /data3 /data4 /data5 /data6 /data7 /data8 /data9 用户 user02 不能访问以上路径。 用户 user02 只能通过: /home/user02/project_storage 访问: 10.0.0.10:/volume1/shared/project_b

限制条件是:

不登录 NAS 不修改 NAS 权限 只在当前 Ubuntu 主机上做访问隔离

本文介绍一种基于 Ubuntu 本机权限的隔离方式:

1. 将 user01 可访问的真实 NFS 挂载点统一放到 /srv/nfs_user01/ 下; 2. /srv/nfs_user01 只允许 user01 所在的授权组穿透访问; 3. /nas01、/data1 等路径做成符号链接,指向 /srv/nfs_user01/ 下的真实挂载点; 4. user02 的目录 /home/user02/project_storage 单独挂载指定 NFS 子目录; 5. /home/user02 设置为 700,防止其他普通用户进入。

这样即使user02能看到:

/nas01 -> /srv/nfs_user01/nas01

也无法进入/srv/nfs_user01,因此会被 Ubuntu 本机目录权限挡住。


一、方案说明

该方案实现的是:

Ubuntu 当前主机上的路径级访问隔离

适用于:

不修改 NAS 服务端权限 不登录 NAS 管理后台 只在当前 Ubuntu 主机限制普通用户访问路径

但它不是 NAS 服务端权限隔离。

如果出现以下情况,本机路径限制无法阻止访问:

user02 在另一台机器上直接挂载 10.0.0.10:/volume1/shared user02 拥有当前 Ubuntu 主机 sudo 权限 NAS 服务端本身允许 user02 通过其他方式访问共享目录

因此,该方案适合在当前 Ubuntu 主机上做普通用户之间的路径隔离。

如果需要更强的安全隔离,最终仍应在 NAS 服务端配置:

共享目录权限 NFS 导出规则 客户端白名单 UID/GID 映射 用户访问权限

二、备份/etc/fstab

修改挂载配置前,先备份原文件:

sudocp/etc/fstab /etc/fstab.bak.$(date+%F_%H%M%S)

如果后续配置出错,可以通过备份文件恢复。


三、卸载当前 NFS 挂载点

先查看是否有程序正在使用这些挂载目录:

sudofuser-vm/nas01 /data1 /data2 /data3 /data4 /data5 /data6 /data7 /data8 /data9 /home/user02/project_storage

如果没有重要程序占用,可以执行卸载:

forpin/nas01 /data1 /data2 /data3 /data4 /data5 /data6 /data7 /data8 /data9 /home/user02/project_storage;domountpoint-q"$p"&&sudoumount"$p"done

如果提示:

target is busy

说明有用户或程序正在使用该目录。

需要先退出相关 shell,或者停止对应程序后再卸载。

不建议在不了解占用进程的情况下直接使用umount -l或强制杀进程。


四、创建 user01 专用访问组

为了避免直接依赖user01这个同名用户组,建议创建一个专用本地组:

<
http://www.jsqmd.com/news/839372/

相关文章:

  • Cursor编辑器账户自动化管理:从API调用到状态同步的完整实践
  • 如何用FanControl告别风扇噪音?Windows平台最智能的风扇控制软件深度解析
  • Moments社区建设指南:从单用户到多用户社交生态
  • 30 分钟吃透 Nacos 入门到精通教程,从 Nacos 搭建到 Nacos 应用全部讲透,Nacos 集群,笔记 23
  • UABEA错误排查与性能优化:10个实用技巧提升工作效率
  • 别再盲选高变基因了!Seurat中FindVariableFeatures的三种方法(vst/dispersion/mvp)实战对比与选择建议
  • 基于AIGC的自动化内容生成与发布系统:从原理到实践
  • Highlightr部署与集成终极指南:从SPM到CocoaPods全攻略
  • 从传统逆向到现代脚本引擎:H5GG如何重塑iOS调试思维
  • 终极免费Visio替代方案:draw.io桌面版完整使用指南
  • 嵌入式RTOS模块动态加载:基于MMU与两级重定位表的设计与实现
  • AI提示词在网络安全攻防演练中的应用与实践指南
  • VSCode光标自动隐藏插件:提升专注力的编辑器视觉优化方案
  • 千行代码工程实践:构建高内聚模块的设计原则与实现方法
  • PIC18F66K80低成本CAN总线MCU选型、驱动开发与实战指南
  • 还在手动记录B站课程笔记?三分钟实现B站视频转文字稿的自动化神器
  • 紧急预警:传统哲学笔记法正在被淘汰!NotebookLM驱动的“动态概念网络”已成顶刊论文产出新基线
  • Process-Dump核心功能深度解析:揭秘PE文件内存提取的5大关键技术
  • 终极音乐播放器DeaDBeeF:跨平台音频解决方案完整指南
  • 食品添加剂安全性再评估迫在眉睫!用NotebookLM 48小时内完成跨数据库毒理证据聚合
  • 2026北京代理记账TOP5!昌平等地服务公司老牌专业口碑出众 - 十大品牌榜
  • Wand-Enhancer:零成本解锁WeMod Pro会员功能的终极解决方案
  • GanttProject完全指南:免费开源项目管理软件的终极解决方案
  • 2026年5月技术圈复盘:AI正式从“聊天“转向“做事“
  • gemmlowp多平台优化策略:ARM NEON与Intel SSE4.1对比分析
  • 旭同智能锡膏柜 深度专业评测 - 速递信息
  • 在OpenClaw项目中集成Taotoken聚合API的配置要点解析
  • AI Agent安全加固实战:从威胁模型到权限管控的纵深防御体系
  • Python封装币安API:从零构建Binance-Claw量化数据工具
  • 高精度动作捕捉设备测评及动作捕捉设备品牌推荐(附联系方式) - 品牌推荐大师1