
1. 先说结论为什么共享文件夹方案最省心装了 VMware Workstation 跑 Ubuntu 的朋友多半会卡在一个很日常的需求上Windows 里的文件怎么方便地给虚拟机里的 Ubuntu 用。有人第一反应是用 U 盘拷贝有人拖拽文件直接拖过去也有人开个 FTP 服务慢慢传。这些办法都能用但效率属实不太行——U 盘插拔麻烦拖拽偶尔会把文件拖坏FTP 还得配服务端每次传完还要手动清理。共享文件夹解决的就是这个痛点。它能把 Windows 的某个目录直接映射到 Ubuntu 里比如你在 Windows 的D:\share放个压缩包Ubuntu 里打开/mnt/hgfs/share就能直接看到、解压、修改双向实时同步不需要任何拷贝动作。对经常在 Windows 和 Ubuntu 之间倒腾代码、安装包、文档的人来说这是最贴近“本地磁盘”体验的方案也是共享文件夹设置这组关键词被搜得最多的原因。这篇教程基于 VMware Workstation Pro 17 和 Ubuntu 22.04/24.04 环境全程用图形界面加终端命令结合的方式讲解。目标很明确让从没配过共享文件夹的新手跟着步骤走完一遍就能用上。我会把每一步背后的原因、常见的坑、排查思路都摊开讲而不是扔给你一段命令就完事。我实际操作中踩过不少坑比如 Tools 装完共享目录不显示、挂载后没有写权限、开机重启之后配置失效等这些问题在官方文档里大多一笔带过但恰恰是新手最容易卡住的地方所以这篇会把它们全部处理干净。2. 动手前的准备三种方案对比与版本选择2.1 先搞清楚你到底需要哪种共享方式在开始配置之前建议先花一分钟确认自己的需求因为“共享文件”这事儿在虚拟化环境里至少有三种常见做法实际效果差别很大。第一种是 VMware 自带的拖拽复制Drag and Drop。这个看着最直接但限制也多两个系统之间拖文件偶尔会丢、大文件容易中断而且它只能传文件不能作为持续共享的目录。你不可能把整个项目文件夹拖进去然后两边同时改它本质就是一次性的文件传输。第二种是网络共享比如在 Windows 里开共享文件夹Ubuntu 里通过 SMB/CIFS 协议访问。这个方案的好处是不依赖 VMware走局域网协议性能稳定但需要你知道 Windows 的 IP、设置共享权限、处理用户名密码配置链路比较长对小项目来说偏重了。第三种就是本教程主角VMware 的 Shared FoldersHGFS 文件系统。它由 VMware Tools 提供支持把宿主机目录直接“塞”进虚拟机虚拟机里的人感知不到网络的存在就像插了一块本地硬盘。它的特点是配置快、路径直观、双向实时同步缺点是只能在 VMware 里用换个虚拟化平台就得换方案。我的建议很直接日常开发、拷贝安装包、共享配置目录优先用 VMware 共享文件夹如果你确实需要高性能的文件服务比如数据库文件直接放在共享盘上那再考虑 SMB 网络共享。后面的内容全部围绕第三条路线展开。2.2 VMware Workstation 版本与 Ubuntu 镜像选择的注意事项版本方面VMware Workstation Pro 从 16 到 17 的共享文件夹功能基本没有太大的操作变化甚至 15 的旧版本也能参考。但如果你的 Workstation 还是 15 或者更老的版本强烈建议先升级到 17因为新版自带的 VMware Tools 组件对新版内核的 Ubuntu 兼容性明显更好在 Ubuntu 22.04 以上系统里老版本 Tools 经常出现装不上、加载失败的问题排查起来非常头疼。我这边实测的版本是 VMware Workstation Pro 17.6Ubuntu 是 22.04 LTS这套组合很稳定。Ubuntu 版本方面22.04 LTS 和 24.04 LTS 都没问题。不过要注意一点如果你装的是 Ubuntu Server纯命令行无桌面环境共享文件夹配置成功后在文件管理器里看不到图标只能用命令挂载这个后面会讲如果你用的是 Ubuntu Desktop图形界面下打开“其他位置”就能直接看到。另一个容易忽略的点虚拟机创建时选择客户机操作系统类型会影响默认配置。在新建虚拟机向导里如果客户机类型选错了比如选了 Ubuntu 64 位但实际装的是 32 位系统VMware Tools 安装会失败或功能异常。装系统之前先确认镜像架构现在主流都是 amd64在向导里选 Ubuntu 64-bit 就好。3. 踩坑预警新手最容易犯的三个错误配置共享文件夹这个需求本身不难但我在各社区里看到过大量求助帖仔细归纳下来新手几乎都栽在下面这三个问题上。事先知道这些坑你就能省掉至少半小时的折腾时间。第一个坑装了 VMware Tools 但什么都没发生。很多人第一步就知道要装 Tools装完重启后去共享文件夹设置里添加目录进 Ubuntu 一看路径却是空的。这不是配置错了而是 Ubuntu 桌面版装了 Tools 后不会自动挂载共享文件夹必须手动挂载或者改自动挂载配置。你在网上搜到的教程如果只说“装好 Tools 就能用”那基本就是没写完整。第二个坑装了 open-vm-tools 导致 VMware Tools 冲突。Ubuntu 的软件源里自带 open-vm-tools有些教程会建议你直接sudo apt install open-vm-tools。这句话没错但前提是你在 VMware 里用的是桌面包open-vm-tools-desktop。而且如果你先装了官方 VMware Tools再装 open-vm-tools两者会打架共享文件夹功能直接失效重启后还可能进不了图形界面。关于官方 Tools 和 open-vm-tools 的选择我后面单独说。第三个坑Windows 共享目录名不要用中文。VMware 在配置共享文件夹时如果路径或共享名包含中文部分版本会出现挂载失败或挂载后目录为空的问题。虽然新版本有所改善但为了不给自己添堵建议共享目录和共享名称都用英文Windows 这边的父路径也不要带中文比如放在D:\vm_share而不是D:\虚拟机共享。记住这三点接下来的操作就顺畅多了。4. 核心步骤三步配置 Windows 与 Ubuntu 共享文件夹4.1 第一步确认 VMware Tools 就位在配置共享目录之前必须先确保 VMware Tools 正常工作。你可以通过下面的方式检查在 Ubuntu 虚拟机里打开终端执行vmware-toolbox-cmd --version如果返回了版本号说明 Tools 已经装好。如果没有这个命令就说明系统里缺少 VMware Tools 或 open-vm-tools需要先安装。这里有个分岔口取决于你的 Ubuntu 环境。如果是最小化安装的 Ubuntu Server没有桌面环境直接用命令装 open-vm-tools 就好sudo apt update sudo apt install open-vm-tools -y如果是 Ubuntu Desktop有 GNOME 桌面推荐安装带桌面支持的 open-vm-tools-desktopsudo apt update sudo apt install open-vm-tools-desktop -y很多人会问为什么不用 VMware 菜单里的“安装 VMware Tools”我的建议是优先用 open-vm-tools因为 Ubuntu 官方仓库里的版本会跟随系统内核更新兼容性更好不需要每次内核升级后重新安装。而 VMware 自带的 Tools ISO 安装包在 Ubuntu 新内核上偶尔会有编译失败或模块加载失败的问题。如果你已经装了官方 Tools也可以保留只要能正常工作就行不用刻意卸载但因为两种 Tools 的服务会冲突所以通常情况下建议使用 open-vm-tools 然后卸载官方的sudo vmware-uninstall-tools.pl这个脚本路径可能存在差异找不到的话可以跳过直接确认服务状态systemctl status open-vm-tools看到 activerunning说明服务正常。这一步做完共享文件夹的基础设施就算打好了。4.2 第二步在 VMware 里添加共享文件夹这一步在 Windows 宿主机上操作。先确保 Ubuntu 虚拟机处于关机状态或者至少处于运行状态都可以但建议关机状态下操作避免一些设置不生效的情况。打开 VMware Workstation选中你的 Ubuntu 虚拟机点击菜单栏的“虚拟机”-“设置”在弹出的虚拟机设置窗口里切换到“选项”选项卡。在左侧列表里找到“共享文件夹”右侧默认是“已禁用”把它改成“始终启用”。然后点击“添加”按钮进入添加共享文件夹向导。向导第一步让你输入共享文件夹名称这个名称是显示在 Ubuntu 里的目录名建议用简单英文比如share或者workspace。第二步选择 Windows 宿主机上要共享的目录路径我建议先在 Windows 里建好一个专门目录比如D:\vm_share里面放你需要共享的文件。第三步设置权限有两个选项只读和读写。日常使用选“启用此共享”并勾上读写权限。设置完后点击“完成”回到虚拟机设置窗口能看到共享列表里多了一条记录再确认“始终启用”是选中的点“确定”保存。到这里VMware 侧的配置就完成了。如果你用的是 VMware Workstation Player免费版操作路径略有不同需要在虚拟机设置里找“Options”-“Shared Folders”Player 版本较老的可能没有这个选项那就只能用网络共享替代了。4.3 第三步在 Ubuntu 里手动挂载并验证读写VMware 侧配置好之后回到 Ubuntu 虚拟机。如果你装的是带桌面的 Ubuntu重启一下虚拟机通常能在文件管理器左侧栏看到共享目录部分版本会自动出现部分不会。如果没出现不用慌手动挂载总共就三行命令。打开终端执行sudo mkdir -p /mnt/hgfs sudo vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other -o uid1000第一条命令是创建挂载点目录/mnt/hgfs是 VMware 约定俗成的挂载位置。第二条命令用 vmhgfs-fuse 把宿主机共享根目录挂载到/mnt/hgfs。其中.host:/表示宿主机上所有共享的根路径挂载后你会在/mnt/hgfs下看到 Windows 里配置的共享名比如/mnt/hgfs/share。-o uid1000是把挂载后的文件属主设置成当前用户通常 Ubuntu 第一个用户的 uid 就是 1000不然挂载后你会发现自己没有写入权限只能读不能写。-o allow_other允许其他用户访问如果不加文件管理器可能因为权限问题打不开目录。挂载完成后验证一下ls /mnt/hgfs/能看到share目录说明共享根目录挂载成功了。再试读写echo test /mnt/hgfs/share/test.txt cat /mnt/hgfs/share/test.txt如果文件能写入并能读出来那恭喜共享文件夹已经全部打通。有个值得注意的地方如果我们不指定 uid新版 vmhgfs-fuse 默认会把挂载目录的属主设为 root普通用户进去就是“权限不够”或者“只读文件系统”。我见过太多人挂在权限这一步实际上加一个-o uid1000就完事了后面也会专门讲这个问题。5. 进阶配置开机自动挂载与权限问题彻底解决5.1 通过 /etc/fstab 实现开机自动挂载每次重启虚拟机都要手动敲两行命令虽然不麻烦但容易忘。更优雅的做法是把挂载配置写进/etc/fstab让系统开机自动挂载。编辑 fstab 文件sudo nano /etc/fstab在末尾添加一行.host:/ /mnt/hgfs fuse.vmhgfs-fuse allow_other,uid1000,gid1000,defaults 0 0各字段的含义.host:/远程共享根路径和手动挂载时一致/mnt/hgfs本地挂载点fuse.vmhgfs-fuse文件系统类型注意不是普通的 ext4而是 FUSE 实现的 vmhgfsallow_other,uid1000,gid1000挂载参数允许其他用户访问并将文件所有权映射到 uid 1000保存退出后先执行sudo mount -a测试一下配置是否正确。如果没有报错再重启一次虚拟机确认自动挂载生效。如果重启后ls /mnt/hgfs还是空的大概率是 fstab 里的参数写得不对或者缺少 fuse 包。这里提醒一下修改 fstab 是有点风险的。如果格式写错开机时可能会卡在挂载步骤甚至无法进入系统。所以写完后一定要先跑mount -a验证而不是直接重启。万一真的出了问题起不来可以在 GRUB 引导时进入 recovery mode把 fstab 里的错误行注释掉。5.2 权限问题的原理与三种解决方式共享文件夹的权限是新手最容易困惑的地方因为它的表现很奇怪目录能看到但写不了或者挂载后所有文件都显示 root 所有没有任何用户能改。要理解这个问题得先知道 vmhgfs-fuse 和传统文件系统的区别。普通本地磁盘读写走内核文件系统权限由文件的 uid/gid 决定谁拥有谁操作清清楚楚。而共享文件夹走的是 FUSE用户态文件系统宿主机端 Windows 的文件权限和客户端 Linux 的权限模型不一样FUSE 层需要决定“Linux 里的这个文件以什么身份去访问 Windows 文件”。如果不手动指定挂载时默认的 uid 是 root那么普通用户 eric 访问这个目录时内核一看文件属于 root直接判没有写权限。解决方式有几种我按推荐程度排个序最省心的办法就是在挂载时直接指定当前用户的 uid/gid也就是我们前面用的sudo vmhgfs-fuse .host:/ /mnt/hgfs -o uid1000,gid1000如果要让多个用户都能访问可以在挂载参数里加allow_other然后用默认 root 挂载再对子目录单独授权sudo vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other sudo chown -R 用户名:组名 /mnt/hgfs/share但要注意chown改的是挂载视图里的属主记录Windows 那边的文件本身没变这个操作对同一个共享目录来说可以持续生效。还有一个方案适用于要写权限但不关心属主显示的情况直接给共享文件夹的 Windows 侧目录加上 Everyone 写权限然后在挂载参数里不指定 uid而是用umask000让所有文件都可读写sudo vmhgfs-fuse .host:/ /mnt/hgfs -o umask000这个方案权限最松适合自己用的个人虚拟机不适合生产环境也不适合多人共享的场景。我比较推荐的组合是单用户使用选uid1000,gid1000多用户使用选allow_other加chown指定目录。权限这个东西宁可开得保守一点也不要图省事把整个挂载点弄成 777等出了问题再回溯权限配置代价更大。5.3 解决“挂载成功但文件夹为空”的隐藏问题除了权限之外还有一个问题很隐蔽共享文件夹挂载成功/mnt/hgfs下面确实列出了共享名但进目录一看是空的Windows 那边的文件一个都看不见。这种情况八成和 Windows 宿主机目录权限或路径有关。先检查共享路径是不是真实的物理路径而不是网络映射盘。比如 Windows 里把文件放在某个 NAS 的映射盘符Z:\上然后把Z:\share作为共享文件夹路径传给 VMware极大概率挂载成功但内容是空的。原因很简单VMware Tools 服务运行在 SYSTEM 账户下并没有你当前用户挂载的网络驱动器访问权限所以虚拟机里看到的就是个空壳。解决办法是把文件挪到本地磁盘C 盘、D 盘等物理盘符再共享。还有一个可能是共享目录路径里有隐藏字符或特殊符号比如后置空格、全角括号这类路径 VMware 不报错但挂载后就是空的。建议把路径改成纯英文、无空格、无特殊符号的简单路径比如D:\vm_share从根上避免问题。6. 日常使用中的常见问题与排查速查表我把实际使用中频率最高的问题整理成一个速查表你遇到类似现象时直接对号入座。以下问题都是我或身边同事真踩过的坑不是从文档里抄来的通用问答。现象可能原因解决方案挂载时报fuse: mount failed: No such file or directory挂载点/mnt/hgfs不存在先sudo mkdir -p /mnt/hgfs再挂载挂载成功但 ls 为空Windows 共享路径是网络盘/映射盘或者路径含特殊字符改成物理盘符路径简化成纯英文无空格目录能看到但写入报错Permission denied挂载时未指定 uid/gid挂载参数加-o uid1000,gid1000开机后/mnt/hgfs下没有共享目录fstab 未配置或配置有误检查 fstab执行sudo mount -a验证重启后进不了图形界面卡在登录循环open-vm-tools 与官方 VMware Tools 冲突进入 recovery mode卸载其中一个 Tools 包Ubuntu 里共享文件的中文文件名乱码挂载参数缺少字符集设置部分新版本已修复仍出现可尝试-o iocharsetutf8复制大文件时进度条卡住不动宿主机磁盘 IO 慢或共享目录位于机械硬盘把共享目录移到 SSD 分区复制时避免同时跑多个大任务虚拟机设置里“共享文件夹”选项是灰色的虚拟机未安装 VMware Tools 或系统列表类型不匹配先装好 open-vm-tools确认客户机系统类型正确这里多说一句字符集的问题。早期版本的 vmhgfs 在中文文件名上确实有乱码好在 Ubuntu 22.04 以上的新版本默认 UTF-8基本不太会遇到。如果你还在用老版本挂载参数里加iocharsetutf8可以缓解。另外如果你共享目录里放的是代码项目建议在 Windows 侧用 VS Code 或 NotePad 编辑时统一把换行符和编码设置成 UTF-8 无 BOM。Linux 对 BOM 太敏感自己写的文件没事别人发过来的文件如果有 BOM程序运行时第一行可能会报错找不到模块这是个很隐蔽的坑。共享文件夹本身没错错的是文件内容格式但排查起来很容易被误判成共享配置问题。7. 为什么我推荐 open-vm-tools 而不是自带 VMware Tools7.1 两者的本质区别与适用场景很多教程让你从 VMware 菜单里点“安装 VMware Tools”然后挂载 ISO 解压安装。这是个经典路径但放在今天的 Ubuntu 版本里不是最优解。自带 VMware Tools 是一个二进制安装包由 VMware 发行需要在客户机里执行vmware-install.pl之后在/usr/lib/vmware-tools下驻留服务。它的问题是Ubuntu 内核每次升级相关的内核模块可能需要重新编译一次否则 Tools 功能会失效。在 Ubuntu 22.04 这种滚动升级比较频繁的系统上这是个持续的维护负担。open-vm-tools 则是 VMware 开源的 Tools 版本已经直接放进 Ubuntu 官方软件源和系统内核同步维护。你只需要apt install open-vm-tools之后内核升级时会自动重建模块不用手动干预。桌面版再用open-vm-tools-desktop启动图形界面相关的增强服务比如分辨率自适应、剪贴板共享。一句话总结新装虚拟机无脑用 open-vm-tools如果你已经装了官方 Tools也能正常运行那就不用折腾稳定优先。7.2 装错包导致登录循环的修复记录我自己就遇到过一次 open-vm-tools 与官方 Tools 并存导致的登录循环。当时是在 Ubuntu 22.04 里先用 VMware 菜单装了官方 Tools后来想换 open-vm-tools 就没先卸载直接apt install open-vm-tools-desktop结果重启后卡在登录界面输密码后黑屏一秒又弹回登录页完全进不去桌面。原因是两个 Tools 的显示驱动和 session 管理服务冲突导致桌面会话反复崩溃。修复步骤供参考开机后在 GRUB 菜单选“Advanced options for Ubuntu”进入 recovery mode选择 root shell 选项然后执行mount -o remount,rw / apt remove open-vm-tools-desktop open-vm-tools apt install open-vm-tools-desktop reboot恢复之后务必确认官方 Tools 的残留服务是否停掉了systemctl list-units | grep vmware如果还有以 vmware 开头的服务在运行用systemctl disable --now关掉对应服务。干净之后共享文件夹功能就恢复正常了。这事的教训是别在系统正常运行的时候同时装两套 Tools。方案只能选一个。推荐先装 open-vm-tools官方 Tools 能不装就不装。8. 按个人经验整理的最佳实践这套共享文件夹配置我用在各种环境里少说也有几十次了。下面这几条是我总结出来的最佳实践不一定每条都写在官方文档里但都经过反复验证能帮你少走弯路。第一Windows 侧单独建一个共享专用目录不要直接共享整个盘或桌面。把整个 D 盘共享出去看着方便但虚拟机里能看到宿主机所有文件万一误操作删了东西找都找不回来。正确做法是准备一个D:\vm_share这样的专用目录需要共享的内容复制进去用完可以随时清理。第二大文件传输优先用共享小文件用剪贴板。如果你剪贴板共享是开着的复制一小段文本或者一两个小文件直接在两个系统间 CtrlC、CtrlV 最快。但涉及几百 MB 的 ISO、压缩包共享文件夹传输更稳定不容易因为剪贴板内容体积过大而崩溃。第三共享目录里不要直接跑数据库或者版本控制仓库。HGFS 的 IO 性能比虚拟磁盘差一个档次在共享文件夹里跑git status或者 MySQL 数据文件整个操作会明显变慢。共享文件夹只适合“传文件”和“查看编辑小文件”不适合“运行重型服务”。需要这种场景时把文件复制到 Ubuntu 本地磁盘再用体验完全不同。第四如果虚拟机里跑的是 Docker 容器容器内访问共享文件夹需要额外配置。因为容器默认看不到宿主机虚拟机的挂载点需要把/mnt/hgfs再 bind mount 到容器里或者直接在docker run时用-v /mnt/hgfs/share:/data挂载进去。这个细节容易忽略但如果你在 Windows 里写代码、在 Ubuntu 容器里跑构建这个配置就非常关键。第五和 VirtualBox 的共享文件夹做个对比。VirtualBox 需要安装增强功能Guest Additions且共享目录挂载命令是sudo mount -t vboxsf参数和 VMware 不太一样。如果你是从 VirtualBox 转过来的注意不要混淆两种命令。VMware 的优势在于 Tools 与系统集成更紧密尤其对桌面分辨率自动适配、3D 加速的支持都更顺滑。实际操作中我的习惯是把共享文件夹当成一个“交换区”放待处理的文件处理完随手清理保持目录清爽。时间久了你会发现Windows 和 Ubuntu 两个系统之间的文件“边界感”会变得很模糊反而能提升不少工作效率。如果你按这篇教程把共享文件夹配好了接下来可以试试给 Ubuntu 装个中文输入法或者配置一下 Docker 环境这些都是虚拟机装完 Ubuntu 之后最长顺带的活。VMware 里 Windows 与 Ubuntu 的协作共享文件夹只是第一块敲门砖后面还能玩出很多东西。