Samba文件共享

Copyright © Quectel Wireless Solutions Co., Ltd. 2026. All rights reserved.


概述

Samba 是在 Linux 系统上构建文件共享和访问控制服务的常用工具,利用 SMB 协议实现局域网内不同设备之间的文件互访。通过在本地部署 Samba,可以方便地向 Windows、Linux 或 macOS 客户端提供共享目录,实现跨平台的文件传输与协作。

本文档介绍在 Quectel Pi(M1 / L1)Debian 系统下配置 Samba 文件共享服务,使 Windows 电脑能直接访问设备的共享文件夹。

准备工作

  1. 确认设备环境:

    • 设备(M1 或 L1)可正常联网

    • Windows 主机和设备处于同一局域网内

    • M1 在 GNOME 图形环境下验证。L1 已在 Weston 图形环境下完成验证,Samba 文件共享不依赖 GNOME 桌面。

  2. 检查网络连通:

    • 在终端执行 ping 8.8.8.8,若能看到返回的时间信息,则说明网络正常。

  3. 登录开发板(L1 专属):

    • 若本地调试环境已可用,也可通过 ADB 进入系统;本文以串口进入为例。

    • 串口连接方式可参考:debug_uart.md

    • L1 默认使用 root 用户登录,默认无密码。

安装 Samba 服务

Samba 是 Debian/Linux 上用于和 Windows 系统共享文件的服务程序。

  1. 更新软件包列表:

sudo apt-get update

💡 若开发板当前无法直接访问 Debian 软件源,可先在主机下载 arm64.deb 安装包,再拷贝到开发板后使用 dpkg -i 安装;至少需要准备 samba-commonsamba-common-binsambasmbclient,若版本不一致,还需一并补齐对应版本的依赖库。

  1. 安装 Samba 及客户端工具:

sudo apt-get install samba
sudo apt-get install smbclient

💡 samba:服务器端软件,用于提供共享服务;smbclient:客户端工具,可用于测试连接是否成功。

  1. 确认 Samba 安装成功:

smbd --version
smbclient --version
sudo samba -V

创建共享文件夹

💡 本文以用户 q 为示例说明 Samba 共享配置。若系统中尚未创建该用户,可改为已有用户(如 root),或先创建普通用户后再继续配置。

  1. 创建共享目录:

mkdir -p /home/q/share
  1. 创建测试文件:

touch /home/q/share/test.txt
  1. 修改权限:

chmod -R 777 /home/q/share

配置 Samba 服务

  1. 打开配置文件:

sudo vim /etc/samba/smb.conf
sudo nano /etc/samba/smb.conf
  1. 滚动到文件末尾,添加以下内容:

[myshare]
    comment = My Shared Folder
    browseable = yes
    path = /home/q/share
    create mask = 0777
    directory mask = 0777
    valid users = q
    force user = q
    force group = q
    public = no
    guest ok = no
    writable = yes
    available = yes

💡 [myshare]——Windows 客户端访问时看到的共享名称。path——共享目录的实际路径。create mask / directory mask——新建文件/文件夹的默认权限。valid users——允许访问 Samba 服务器的合法用户,此处示例用户为 q,实际使用时请替换为开发板上的真实用户。writable = yes——允许客户端在此目录中创建、修改和删除文件。

💡 M1public = yesL1public = noguest ok = no。请根据实际需求选择。若需允许匿名访问,可使用 public = yes(M1 方式);若需禁止匿名/访客访问,建议保留 public = no, guest ok = no(L1 方式)。

设置 Samba 用户和密码

Samba 的登录用户需要单独设置密码。以系统用户 q 为例:

sudo smbpasswd -a q

需输入两次密码确认(此密码将在 Windows 访问时使用)。

💡 若使用 root 作为 Samba 登录用户(L1 默认场景),可将上述命令替换为:sudo smbpasswd -a root

重启 Samba 服务使配置生效

sudo systemctl restart smbd

设置 Samba 开机自动启动:

sudo systemctl enable smbd

添加防火墙规则

#添加放行端口
sudo iptables -A INPUT -p tcp -m tcp --dport 445 -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 139 -j ACCEPT
#设置客户端IP允许通过防火墙
sudo iptables -A INPUT -p icmp --icmp-type echo-request -s 192.xx.xx.xx -j ACCEPT
#保存规则
sudo sh -c 'iptables-save > /etc/iptables/rules.v4'

查看设备 IP 地址

hostname -I

实际使用时,请以开发板当前查询到的 IP 地址为准。

在设备上访问 Windows 共享文件夹

除在 Windows 电脑上访问设备的共享目录外,也可以反向从设备访问 Windows 电脑上已共享的文件夹。

Windows 端创建共享目录

  1. 在 Windows 电脑上新建一个用于共享的文件夹,例如:

device_share
  1. 右键该文件夹,选择"属性" → “共享” → “高级共享”。

  2. 勾选"共享此文件夹",共享名设置为:

    • L1 设备:建议为 l1_share

    • M1 设备:建议为 m1_share

m1_share    (M1)
l1_share    (L1)
  1. 点击"权限",为需要访问该共享目录的 Windows 用户添加读取或写入权限。

  2. 切换到"安全"选项卡,确认该 Windows 用户在 NTFS 权限中也具备对应的读取或写入权限。

💡 Windows 共享权限和"安全"权限需要同时允许访问,否则设备侧可能能够看到共享名,但无法进入目录或创建文件。

Windows 端确认网络与防火墙

  1. 确认 Windows 电脑与设备在同一可达网络内。本文实测 Windows 主机 IP 为 10.66.84.17(M1 环境示例)。

  2. 在 Windows 的"高级共享设置"中开启:

    • 网络发现

    • 文件和打印机共享

  3. 确认 Windows 防火墙允许"文件和打印机共享(SMB-In)"。

设备端检查连通性

在设备终端中执行以下命令,确认能访问 Windows 主机的 SMB 服务端口(请将 <Windows主机IP> 替换为实际 IP,M1 实测为 10.66.84.17):

# 查看设备当前IP地址
hostname -I

# 测试Windows主机网络连通性
ping -c 3 <Windows主机IP>

# 测试SMB端口连通性
timeout 3 bash -c 'cat < /dev/null > /dev/tcp/<Windows主机IP>/445' && echo 445_open || echo 445_failed
timeout 3 bash -c 'cat < /dev/null > /dev/tcp/<Windows主机IP>/139' && echo 139_open || echo 139_failed

若输出 445_open139_open,表示设备到 Windows SMB 服务端口可达。

设备端使用命令行访问

使用 smbclient 查看 Windows 主机上的共享列表:

smbclient -L //<Windows主机IP> -U 'DOMAIN\username'

示例(以 M1 实测 Windows IP 10.66.84.17 为例):

smbclient -L //10.66.84.17 -U 'QUECTEL\username'

按提示输入该 Windows 用户的登录密码。若认证成功,可在输出中看到共享目录名称,例如:

m1_share        Disk

访问指定共享目录并列出文件:

smbclient //<Windows主机IP>/<共享名> -U 'DOMAIN\username' -c 'ls'

示例(以 M1 为例):

smbclient //10.66.84.17/m1_share -U 'QUECTEL\username' -c 'ls'

本文实测设备可正常列出 Windows 主机共享列表,并可进入对应共享目录。

设备端使用图形界面访问(M1 专属)

💡 此方式适用于 M1 GNOME 图形环境。L1 Weston 环境下请使用命令行方式访问。

Quectel Pi M1 Debian 图形环境中可通过文件管理器访问 Windows 共享目录。在文件管理器地址栏输入:

smb://10.66.84.17/m1_share

随后按界面提示输入 Windows 用户名、域或工作组、密码即可访问共享目录。

Windows 电脑访问设备共享文件夹

  1. 按下"Win+R"打开运行窗口。

  2. 输入设备的共享访问路径,例如:

\\<开发板IP>\myshare
\\10.66.84.182\myshare
  1. 输入用户名和密码,即可看到共享文件夹的内容。

    • 用户名:Samba 配置中 valid users 指定的用户(M1 为 q

    • 密码:执行 smbpasswd -a <用户名> 时设置的密码

  2. 访问成功后,即可看到之前创建的测试文件 test.txt