Windows 10 与 Ubuntu 22.04 通过 Samba 共享文件夹
声明:下面过程均以在博主电脑上经过测试可用
在 Windows 笔记本和 Ubuntu 台式机之间传输数据,可以在 Ubuntu 上搭建 Samba 文件共享服务,再通过 Windows 文件资源管理器直接访问。配置完成后,两台电脑都能在同一个文件夹中读取、写入和管理文件。
本文是一份配置操作指南。具体连通性、读写权限和传输速度,需要在实际设备上验证。
1. 环境与目标
| 设备 | 操作系统 | IP 地址 | 用途 |
|---|---|---|---|
| 笔记本 | Windows 10 | 10.23.69.237 |
访问共享文件夹 |
| 台式机 | Ubuntu 22.04 | 10.23.69.238 |
提供共享文件夹 |
共享设置如下:
| 项目 | 内容 |
|---|---|
| Ubuntu 本地目录 | /srv/samba/DataShare |
| Samba 共享名称 | DataShare |
| Windows 访问路径 | \\10.23.69.238\DataShare |
| 认证方式 | Ubuntu 用户名 + 单独设置的 Samba 密码 |
| 权限 | 指定用户可读写,关闭匿名访问 |
两台设备需要能够通过网络互相访问。IP 地址看起来接近,并不代表网络一定互通;还需要考虑子网掩码、路由、防火墙和无线网络客户端隔离等设置。
2. 在 Ubuntu 上安装 Samba
以下 Linux 命令均在 Ubuntu 台式机的终端执行。按 Ctrl + Alt + T 打开终端,使用平时登录 Ubuntu 的普通用户操作;需要管理员权限的命令已经添加 sudo。
bash
sudo apt update
sudo apt install samba -y
Samba 提供 SMB 文件共享服务,Windows 可以通过网络路径直接访问,无须另装文件传输客户端。
3. 创建共享目录
bash
sudo mkdir -p /srv/samba/DataShare
sudo chown "$USER":"$(id -gn)" /srv/samba/DataShare
sudo chmod 750 /srv/samba/DataShare
命令含义:
mkdir -p:创建共享目录及缺失的父目录。chown:将共享目录的所有者和所属组设为当前用户及其主组。chmod 750:所有者可读写和进入目录,所属组可读取和进入,其他用户无权限。
这里的 $USER 会自动展开为当前用户名,$(id -gn) 会取得当前用户的主组名称。不要先使用 sudo -i 切换成 root 后再执行这一组命令。
Ubuntu 端可在文件管理器中按 Ctrl + L,输入以下路径打开目录:
text
/srv/samba/DataShare
4. 创建 Samba 登录凭据
先查看当前 Ubuntu 用户名:
bash
whoami
假设输出为 wxy,后续配置中的用户名就填写 wxy。请以自己电脑的实际输出为准。
为当前用户设置 Samba 密码:
bash
sudo smbpasswd -a "$USER"
按提示输入两次密码。终端输入密码时不显示字符或星号,这是正常现象。
Samba 密码与 Ubuntu 系统登录密码分别管理,可以不同。Windows 连接时应使用这里设置的密码,而不是 Windows 登录密码或 PIN。
5. 配置共享文件夹
5.1 备份配置文件
首次修改前执行:
bash
sudo cp -a /etc/samba/smb.conf /etc/samba/smb.conf.bak
如果已有同名备份,请先保留原备份或改用其他备份文件名,避免覆盖。
5.2 编辑配置
bash
sudo nano /etc/samba/smb.conf
在文件末尾添加以下内容;如果已经存在 [DataShare],请修改原配置段,不要重复添加:
ini
[DataShare]
path = /srv/samba/DataShare
browseable = yes
read only = no
guest ok = no
valid users = wxy
create mask = 0640
directory mask = 0750
将 wxy 替换成 whoami 返回的实际用户名。 配置文件中的用户名不会自动替换,请不要在此处直接填写 $USER。
| 配置项 | 作用 |
|---|---|
[DataShare] |
共享名称,对应 Windows 网络路径的最后一段 |
path |
Ubuntu 上实际存储文件的目录 |
browseable = yes |
允许共享出现在 SMB 共享列表中;不保证 Windows"网络"页面自动发现主机 |
read only = no |
允许写入,仍受 Linux 文件系统权限限制 |
guest ok = no |
不允许匿名访问 |
valid users = wxy |
仅允许指定用户登录此共享 |
create mask = 0640 |
限制通过 Samba 新建文件的权限位 |
directory mask = 0750 |
限制通过 Samba 新建目录的权限位 |
create mask 和 directory mask 是权限掩码,不代表所有新建文件、目录最终一定具有完全相同的权限。
在 nano 中按 Ctrl + O、回车保存,再按 Ctrl + X 退出。
5.3 检查配置并启动服务
bash
testparm -s
确认没有配置错误后执行:
bash
sudo systemctl enable --now smbd
sudo systemctl restart smbd
查看运行状态:
bash
systemctl is-active smbd
预期输出:
text
active
6. 检查 Ubuntu 防火墙
bash
sudo ufw status
如果显示 Status: active,仅允许 Windows 笔记本连接 TCP 445 端口:
bash
sudo ufw allow from 10.23.69.237 to any port 445 proto tcp
如果显示 Status: inactive,无须添加 UFW 放行规则。其他网络设备或防火墙仍可能影响连接。
本文直接通过 IP 访问共享,使用 TCP 445 即可,不依赖网络邻居自动发现。
7. Windows 10 访问共享文件夹
在 Windows 笔记本上按 Win + R,输入:
text
\\10.23.69.238\DataShare
回车后,在凭据窗口填写:
| 字段 | 填写内容 |
|---|---|
| 用户名 | Ubuntu 用户名,例如 wxy |
| 密码 | 使用 smbpasswd 设置的 Samba 密码 |
如果 Windows 默认使用本机账户,点击"更多选择 → 使用其他账户",再输入上述凭据。可以勾选"记住我的凭据"。
如果账户被自动附加了 Windows 域或计算机名前缀而导致认证失败,可尝试使用 UBUNTU主机名\用户名;Ubuntu 主机名可在 Ubuntu 终端执行 hostname 查看。
成功后进行一次双向验证:
- Windows 在共享中创建测试文件夹和文本文件。
- Ubuntu 打开
/srv/samba/DataShare,确认文件出现并尝试编辑。 - Windows 重新打开文件,确认可以看到修改后的内容。
两台电脑操作的是 Ubuntu 上的同一份文件。Windows 删除共享中的文件也会删除 Ubuntu 上对应的文件,重要数据需要另行备份。
8. 映射为 Windows 网络驱动器
为了方便日常使用,可以将共享映射为 Z: 盘:
- 打开"此电脑"。
- 在顶部"计算机"选项卡中选择"映射网络驱动器"。
- 驱动器选择一个未占用的盘符,例如
Z:。 - 文件夹填写
\\10.23.69.238\DataShare。 - 勾选"登录时重新连接"。
- 如果需要指定共享账户,勾选"使用其他凭据连接"。
- 点击"完成",按提示输入 Samba 用户名和密码。
映射后可以像打开普通磁盘一样打开 Z:。共享文件仍存储在 Ubuntu 上,不会因为映射而自动同步一份到笔记本。
9. 常见问题排查
9.1 无法打开网络路径
在 Windows 的 PowerShell 中执行:
powershell
Test-NetConnection 10.23.69.238 -Port 445
重点查看:
text
TcpTestSucceeded : True
True:TCP 445 可以连接,继续排查共享名称、账户和目录权限。False:检查 Ubuntu 是否开机、IP 是否变化、Samba 是否运行,以及防火墙和网络隔离设置。
也可辅助执行:
powershell
ping 10.23.69.238
ping 超时不一定代表 SMB 无法访问,因为网络可能禁止 ICMP;应结合 TCP 445 测试判断。
在 Ubuntu 上检查:
bash
systemctl status smbd --no-pager
sudo ss -lntp 'sport = :445'
9.2 用户名或密码错误
确认输入的是 Ubuntu 用户名和 Samba 密码。必要时在 Ubuntu 上重新设置密码:
bash
sudo smbpasswd -a "$USER"
如果 Windows 已保存错误凭据,打开"控制面板 → 凭据管理器 → Windows 凭据",删除对应 10.23.69.238 的凭据,再重新连接。先关闭相关共享窗口,必要时断开该服务器已有的网络驱动器连接。
9.3 能读取但不能写入
Samba 允许写入和 Linux 文件系统允许写入,两者都需要满足。
检查共享目录权限:
bash
ls -ld /srv/samba/DataShare
确认目录所有者为配置中的用户,并检查:
ini
read only = no
valid users = wxy
如果只有某些旧文件无法修改,应单独检查这些文件的所有者和权限。不要为了方便直接将整个目录设置为 777。
9.4 Ubuntu 重启或休眠后无法访问
Ubuntu 需要保持开机、联网且未休眠。服务开机自启由以下命令设置:
bash
sudo systemctl enable smbd
如果设备使用 DHCP,重启后 IP 可能发生变化。可以在有管理权限的路由器或 DHCP 服务端设置地址保留;公司网络应联系管理员处理,避免自行设置造成 IP 冲突。
9.5 Windows"网络"列表中看不到 Ubuntu
自动发现与直接访问共享是两回事。即使"网络"列表中不显示 Ubuntu,也可以直接在文件资源管理器地址栏输入:
text
\\10.23.69.238\DataShare
本方案不需要启用 SMB 1.0,也不需要开启不安全的来宾登录。
10. 日常使用说明
- Windows 上传:将笔记本文件复制到共享目录。
- Windows 下载:将共享中的文件复制到笔记本本地磁盘。
- Ubuntu 操作:直接访问
/srv/samba/DataShare。 - 同时编辑同一个文件前,先协调操作,避免覆盖彼此的修改。
- 传输速度取决于网络带宽、无线信号和磁盘性能,大文件传输可优先使用有线连接。