服务器与大带宽专家 · 持牌IDC/CDN/ISP服务商
简米科技官网JIANMI TECH
资讯 2026-11-06 简米科技 4,301 字 10 分钟阅读

Ubuntu虚拟机如何共享文件夹?Ubuntu磁盘映射怎么设置

导读Ubuntu虚拟机怎么共享文件夹:先搞懂这3种映射方式在Ubuntu虚拟机中实现磁盘文件夹共享映射,核心方案有VirtualBox增强功能、VMware共享文件夹和Samba网络映射三种,其中VirtualBox和VMware自带功能配置最简单,5分钟内就能完成双向访问,很多人在Windows主机上跑Ubunt……

Ubuntu虚拟机怎么共享文件夹:先搞懂这3种映射方式

在Ubuntu虚拟机中实现磁盘文件夹共享映射,核心方案有VirtualBox增强功能、VMware共享文件夹和Samba网络映射三种,其中VirtualBox和VMware自带功能配置最简单,5分钟内就能完成双向访问。

很多人在Windows主机上跑Ubuntu虚拟机,卡在文件传输这一步,先说说三种方案各自的适用场景,你再对号入座。

  • VirtualBox增强功能(Guest Additions):适合VirtualBox用户,支持双向剪贴板和拖拽,共享文件夹挂载在Ubuntu的/media目录下。
  • VMware共享文件夹(Shared Folders):适合VMware Workstation用户,通过vmhgfs-fuse挂载,性能稳定,支持开机自动挂载。
  • Samba网络映射:适合需要多设备同时访问的场景,比如局域网内手机和另一台电脑也要读写同一份文件,本质上是走网络协议而非虚拟化通道。

选择依据很简单:如果你只是让虚拟机里能访问Windows的某个目录,用前两种;如果你要在宿主机和虚拟机之间频繁双向读写大量文件,而且要跨设备共享,用Samba更灵活。

文末我会提一下虚拟机和宿主机之间互通最常见的权限陷阱,那地方是相当一部分人卡壳的根源。

VirtualBox共享文件夹设置步骤详解

VirtualBox的共享文件夹功能依赖增强功能驱动,分三步走。

第一步:安装增强功能

启动Ubuntu虚拟机后,在菜单栏选择“设备 → 安装增强功能”,Ubuntu桌面版会自动挂载光盘镜像,打开终端执行:

sudo apt update
sudo apt install build-essential dkms linux-headers-$(uname -r)
cd /media/用户名/VBOXADDITIONS_版本号
sudo ./VBoxLinuxAdditions.run

安装完成后重启虚拟机,这一步漏掉会导致后面挂载失败,而且报错信息容易误导人它可能提示“权限不足”,实际是内核模块没编出来。

第二步:配置共享文件夹

关闭虚拟机,在当前虚拟机设置里选“共享文件夹”,点击右侧加号:

  • 文件夹路径:选择Windows宿主机上要共享的目录
  • 共享名称:取个简短名称,比如share,后面挂载要用
  • 勾选“自动挂载”和“固定分配”

固定分配意味着这个共享永久生效,临时分配会在虚拟机重启后消失,多数的生产环境配置都选固定分配。

第三步:挂载并验证访问

启动虚拟机,打开终端执行:

sudo mkdir -p /mnt/share
sudo mount -t vboxsf share /mnt/share

如果没有报错,说明挂载成功,检查一下:

df -h | grep share
ls /mnt/share

能列出Windows目录里的文件就大功告成,如果想开机自动挂载,编辑/etc/fstab,追加一行:

share /mnt/share vboxsf defaults,uid=1000,gid=1000,dmode=775,fmode=664 0 0

uid=1000指的是Ubuntu第一个账户(通常是创建虚拟机时设置的用户),这样挂载后当前用户就能直接读写,不用每次都用sudo。

VirtualBox共享文件夹权限设置与故障排查

权限问题是VirtualBox共享方案里最耗时间的一环,我梳理了几类高频报错,你对照排查。

挂载时报错“No such device or address”

说明增强功能的vboxsf模块没加载,先手动加载:

sudo modprobe vboxsf

如果提示模块不存在,重新执行安装脚本:

sudo /etc/init.d/vboxadd setup
sudo systemctl restart vboxadd-service

挂载成功后没写权限

终端输出ls -l /mnt/share会看到owner是root,这是VirtualBox默认行为,因为共享目录实际归属宿主机用户,按前面的fstab配置指定uid和gid即可,或者手动改:

sudo chmod 755 /mnt/share
sudo chown 用户名:用户名 /mnt/share

在这个问题上有个行业共识:自动挂载的共享目录默认属主是root,不显式指定uid的话,任何Ubuntu本地用户都只能读不能写,这是虚拟机共享文件夹教程里被问得最多的点,也是初学者最容易卡住的地方。

中文文件名乱码

VirtualBox共享文件夹默认按UTF-8编码处理,如果Windows端的文件名用了GBK编码,Ubuntu里会显示乱码,解决方式是挂载时加入iocharset参数:

sudo mount -t vboxsf -o iocharset=utf8 share /mnt/share

这只能部分缓解,彻底的方案是在Windows端把区域设置改到“Beta版使用UTF-8”,或者在Windows里统一用英文文件名。

VMware与VirtualBox共享文件夹方案对比

VMware Workstation的共享文件夹机制和VirtualBox不太一样,VMware用vmhgfs-fuse实现用户态文件系统挂载,VirtualBox是内核模块直接挂载。

对比维度 VMware共享文件夹 VirtualBox共享文件夹
挂载方式 vmhgfs-fuse(用户态FUSE) vboxsf内核模块
默认挂载点 /mnt/hgfs /media/用户名
自动挂载配置 fstab里写mount命令 fstab里写vboxsf
中文文件名支持 原生支持UTF-8 需要iocharset参数
内核升级后稳定性 依赖open-vm-tools更新 需要重新编译vboxsf

如果你用VMware,步骤如下:

sudo apt install open-vm-tools open-vm-tools-desktop

然后在VMware菜单里选“虚拟机 → 设置 → 选项 → 共享文件夹”,添加Windows目录,Ubuntu里即可在/mnt/hgfs下看到:

ls /mnt/hgfs

VMware的vmhgfs-fuse一个显著特点是:它天然支持符号链接和权限继承,比VirtualBox的实现更接近原生文件系统,Ubuntu升级内核后,VirtualBox的vboxsf驱动经常需要重新编译,VMware这边open-vm-tools一般跟随内核走,影响较小。

Samba方式:跨设备文件夹共享的替代选择

如果你的Ubuntu虚拟机还装了容器服务或开发环境,需要让Windows宿主机访问虚拟机内的目录,这时反向共享就用到Samba了,如果你是双机互访,即Windows上的文件让Ubuntu虚拟机直接读取远程Windows共享目录,用mount -t cifs会比VirtualBox共享更省事,特别是共享目录还在NAS上时。

Ubuntu作为Samba服务器

在Ubuntu侧安装并配置Samba:

sudo apt install samba
sudo mkdir -p /srv/samba/win_share
sudo chown 用户名:用户名 /srv/samba/win_share

编辑/etc/samba/smb.conf,文件末尾追加:

[win_share]
   path = /srv/samba/win_share
   browseable = yes
   writable = yes
   valid users = 用户名

设置Samba账户密码(与系统密码可不同):

sudo smbpasswd -a 用户名
sudo systemctl restart smbd

Windows侧按Win+R输入\\虚拟机IP\win_share即可访问,想获得固定IP格式的访问路径,可以在虚拟机里把网络设置为桥接模式,然后在路由器上做IP和MAC绑定。

Ubuntu作为Samba客户端

反过来,如果Windows共享了一个目录,Ubuntu直接挂载CIFS:

sudo apt install cifs-utils
sudo mkdir -p /mnt/win_share
sudo mount -t cifs //windows主机IP/共享名 /mnt/win_share -o username=windows用户名,vers=3.0

需要输入Windows密码,按提示回车即可,注意vers=3.0是为了兼容Win10及以上系统的默认SMB协议版本,老旧系统可能要改成vers=2.0。

Q&A:Ubuntu虚拟机共享文件夹常见问题

问:Ubuntu虚拟机怎么共享文件夹,为什么我的VirtualBox里“共享文件夹”选项是灰色的?

灰色说明当前虚拟机面板里选择的是虚拟机而非正运行的系统,在管理器中选中对应的虚拟机条目,再打开“设置”才能配置共享文件夹,运行中的虚拟机里只能临时挂载,不能新增固定分配。

问:挂载共享文件夹时提示“mount: only root can do that”,怎么处理?

普通用户没有mount权限,这是Linux安全机制的基本设定,要么命令前加sudo,要么按fstab方式配置后由系统自动挂载。

问:VMware里设置了共享文件夹但/mnt/hgfs为空?

先确认是否已安装open-vm-tools和open-vm-tools-desktop,然后在虚拟机的可移动设备里重新连接一次共享文件夹驱动,终端里执行vmware-hgfsclient可以查看宿主机配置了哪些共享路径,如果什么都不输出说明VMware侧的配置没生效。

整体来看,VirtualBox和VMware自带的共享文件夹功能覆盖了绝大多数个人开发和生产场景,Samba则适合跨设备网络共享需求,核心是先确认你的虚拟机软件类型,再选对应方案,挂载成功后把权限和自动挂载配置好,后续使用就顺畅了,Ubuntu虚拟机共享文件夹本身不复杂,走一遍流程就能形成固定模板。

分享本文
本文为 简米科技官网 原创,已由运维技术专家审核。转载请注明来源:原文链接
售前咨询 服务热线 售后 邮箱