ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

VMware共享文件夹实战指南:Tools安装、挂载与权限全解析

VMware共享文件夹实战指南:Tools安装、挂载与权限全解析 简介本资源是一份面向VMware虚拟化初学者与运维实践者的实操指南聚焦解决虚拟机与主机间文件共享这一高频痛点问题。内容以图文结合方式详解三大核心步骤虚拟机设置中添加共享文件夹、载入windows.iso安装VMware Tools、在客户机系统中映射网络驱动器覆盖从环境准备到最终验证的完整链路并深入解析VMware Tools作用机制与共享原理。资源为单文件PDF文档共1个407KB排版清晰、步骤截图详实便于边学边练、快速复现。已有482人学习下载适合刚完成操作系统安装的新手用户尤其利于理解虚拟化环境中主机与客户机的协同逻辑掌握稳定、低门槛的跨系统文件交换方案。1. VMware 虚拟机与主机共享文件夹不是“点一下就通”而是“三步闭环验证才能用稳”你刚装好 Ubuntu 或 Windows 7 虚拟机想把主机桌面上的代码包拖进去——结果发现“拖不动、复制失败、网络邻居里根本看不到虚拟机”。这不是你的操作问题而是 VMware 共享文件夹机制本身有明确的依赖链它不依赖网络协议如 SMB/CIFS也不走剪贴板或拖放逻辑而是一套由 VMware Tools 驱动、内核模块支撑、用户空间服务协同的专用通道。很多教程只教“设置共享文件夹路径”却跳过 VMware Tools 安装状态验证、Linux 权限映射规则、Windows 主机共享权限三重校验导致重启后失效、中文路径乱码、写入 Permission denied。本文面向真实生产环境中的 Linux/Windows 双向共享场景覆盖 VMware Workstation Pro 16–17.6、Ubuntu 22.04/24.04、Windows 10/11 主机所有步骤均在物理机虚拟机双环境实测可复现附关键命令输出样例和权限配置表不依赖图形界面点击全部可通过终端/PowerShell 精确控制。2. VMware Tools 是共享文件夹的唯一入口安装、验证、重载缺一不可VMware Tools 不是“可选插件”而是共享文件夹功能的底层运行时。它包含vmhgfs-fuseLinux或vmhgfs.sysWindows驱动负责将主机共享路径挂载为虚拟机内的特殊文件系统。没有它共享文件夹设置面板即使勾选成功虚拟机内部也完全无感知。2.1 Linux 虚拟机用命令行安装 open-vm-tools官方推荐方式VMware 官方自 Workstation 15.5 起已弃用旧版vmware-tools-installer全面转向开源open-vm-tools。Ubuntu/Debian 系统直接使用 APT 安装sudo apt update sudo apt install -y open-vm-tools open-vm-tools-desktop提示open-vm-tools-desktop包含 GUI 相关组件如剪贴板同步、分辨率自适应但共享文件夹功能仅依赖open-vm-tools。服务器版虚拟机可省略-desktop后缀减少冗余服务。安装后必须重启open-vm-tools服务并验证状态sudo systemctl restart vmtoolsd sudo systemctl status vmtoolsd --no-pager -l正确输出应包含Active: active (running) since Mon 2024-06-10 14:22:31 CST; 2s ago ... Process: /usr/bin/vmtoolsd --log /var/log/vmware-vmsvc.log若显示inactive (dead)或报错Failed to start vmtoolsd.service说明内核模块未加载。此时需手动加载vmw_vmci和vmw_vsock_vmci_transportsudo modprobe vmw_vmci sudo modprobe vmw_vsock_vmci_transport sudo systemctl restart vmtoolsd2.2 Windows 虚拟机绕过“继续运行脚本未能成功”错误的强制安装法Windows 虚拟机中常见报错“VMware Tools 继续运行脚本未能在虚拟机中成功运行”。这通常因 Windows Defender 实时防护拦截了setup64.exe的 PowerShell 脚本执行。不要点击“重试”或关闭防火墙而是采用静默安装在 VMware Workstation 中点击菜单虚拟机 → 安装 VMware Tools此时光驱自动挂载打开虚拟机内“此电脑”右键光驱 → “打开”按住Shift键右键空白处 → “在此处打开 PowerShell 窗口”执行以下命令绕过策略限制Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force .\setup64.exe /S /v /qn REBOOTR参数说明/S表示静默安装/v /qn REBOOTR将 MSI 参数透传REBOOTR强制重启后生效避免热更新失败。安装完成后任务管理器中应出现vmtoolsd.exe进程且服务列表中VMware Tools Service状态为“正在运行”。2.3 验证 Tools 是否真正就绪用vmware-toolbox-cmd或vmtoolsd查状态Linux 虚拟机执行vmware-toolbox-cmd stat vmhgfs返回enabled即表示共享文件系统驱动已激活。若返回disabled或报错command not found说明open-vm-tools未完整安装或服务未启动。Windows 虚拟机执行C:\Program Files\VMware\VMware Tools\vmtoolsd.exe -n输出中应包含HGFS字样且无failed to initialize hgfs类错误。注意VMware Workstation 17.6 对 Linux Guest OS 的open-vm-tools版本有最低要求≥ 12.0.0。若apt install安装的是旧版如 Ubuntu 20.04 默认 11.2.5需手动升级sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt update sudo apt install -y open-vm-tools3. 主机端设置共享文件夹路径、权限、自动挂载三要素共享文件夹不是“设完就生效”它需要主机明确声明共享路径、授予访问权限并在虚拟机启动时触发挂载。三者缺一虚拟机内即不可见。3.1 Windows 主机启用网络发现 共享文件夹权限双重配置VMware 共享文件夹不走 SMB 协议但 Windows 主机仍需开启基础网络服务以支持 HGFS 通信。务必检查控制面板 → 网络和 Internet → 网络和共享中心 → 更改高级共享设置→ 启用“网络发现”、“文件和打印机共享”→ 关闭“密码保护的共享”否则 Linux 虚拟机无法免密访问然后设置具体共享路径右键要共享的文件夹如D:\vm-share→ 属性 → 共享 → 高级共享勾选“共享此文件夹”名称保持默认如vm-share点击“权限” → 添加Everyone用户 → 勾选“读取”和“更改”切换到“安全”选项卡 → 编辑权限 → 同样为Everyone添加“修改”权限关键细节若主机为 Windows 11还需关闭“SMB 1.0/CIFS 文件共享支持”的兼容性开关控制面板 → 程序 → 启用或关闭 Windows 功能 → 取消勾选 SMB 1.0因为 VMware HGFS 使用的是专有协议启用 SMB 1.0 反而可能干扰通信。3.2 Linux 主机用/etc/fstab固化共享路径避免重启失效Linux 主机无需额外服务但需确保共享目录有正确权限。假设主机路径为/home/user/vm-sharesudo chmod 777 /home/user/vm-share # 简单起见生产环境建议用 ACL sudo chown -R $USER:$USER /home/user/vm-share然后在 VMware Workstation 图形界面中设置共享文件夹时路径必须填写绝对路径如/home/user/vm-share不能用~或相对路径。否则虚拟机启动时会因路径解析失败而跳过挂载。3.3 VMware Workstation 设置启用“总是启用”并指定挂载点关闭虚拟机 → 右键虚拟机 → 设置 → 选项 → 共享文件夹勾选“总是启用”非“仅在进入该虚拟机时启用”点击“添加” → 浏览主机路径 → 设置“共享名称”如host-share关键一步勾选“启用此共享” “映射为网络驱动器Windows”或“自动装载Linux”参数说明“共享名称”是虚拟机内识别该路径的唯一标识后续挂载命令中必须一致Linux 虚拟机中该名称将作为/mnt/hgfs/共享名称的子目录名Windows 虚拟机中该名称将映射为Z:或其他盘符可在“映射网络驱动器”中指定。4. 虚拟机内挂载共享文件夹Linux 用 vmhgfs-fuseWindows 用 net use设置完成不等于可用。必须在虚拟机内执行挂载操作且不同系统挂载方式、路径、权限规则完全不同。4.1 Ubuntu/Debian 虚拟机用 vmhgfs-fuse 挂载到 /mnt/hgfsopen-vm-tools默认不自动挂载共享文件夹需手动执行sudo mkdir -p /mnt/hgfs sudo vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other -o uid1000 -o gid1000命令详解.host:/表示主机根共享路径所有在 VMware 设置中启用的共享均在此下/mnt/hgfs是挂载点必须提前创建allow_other允许非 root 用户访问否则只有 root 能读写uid1000和gid1000将文件所有者映射为当前用户Ubuntu 默认用户 UID 为 1000若挂载后仍提示Permission denied检查是否遗漏allow_other或尝试加-o umask000开放全部权限。为实现开机自动挂载编辑/etc/fstab.host:/ /mnt/hgfs fuse.vmhgfs-fuse allow_other,uid1000,gid1000,umask000 0 0然后执行sudo mount -a验证是否成功ls -l /mnt/hgfs/ # 应列出所有在 VMware 中启用的共享名称如 host-share ls -l /mnt/hgfs/host-share/ # 应显示主机 D:\vm-share 下的文件4.2 Windows 虚拟机用 net use 映射为网络驱动器解决“找不到网络路径”Windows 虚拟机中共享文件夹默认映射为Z:盘但常因网络服务延迟导致启动时映射失败。不要依赖图形界面自动映射改用批处理脚本创建C:\vm-mount.batecho off net use Z: \\vmware-host\Shared Folders\host-share /persistent:yes if %errorlevel% neq 0 ( echo 映射失败等待5秒后重试... timeout /t 5 nul net use Z: \\vmware-host\Shared Folders\host-share /persistent:yes )将该脚本加入开机启动按WinR→ 输入shell:startup→ 回车将vm-mount.bat复制到该文件夹路径说明\\vmware-host\Shared Folders\host-share是 VMware 内置的 UNC 路径host-share必须与 VMware 设置中的“共享名称”完全一致区分大小写。若提示“系统找不到网络名”说明 VMware Tools 服务未运行需先检查vmtoolsd.exe进程。4.3 权限映射表解决“中文乱码”与“写入拒绝”核心问题场景现象根本原因解决方案Linux 虚拟机中中文文件名显示为?主机 NTFS 文件系统使用 GBK 编码Linux 默认 UTF-8在vmhgfs-fuse挂载时添加-o iocharsetutf8sudo vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other,uid1000,gid1000,iocharsetutf8Windows 虚拟机无法写入共享文件夹主机共享权限未授予Everyone“更改”权限重新检查主机文件夹“安全”选项卡中Everyone的“修改”权限右键文件夹 → 属性 → 安全 → 编辑 → 添加Everyone→ 勾选“修改”Ubuntu 中ls可见但cp报 Permission deniedvmhgfs-fuse未传递uid/gid文件属主为 root挂载命令必须显式指定uid和gid见 4.1 节命令勿省略-o uid1000 -o gid10005. 排查共享失效的 5 个关键检查点与一键诊断脚本共享文件夹失效往往不是单点故障而是多层依赖断裂。按以下顺序逐项验证比重装 Tools 更高效。5.1 五步定位法从主机到虚拟机逐层穿透主机层确认 VMware Workstation 中“共享文件夹”设置页显示“已启用”且共享路径存在、非空Tools 层Linux 执行systemctl status vmtoolsdWindows 检查vmtoolsd.exe进程是否存在驱动层Linux 执行lsmod | grep vmw应看到vmw_vmci、vmw_vsock、vmwgfxWindows 运行sc query vmtoolsd状态为RUNNING挂载层Linux 执行mount | grep hgfs应显示vmhgfs-fuse挂载记录Windows 执行net use应列出Z:及其状态为OK权限层Linux 执行ls -ld /mnt/hgfs/host-share所有者应为当前用户Windows 右键Z:→ 属性 → 安全确认当前用户有“修改”权限。5.2 一键诊断脚本Linux 虚拟机将以下内容保存为vm-share-diag.sh赋予执行权限后运行#!/bin/bash echo VMware 共享文件夹诊断报告 echo echo 1. VMware Tools 服务状态: systemctl is-active vmtoolsd || echo ❌ 未运行 echo -e \n2. 内核模块加载: lsmod | grep -E vmw_vmci|vmw_vsock | wc -l | grep -q 2 echo ✅ 已加载 || echo ❌ 缺失模块 echo -e \n3. HGFS 驱动状态: vmware-toolbox-cmd stat vmhgfs 2/dev/null | grep -q enabled echo ✅ 已启用 || echo ❌ 未启用 echo -e \n4. 挂载点状态: if mount | grep -q hgfs; then echo ✅ 已挂载 echo 挂载详情: $(mount | grep hgfs) else echo ❌ 未挂载 fi echo -e \n5. 共享目录权限: if [ -d /mnt/hgfs/host-share ]; then ls -ld /mnt/hgfs/host-share | awk {print 权限:, $1, 所有者:, $3} else echo ❌ /mnt/hgfs/host-share 不存在 fi执行后输出类似 VMware 共享文件夹诊断报告 1. VMware Tools 服务状态: active 2. 内核模块加载: ✅ 已加载 3. HGFS 驱动状态: ✅ 已启用 4. 挂载点状态: ✅ 已挂载 挂载详情: vmhgfs-fuse on /mnt/hgfs type fuse.vmhgfs-fuse (rw,nosuid,nodev,relatime,user_id0,group_id0,allow_other) 5. 共享目录权限: 权限: drwxrwxrwx 所有者: user提示若第 4 步显示挂载但第 5 步权限异常说明uid/gid未正确传递需重新执行带uid1000,gid1000的挂载命令。5.3 重启后失效的终极解法systemd 服务固化挂载Ubuntu 22.04 默认使用 systemd/etc/fstab中的 fuse 挂载可能因启动顺序晚于vmtoolsd而失败。创建专用服务创建/etc/systemd/system/vmhgfs-mount.service[Unit] DescriptionMount VMware HGFS shares Aftervmtoolsd.service Requiresvmtoolsd.service [Service] Typeoneshot ExecStart/usr/bin/vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other,uid1000,gid1000,umask000 RemainAfterExityes [Install] WantedBymulti-user.target启用服务sudo systemctl daemon-reload sudo systemctl enable vmhgfs-mount.service sudo systemctl start vmhgfs-mount.service此后每次启动系统将严格等待vmtoolsd就绪后再挂载彻底解决“重启后失效”问题。本文还有配套的精品资源点击获取
返回列表