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. 配置共享文件夹

  1. 在任意磁盘创建一个共享文件夹,例如:
    D:\winshare
  2. 右键该文件夹 → 属性共享高级共享
  3. 勾选“共享此文件夹”,点击“权限”,根据需要设置为:
    • 允许“读取”或“更改”
    • 若需要全访问权限,可勾选“完全控制”
  4. 点击“确定”保存。

3. 设置访问权限

如果共享文件夹设置正确但访问仍失败,可能是 用户权限 配置不当。

进入“安全”选项卡,确认访问用户(或“Everyone”)拥有读取或写入权限。

如果希望限制访问,可创建专门用于共享的本地账户,并在共享和安全权限中仅勾选该用户。

4. 连接不上的排查方法

如果 Linux 端访问 Windows 共享时出现连接失败或无法验证身份等问题,可从以下几个方面排查:

  1. 确认使用的是锁屏密码,而非 PIN 码
    Samba 协议只支持传统密码登录,不支持 Windows 的 PIN 或指纹登录。
    → 若当前账号启用了 PIN,请在“账户设置”中添加一个真实密码用于共享访问。
  2. 关闭 Windows 防火墙(测试时可暂时关闭)
    进入:

    控制面板 → 系统和安全 → Windows Defender 防火墙 → 启用或关闭防火墙

    选择“关闭防火墙(不推荐)”进行测试。
    (生产环境建议仅允许文件共享服务通过防火墙。)

  3. 启用网络发现功能
    打开路径:

    控制面板 → 网络和 Internet → 网络和共享中心 → 高级共享设置

    在“专用”和“来宾或公用”两类网络下都勾选:

    • 启用网络发现
    • 启用文件和打印机共享
  4. 检查文件夹权限设置
    确认共享文件夹的用户对文件具有实际读写权限(不仅是共享层面的权限)。完成以上步骤后,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 可以像本地磁盘一样访问彼此文件,大大提升跨平台协作的效率。

THE END