前言

日常使用 VMware 运行 Ubuntu Server 时,经常需要在 Windows 宿主机和虚拟机之间传输代码、配置文件、安装包。VMware 自带的 /mnt/hgfs 共享虽然简单,但存在大文件读写卡顿、Linux 文件权限丢失、稳定性差等问题。Samba 基于局域网文件共享协议,速度稳定、权限可控,适合长期开发和运维场景使用。本文完整记录从零配置 Samba 的全部步骤与排错方案。

两种文件共享方案对比

方案 优点 缺点 适用场景
VMware hgfs 共享 配置极简,一键开启 大文件 IO 速度慢、Linux 权限失效、偶尔挂载丢失 临时传输少量小文件
Samba 局域网共享 传输速度稳定、读写权限自定义、Windows 原生网络访问 需要手动配置服务与账号 长期开发、大量文件互传、项目代码同步

本文重点讲解推荐方案:Samba 局域网文件共享。

一、安装 Samba 服务

1. 更新软件源并安装

1
2
sudo apt update
sudo apt install samba samba-common-bin -y

二、创建共享目录并配置权限

1. 新建共享文件夹

以用户 rayho 为例,在家目录创建 share 共享目录:

1
2
3
4
5
mkdir -p ~/share
# 开放完整读写权限,避免 Windows 访问报错
chmod 777 ~/share
# 将目录归属设置为当前登录用户
sudo chown $USER:$USER ~/share

2. 为 Samba 单独设置访问密码

Samba 不会复用系统登录密码,必须单独创建凭证:

1
sudo smbpasswd -a rayho

执行后连续输入两次自定义密码,该密码用于 Windows 端登录共享文件夹。

三、修改核心配置文件

1. 编辑配置文件

1
sudo nano /etc/samba/smb.conf

将光标拉到文件最底部,粘贴以下共享配置:

1
2
3
4
5
6
7
8
[myshare]
path = /home/rayho/share
browseable = yes
read only = no
writable = yes
guest ok = no
create mask = 0644
directory mask = 0755

参数说明

参数 说明
[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
2
sudo systemctl restart smbd nmbd
sudo systemctl enable smbd nmbd

3. 放行防火墙端口

1
2
sudo ufw allow samba
sudo ufw reload

五、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. 映射永久网络驱动器(推荐)

  1. 打开「此电脑」,顶部点击「映射网络驱动器」
  2. 文件夹输入:\\虚拟机IP\myshare
  3. 勾选「登录时重新连接」,点击完成
  4. 输入账号密码后,此电脑会永久显示该共享盘

六、常见故障排查

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
2
guest ok = yes
guest account = rayho

保存后重启服务:

1
sudo systemctl restart smbd nmbd

补充:VMware hgfs 简易方案

如果只是临时传输少量小文件,可使用 VMware 自带共享:

1
sudo apt install open-vm-tools -y

VMware 操作:虚拟机设置 → 选项 → 共享文件夹 → 添加 Windows 本地目录,选择「总是启用」。虚拟机内自动挂载至 /mnt/hgfs/。

方案局限

  • 大文件批量传输读写卡顿,IO 性能差
  • Windows 复制到虚拟机的文件会丢失 Linux 权限与软链接特性
  • 虚拟机重启后偶尔出现挂载失效

总结

  1. 长期开发、大量文件同步优先选择 Samba 共享,稳定性与速度最优
  2. Samba 密码独立于系统用户,配置完成后务必放行防火墙并重启服务
  3. Windows 访问依赖虚拟机内网 IP,推荐映射网络驱动器简化日常使用
  4. 遇到连接或权限问题,优先检查配置文件语法、目录权限、防火墙规则三点