虚拟机控制目录的位置由虚拟化平台决定,没有统一路径,但权限设置的核心原则是:只给需要的账户最小权限,目录归属清晰、可追溯。
虚拟机控制目录在哪?先搞清楚你用的是哪个平台
很多朋友找虚拟机控制目录时,习惯性地去软件安装目录里翻,但虚拟化平台的控制目录和程序安装目录通常是两回事,控制目录里装的是虚拟机配置文件、磁盘镜像、快照、日志,这些才是你日常需要管理和备份的东西。
VMware Workstation:用户文档目录下的Virtual Machines
VMware Workstation 的默认控制目录在 C:\Users\你的用户名\Documents\Virtual Machines(Win10/11),每个虚拟机一个子文件夹,里面是 .vmx 配置文件、.vmdk 磁盘文件、.vmsd 快照元数据。
但要注意,这个目录不是固定的,如果你在创建虚拟机时手动指定了存储位置,或者把虚拟机克隆到了其他盘,控制目录就变了,想快速确认当前控制目录,打开 Workstation 的"偏好设置→工作区",看到的就是默认虚拟机目录,而单个虚拟机的实际位置,在虚拟机选项卡的标签上右键→设置→选项→工作目录,那里写着最真实的路。
VMware ESXi:/vmfs/volumes/datastore1
ESXi 是裸机虚拟化系统,控制目录在 /vmfs/volumes/datastore1 下,datastore1 是默认存储,但如果是加了多个存储设备或做了 RAID,路径会变成 /vmfs/volumes/存储设备名称,每个虚拟机的文件(.vmx、.vmdk 等)直接平铺在这个数据存储的目录里,ESXi 的控制目录权限,通过 vSphere Client 里的"权限"选项卡统一管理,和 Linux 文件系统的 chmod/chown 逻辑不太一样,是角色-用户-权限的三层模型。
VirtualBox:默认在用户主目录下的VirtualBox VMs
VirtualBox 的默认控制目录是 ~/VirtualBox VMs(Linux/macOS)或 C:\Users\用户名\VirtualBox VMs(Windows),如果你在全局设置里改过默认机器文件夹,路径会跟着变,VirtualBox 对控制目录的权限管理没有 VMware 那么复杂,核心用的是操作系统自身的用户权限机制,外加 .VirtualBox 目录下的一些 XML 配置文件来做记录。
Hyper-V:C:\ProgramData\Microsoft\Windows\Hyper-V
Hyper-V 是 Windows 内置的虚拟化方案,默认控制目录有两部分:虚拟硬盘默认在 C:\Users\Public\Documents\Hyper-V\Virtual Hard Disks,虚拟机配置在 C:\ProgramData\Microsoft\Windows\Hyper-V,ProgramData 目录默认隐藏,需要打开"显示隐藏文件"才能看到,Hyper-V 的权限管理依赖 Windows 的 Hyper-V 管理员组,不是 Hyper-V 组,别搞混了。
虚拟机控制目录权限设置:实操步骤与排查思路

权限搞不对,最常见的结果就是虚拟机打不开,或者启动时报"无法访问配置文件"、"
无法打开磁盘"这类错误,不同平台处理方式不一样,下面按场景来拆。
Workstation 和 VirtualBox:以当前用户为准
Workstation 的权限问题,绝大多数情况出在目录的 NTFS ACL(访问控制列表)上,如果你把虚拟机放在 D 盘或移动硬盘,而这个目录是从旧电脑或者别人那边拷过来的,ACL 里的用户 SID(安全标识符)对不上,就会出现打不开的情况,解决方式有两种:
- 右键虚拟机的 .vmx 文件 → 属性 → 安全 → 检查"用户"和"SYSTEM"是否有完全控制权限
- 更推荐的做法是把整个虚拟机文件夹的 ACL 重置,用管理员身份在 PowerShell 里执行
icacls "D:\虚拟机目录" /reset /T /C /Q
VirtualBox 的权限问题多数发生在 Linux 主机上,如果你用命令行启动虚拟机,报错信息提示 "Permission denied",大概率是当前用户没权限访问 VDI 磁盘文件,检查 ls -l ~/VirtualBox\ VMs/你的虚拟机/ 的属主和权限位,用 chown 你的用户名:你的用户组 -R 来重置属主,再 chmod 600 .vdi 给磁盘文件最小权限,但注意 不要整个目录 chmod 777,这会让其他本地用户能直接读到你的虚拟磁盘内容,相当于把整台虚拟机的数据裸奔给对方看。
ESXi:用角色分离控制权限,别一刀切
ESXi 的控制目录权限管理是通过 vSphere 的角色体系实现的,默认有三个角色:管理员、只读、无权限,管理员能执行所有操作,包括删除和迁移虚拟机文件,只读能看到目录结构,但没法做任何修改。
实际运维中,常见问题发生在把 vCenter 里创建的普通用户直接丢到 ESXi 主机权限里,而这个主机的根目录权限默认会继承到所有虚拟机,如果这个用户只有"虚拟机用户"角色却拥有主机管理的继承权限,就可能出现他能看到不该看的目录内容,建议的做法是:
- 在vCenter 中创建"虚拟机操作员"角色,只分配虚拟机相关的权限,不给存储相关权限
- 在数据存储的"权限"标签里,单独对特定目录给用户授权,而不是给整个 datastore 根目录授权
- 坚持最小权限原则,不要为了省事直接把用户加到"管理员"组
Hyper-V:区分"管理权限"和"文件系统权限"
Hyper-V 的用户权限和管理是两层:一个是 Hyper-V 管理器的角色权限(谁有权操作虚拟机),一个是 NTFS 文件权限(谁能访问 .vhd/.vhdx 磁盘文件),很多管理员只改了第一层,第二层忘记改,结果出现"虚拟机正常启动但无法附加现有磁盘"的怪问题,正确做法是

保证用户既在 Hyper-V 管理员组,同时对该虚拟机的 .vhdx/.vhd 文件具备 NTFS 的完全控制权限。
VMware 控制目录权限设置的常见坑与标准化建议
把控制目录放到网络共享盘
有些场景下,大家图方便把虚拟机控制目录放到 NAS 或共享文件夹上,Workstation 对网络共享位置的兼容性一向不太好,常见症状是截图显示"设备不可用",或者启动瞬间直接报"文件锁定失败",行业共识认为,除非是专业的企业级共享存储(NFS 存储或光纤存储),否则不建议把虚拟机控制目录放在普通 SMB 共享上。
目录权限搞混了回收站
在 Windows 上,如果你把虚拟机的控制目录放在 C 盘用户目录下,空间不足时清理磁盘,不小心的"磁盘清理"可能连带把 vmdk 也当成临时文件清掉,这其实跟权限没什么直接关系,但和目录混淆有关,建议把虚拟机的磁盘文件和管理用户文档分开放,比如统一用一个独立的 data 盘,路径只存虚拟机,不做其他用途,这样在清理时可以更明确地不去碰它。
权限丢失后的文件找回技巧
如果权限配置失误导致虚拟机目录无法访问,但你知道文件还在,可以尝试:用管理员身份重新打开资源管理器,去目录的"安全"选项卡里更改权限,把当前管理员账号添加进去并勾选"完全控制",如果是在 Linux 的 ESXi 或者 KVM 环境,直接看控制目录最上层有几个子目录,逐个用 ls 检查文件是否存在,再用 chmod u+x 等命令解锁,但要注意修改的是存储目录到虚拟机的中间层路径,不是 ESXi 里 /vmfs/volumes 根目录本身的权限。
不同虚拟化平台权限模型对比表
| 平台 | 默认控制目录 | 权限管理核心 | 常见问题 |
|---|---|---|---|
| VMware Workstation | C:\Users\用户名\Documents\Virtual Machines | NTFS ACL(基于用户) | 跨设备拷贝后 ACL 失效 |
| ESXi | /vmfs/volumes/datastore1 | vSphere 角色(用户-角色-权限) | 继承权限导致越权 |
| VirtualBox | ~/VirtualBox VMs | 操作系统文件权限(Linux/Windows) | chmod 777 过度授权 |
| Hyper-V | C:\ProgramData\Microsoft\Windows\Hyper-V 和 Public 目录下的 Virtual Hard Disks | 双缓冲:Hyper-V 管理员组 + NTFS 权限 | 组名混淆(Hyper-V 组 vs Hyper-V 管理员组) |
对上表有一个提醒:虚拟机控制目录权限设置没有绝对标准,取决于你的使用场景,单机用户重点是

别让别的本地账户碰你的虚拟磁盘文件;企业运维重点是角色最小化、临时授权要有到期时间;云机房用户的重点则是别把命令权限随意分发,据行业观察,相当一部分虚拟化故障报告与权限配置不正确相关,而不是虚拟化软件本身的功能缺陷。
虚拟机控制目录还有哪些细节值得注意
快照文件也是控制目录的一部分
不少人管权限时只看 .vmx 或 .vmdk,忽略了快照文件(.vmsd、.vmem、-delta.vmdk),快照文件和控制目录在同一路径下,权限要求和磁盘文件一致,如果在快照链比较长的情况下把快照目录的属主改了,已有的快照会在恢复时变成不可读状态,所以只要动了控制目录的整体权限,就要把整个子目录一起处理,别分文件操作。
控制目录的备份和迁移要留权限日志
备份好做,迁移就有讲究,迁移控制目录时建议保留权限位,Linux 用 cp -a 或 rsync -a,Windows 用带复制 ACL 选项的工具,如果忽略这步,迁移到新机器上虚拟机直接打不开,又要重新配权限,白白增加工作量。
尽量避免频繁切换"运行方式"
有些用户习惯用"以管理员身份运行"Workstation 或 VirtualBox 来绕过权限问题,这是热门的不良习惯,因为这类虚拟化软件一旦以管理员权限运行,虚拟磁盘文件也相当于在最高权限下工作,后续任何排错都失去了参照,尽量用普通账户正常运行,出错了去看 Windows 事件日志或 Linux 的 dmesg 输出,对照虚拟机的配置文件路径排查。
虚拟机控制目录权限相关问答
我的虚拟机在 D 盘,另一个用户打不开,怎么排查?
先检查 D 盘虚拟机目录对目标用户的 NTFS"读取"权限是否开启;再确认虚拟机的 .vmx 文件没有被标记为只读;最后在目标用户会话里尝试直接双击 .vmx 启动,如果系统提示"文件找不到"之类的话,大概率是 ACL 没有正确继承到子文件。
如何正确设置 ESXi 上的虚拟机目录权限?
最佳路径是先在 vCenter 创建自定义角色,只赋予"虚拟机→交互"和"虚拟机→清单"相关权限,然后把该角色分配给需要的用户,作用范围限定在具体的数据存储或目录,不继承到主机根节点,尤其注意不要激活"数据存储浏览器"的删除权限,这是误删 .vmdk 的常见原因之一,根据行业内的普遍做法,给使用者配"虚拟机操作员"加"云平台管理员"组合角色比较常见,前者管虚机开关和快照,后者管存储,如果只有少数几个登录账号,直接改"权限"选项卡上的用户为"只读"即可限定为查看范围内,整体可控。