Windows 10 与 Ubuntu 22.04 通过 Samba 共享文件夹

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 查看。

成功后进行一次双向验证:

  1. Windows 在共享中创建测试文件夹和文本文件。
  2. Ubuntu 打开 /srv/samba/DataShare,确认文件出现并尝试编辑。
  3. Windows 重新打开文件,确认可以看到修改后的内容。

两台电脑操作的是 Ubuntu 上的同一份文件。Windows 删除共享中的文件也会删除 Ubuntu 上对应的文件,重要数据需要另行备份。

8. 映射为 Windows 网络驱动器

为了方便日常使用,可以将共享映射为 Z: 盘:

  1. 打开"此电脑"。
  2. 在顶部"计算机"选项卡中选择"映射网络驱动器"。
  3. 驱动器选择一个未占用的盘符,例如 Z:。
  4. 文件夹填写 \\10.23.69.238\DataShare。
  5. 勾选"登录时重新连接"。
  6. 如果需要指定共享账户,勾选"使用其他凭据连接"。
  7. 点击"完成",按提示输入 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。
  • 同时编辑同一个文件前,先协调操作,避免覆盖彼此的修改。
  • 传输速度取决于网络带宽、无线信号和磁盘性能,大文件传输可优先使用有线连接。

参考资料

相关推荐
缘友一世2 小时前
GLM5.3 CyberSec w4A16本地部署[2]:并行策略与 PP 切分
ubuntu·vllm·glm5.3 cybersec
QMCY_jason2 小时前
ubuntu x86_64架构的编译 aarch64架构的程序
linux·运维·ubuntu
百事牛科技3 小时前
如何创建7Z压缩包?Windows下7-Zip操作方法
windows·7-zip
.道阻且长.4 小时前
Linux软件包管理器
linux·运维·ubuntu·职场和发展·centos
池央4 小时前
Windows本地部署Qwen3.8实战:LM Studio、Cherry Studio、远程API与Token鉴权
windows
陈让然14 小时前
WSL 桥接设置静态IP(快速)
linux·网络·ubuntu
泡海椒16 小时前
JQuick-SQL 快速开始:注册内存表并执行查询
数据库·windows·sql
钱栈up19 小时前
耳机音效不对,我顺手查了系统更新,结果挖出个崩溃了整天的服务
windows·shell