Windows 配置 Samba 服务并在 Linux 挂载访问
我们常常需要在 Windows 与 Linux 之间传输文件。虽然两者文件系统不同,但通过 SMB/CIFS 协议(Samba),可以轻松实现跨系统的文件共享。本文将详细介绍如何在 Windows 系统上配置 Samba 文件共享,以及在 Linux 上挂载访问。
一、在 Windows 上配置 Samba 服务
Windows 自带对 SMB 协议的支持,只需启用相关功能即可成为 Samba 文件服务器。
1. 启用 SMB 服务组件
如果你使用的是 Windows 10 或 11,找不到“控制面板”,可以使用快捷方式:
Win + R
输入:
control
按下回车即可打开。
控制面板的路径如下:
控制面板 → 程序和功能 → 启用或关闭 Windows 功能
在弹出的“Windows 功能”窗口中,找到 “SMB 1.0/CIFS 文件共享支持”,并勾选其下的三个子项:
- SMB 1.0/CIFS 自动删除客户端
- SMB 1.0/CIFS 服务器
- SMB 1.0/CIFS 客户端
勾选完成后,点击 确定 并等待系统安装组件,安装完成后需要 重启计算机 使设置生效。
这样,Windows 即可同时作为 Samba 客户端和服务端 使用。
2. 配置共享文件夹
- 在任意磁盘创建一个共享文件夹,例如:
D:\winshare
- 右键该文件夹 → 属性 → 共享 → 高级共享。
- 勾选“共享此文件夹”,点击“权限”,根据需要设置为:
- 允许“读取”或“更改”
- 若需要全访问权限,可勾选“完全控制”
- 点击“确定”保存。
3. 设置访问权限
如果共享文件夹设置正确但访问仍失败,可能是 用户权限 配置不当。
进入“安全”选项卡,确认访问用户(或“Everyone”)拥有读取或写入权限。
如果希望限制访问,可创建专门用于共享的本地账户,并在共享和安全权限中仅勾选该用户。
4. 连接不上的排查方法
如果 Linux 端访问 Windows 共享时出现连接失败或无法验证身份等问题,可从以下几个方面排查:
- 确认使用的是锁屏密码,而非 PIN 码
Samba 协议只支持传统密码登录,不支持 Windows 的 PIN 或指纹登录。
→ 若当前账号启用了 PIN,请在“账户设置”中添加一个真实密码用于共享访问。 - 关闭 Windows 防火墙(测试时可暂时关闭)
进入:控制面板 → 系统和安全 → Windows Defender 防火墙 → 启用或关闭防火墙
选择“关闭防火墙(不推荐)”进行测试。
(生产环境建议仅允许文件共享服务通过防火墙。) - 启用网络发现功能
打开路径:控制面板 → 网络和 Internet → 网络和共享中心 → 高级共享设置
在“专用”和“来宾或公用”两类网络下都勾选:
- 启用网络发现
- 启用文件和打印机共享
- 检查文件夹权限设置
确认共享文件夹的用户对文件具有实际读写权限(不仅是共享层面的权限)。完成以上步骤后,Windows 端 Samba 服务就已经可以正常工作了。
二、在 Linux 上挂载 Windows 共享目录
反向场景中,我们希望在 Linux 上访问 Windows 的共享文件夹。Linux 提供了 cifs-utils
工具,用于通过 SMB 协议进行挂载。
1. 安装 CIFS 支持
sudo apt update
sudo apt install cifs-utils -y
该工具包提供了 mount.cifs
命令,用于挂载远程 SMB 共享。
2. 挂载 Windows 共享目录
假设 Windows 的共享路径为:
\\192.168.1.20\winshare
用户名为 user
,密码为 yourpass
。
在 Linux 中执行以下命令:
sudo mkdir -p /mnt/winshare
sudo mount -t cifs //192.168.1.20/winshare /mnt/winshare -o username=user,password=yourpass,vers=3.0
注意:
vers=3.0
表示使用 SMB 3.0 协议。如果出现版本兼容问题,可以尝试:vers=2.0
或:
vers=1.0
挂载完成后,即可通过 /mnt/winshare
路径访问 Windows 文件。
3. 设置开机自动挂载(可选)
为了让系统启动后自动挂载 Windows 共享目录,可编辑 /etc/fstab
:
sudo nano /etc/fstab
在文件末尾添加:
# 挂载 Windows 共享
//192.168.1.20/winshare /mnt/winshare cifs username=user,password=yourpass,vers=3.0 0 0
保存后执行:
sudo mount -a
如果无报错,即表示配置成功。下次启动系统时,该共享会自动挂载。
三、总结
通过以上步骤,我们完成了:
- Windows 端启用 SMB 服务并共享文件夹
- Linux 端挂载访问 Windows 共享目录
Samba 实际上是 SMB 协议的实现者,使得不同系统之间能够无缝共享文件。
只要设置正确,Linux 与 Windows 可以像本地磁盘一样访问彼此文件,大大提升跨平台协作的效率。