VMware Ubuntu Server 搭建 Samba 共享文件夹,Windows 与虚拟机双向互传文件
前言
日常使用 VMware 运行 Ubuntu Server 时,经常需要在 Windows 宿主机和虚拟机之间传输代码、配置文件、安装包。VMware 自带的 /mnt/hgfs 共享虽然简单,但存在大文件读写卡顿、Linux 文件权限丢失、稳定性差等问题。Samba 基于局域网文件共享协议,速度稳定、权限可控,适合长期开发和运维场景使用。本文完整记录从零配置 Samba 的全部步骤与排错方案。
两种文件共享方案对比
| 方案 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| VMware hgfs 共享 | 配置极简,一键开启 | 大文件 IO 速度慢、Linux 权限失效、偶尔挂载丢失 | 临时传输少量小文件 |
| Samba 局域网共享 | 传输速度稳定、读写权限自定义、Windows 原生网络访问 | 需要手动配置服务与账号 | 长期开发、大量文件互传、项目代码同步 |
本文重点讲解推荐方案:Samba 局域网文件共享。
一、安装 Samba 服务
1. 更新软件源并安装
1 | sudo apt update |
二、创建共享目录并配置权限
1. 新建共享文件夹
以用户 rayho 为例,在家目录创建 share 共享目录:
1 | mkdir -p ~/share |
2. 为 Samba 单独设置访问密码
Samba 不会复用系统登录密码,必须单独创建凭证:
1 | sudo smbpasswd -a rayho |
执行后连续输入两次自定义密码,该密码用于 Windows 端登录共享文件夹。
三、修改核心配置文件
1. 编辑配置文件
1 | sudo nano /etc/samba/smb.conf |
将光标拉到文件最底部,粘贴以下共享配置:
1 | [myshare] |
参数说明
| 参数 | 说明 |
|---|---|
[myshare] |
Windows 网络列表展示的共享名称,可自定义 |
path |
虚拟机内共享文件夹的绝对路径 |
read only = no |
关闭只读,允许 Windows 上传、修改、删除文件 |
guest ok = no |
关闭访客免密访问,必须输入账号密码(更安全) |
create mask / directory mask |
控制 Windows 新建文件/文件夹在 Linux 内的默认权限 |
保存:Ctrl+O → 回车 → Ctrl+X 退出。
四、校验配置并启动服务
1. 检查配置语法
1 | testparm |
输出无报错代表配置文件格式正常。
2. 重启服务并设置开机自启
Samba 依赖 smbd(文件共享)与 nmbd(局域网主机发现)两个服务:
1 | sudo systemctl restart smbd nmbd |
3. 放行防火墙端口
1 | sudo ufw allow samba |
五、Windows 访问 Samba 共享
1. 获取虚拟机内网 IP
1 | ip a |
找到网卡 ens33 对应的 inet 字段,示例地址:192.168.137.129。
2. 快速打开共享目录
按下 Win + R,输入:
1 | \\虚拟机IP\myshare |
示例:
1 | \\192.168.137.129\myshare |
回车后弹出登录窗口:
- 用户名:Ubuntu 用户名(如
rayho) - 密码:
smbpasswd设置的 Samba 密码
3. 映射永久网络驱动器(推荐)
- 打开「此电脑」,顶部点击「映射网络驱动器」
- 文件夹输入:
\\虚拟机IP\myshare - 勾选「登录时重新连接」,点击完成
- 输入账号密码后,此电脑会永久显示该共享盘
六、常见故障排查
1. Windows 无法找到共享主机
- 虚拟机网卡网络模式设置为 NAT,不要使用仅主机模式
- 检查服务运行状态:
systemctl status smbd - 临时关闭 Windows 专用网络防火墙后重试
2. 能看到文件夹但无法写入
- 重新给共享目录开放权限:
chmod 777 ~/share - 确认
smb.conf中read only = no配置无误,重启服务生效
3. 账号密码持续验证失败
- 重新执行
sudo smbpasswd -a rayho重置 Samba 密码 - Windows 登录框仅填写纯用户名,不要携带 IP 或域名前缀
4. 开启免密访客访问(可选)
安全性较低,仅适用于封闭内网环境。修改 smb.conf 共享块:
1 | guest ok = yes |
保存后重启服务:
1 | sudo systemctl restart smbd nmbd |
补充:VMware hgfs 简易方案
如果只是临时传输少量小文件,可使用 VMware 自带共享:
1 | sudo apt install open-vm-tools -y |
VMware 操作:虚拟机设置 → 选项 → 共享文件夹 → 添加 Windows 本地目录,选择「总是启用」。虚拟机内自动挂载至 /mnt/hgfs/。
方案局限
- 大文件批量传输读写卡顿,IO 性能差
- Windows 复制到虚拟机的文件会丢失 Linux 权限与软链接特性
- 虚拟机重启后偶尔出现挂载失效
总结
- 长期开发、大量文件同步优先选择 Samba 共享,稳定性与速度最优
- Samba 密码独立于系统用户,配置完成后务必放行防火墙并重启服务
- Windows 访问依赖虚拟机内网 IP,推荐映射网络驱动器简化日常使用
- 遇到连接或权限问题,优先检查配置文件语法、目录权限、防火墙规则三点
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 RayHo's Blog!