# Samba文件共享 ***Copyright © Quectel Wireless Solutions Co., Ltd. 2026. All rights reserved.*** --- # 概述 Samba 是在 Linux 系统上构建文件共享和访问控制服务的常用工具,利用 SMB 协议实现局域网内不同设备之间的文件互访。通过在本地部署 Samba,可以方便地向 Windows、Linux 或 macOS 客户端提供共享目录,实现跨平台的文件传输与协作。 本文档介绍在 Quectel Pi M2 Debian 系统下配置 Samba 文件共享服务,使 Windows 电脑能直接访问设备的共享文件夹。 # 准备工作 1. 确认设备环境: - Quectel Pi M2 已启动 Debian 系统 - Windows 主机和设备处于同一局域网内,且网络可互通 - M2 在 GNOME 图形环境下验证。Samba 文件共享不依赖 GNOME 桌面。 2. 检查网络连通。在设备端执行以下命令查看当前 IP 地址: ```bash hostname -I ``` ```powershell ping <开发板IP> ``` # 安装 Samba 服务 Samba 是 Debian/Linux 上用于和 Windows 系统共享文件的服务程序。 1. 更新软件包列表: ```bash sudo apt-get update ``` 2. 安装 Samba 及客户端工具: ```bash sudo apt-get install -y samba smbclient ``` > 💡 **`samba`**:服务器端软件,用于提供共享服务;**`smbclient`**:客户端工具,可用于测试连接是否成功。 3. 确认 Samba 安装成功: ```bash smbd --version smbclient --version ``` ## 创建共享文件夹 > 💡 本文以用户 `q` 为示例说明 Samba 共享配置。若系统中尚未创建该用户,可改为已有用户(如 `root`),或先创建普通用户后再继续配置。 1. 创建共享目录: ```bash mkdir -p /home/q/share ``` 2. 创建测试文件: ```bash touch /home/q/share/test.txt ``` 3. 修改权限: ```bash sudo chown -R q:q /home/q/share chmod -R 775 /home/q/share ``` ## 配置 Samba 服务 1. 打开配置文件: ```bash sudo vim /etc/samba/smb.conf ``` ```bash sudo nano /etc/samba/smb.conf ``` 2. 滚动到文件末尾,添加以下内容: ``` [myshare] comment = My Shared Folder browseable = yes path = /home/q/share create mask = 0664 directory mask = 0775 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`**——允许客户端在此目录中创建、修改和删除文件。 > 💡 若需允许匿名访问,可使用 `public = yes`;若需禁止匿名/访客访问,建议保留 `public = no, guest ok = no`。 3. 检查 Samba 配置文件语法: ```bash testparm ``` ## 设置 Samba 用户和密码 Samba 的登录用户必须是系统中已经存在的用户,并需要单独设置 Samba 访问密码。以系统用户 `q` 为例: ```bash sudo smbpasswd -a q ``` 需输入两次密码确认(此密码将在 Windows 访问时使用)。 ## 重启 Samba 服务使配置生效 ```bash sudo systemctl restart smbd sudo systemctl status smbd --no-pager -l ``` 设置 Samba 开机自动启动: ```bash sudo systemctl enable smbd ``` # 检查端口监听 Samba 主要使用 TCP 445 端口。服务启动后,可执行以下命令确认端口是否处于监听状态: ```bash ss -tulnp | grep -E ':445|:139' ``` 若设备启用了防火墙,请按实际防火墙工具放行 TCP 445 端口。未启用防火墙时,无需额外添加规则。 # 查看设备 IP 地址 Windows 访问设备共享目录前,需要先获取设备 IP 地址: ```bash hostname -I ``` 实际使用时,请以开发板当前查询到的 IP 地址为准。 # Windows 电脑访问设备共享文件夹 1. 在 Quectel Pi M2 设备端执行以下命令,获取开发板 IP 地址: ```bash hostname -I ``` 2. 在 Windows 主机打开 **命令提示符**,执行以下命令连接共享目录: ``` net use \\<开发板IP>\myshare /delete net use \\<开发板IP>\myshare /user:q explorer \\<开发板IP>\myshare ``` 3. 访问成功后,即可看到之前创建的测试文件 `test.txt`。 > 💡 若 Windows 提示无法访问,可先执行 `ping <开发板IP>` 确认网络可达;若提示凭据冲突,可在 Windows "凭据管理器"中删除该设备相关凭据后重新连接。 # 在设备上访问 Windows 共享文件夹 除在 Windows 电脑上访问设备的共享目录外,也可以反向从设备访问 Windows 电脑上已共享的文件夹。 ## Windows 端创建共享目录 1. 在 Windows 电脑上新建一个用于共享的文件夹,例如: ``` device_share ``` 2. 右键该文件夹,选择"**属性**" → "**共享**" → "**高级共享**"。 3. 勾选"**共享此文件夹**",共享名设置为: ``` m2_share ``` 4. 点击"**权限**",为需要访问该共享目录的 Windows 用户添加读取或写入权限。 5. 切换到"**安全**"选项卡,确认该 Windows 用户在 NTFS 权限中也具备对应的读取或写入权限。 > 💡 Windows 共享权限和"安全"权限需要同时允许访问,否则设备侧可能能够看到共享名,但无法进入目录或创建文件。 ## Windows 端确认网络与防火墙 1. 确认 Windows 电脑与设备在同一可达网络内。 2. 在 Windows 的"高级共享设置"中开启: - 网络发现 - 文件和打印机共享 3. 确认 Windows 防火墙允许"文件和打印机共享(SMB-In)"。 ## 设备端检查连通性 在设备终端中执行以下命令,确认能访问 Windows 主机的 SMB 服务端口(请将 `` 替换为实际 IP): ```bash # 查看设备当前IP地址 hostname -I # 测试Windows主机网络连通性 ping -c 3 # 测试SMB端口连通性 timeout 3 bash -c 'cat < /dev/null > /dev/tcp//445' && echo 445_open || echo 445_failed timeout 3 bash -c 'cat < /dev/null > /dev/tcp//139' && echo 139_open || echo 139_failed ``` 若输出 `445_open` 或 `139_open`,表示设备到 Windows SMB 服务端口可达。 ## 设备端使用命令行访问 使用 `smbclient` 查看 Windows 主机上的共享列表: ```bash smbclient -L // -U 'DOMAIN\username' ``` 按提示输入该 Windows 用户的登录密码。若认证成功,可在输出中看到共享目录名称,例如: ``` m2_share Disk ``` 访问指定共享目录并列出文件: ```bash smbclient ///<共享名> -U 'DOMAIN\username' -c 'ls' ``` 本文实测设备可正常列出 Windows 主机共享列表,并可进入对应共享目录。 ## 设备端使用图形界面访问 > 💡 此方式适用于 GNOME 图形环境。 Quectel Pi M2 Debian 图形环境中可通过文件管理器访问 Windows 共享目录。在文件管理器地址栏输入: ``` smb:///<共享名> ``` 随后按界面提示输入 Windows 用户名、域或工作组、密码即可访问共享目录。