核心概念:OpenWrt 上的 Samba 共享
在 OpenWrt 上,Samba 共享的本质是:

- 一个硬盘:你需要一个连接到路由器的 USB 硬盘或内置的存储设备(如 SD 卡、SATA 盘)。
- 一个目录:在这个硬盘上创建一个或多个用于共享的文件夹。
- 一个配置文件:告诉 Samba 服务哪个文件夹可以被谁访问,以及有什么权限。
- 一个服务:启动 Samba 服务,让它监听网络请求。
第一步:准备工作
安装必要的软件包
登录到你的 OpenWrt 路由器的 Web 界面(LuCI),或者通过 SSH 连接到路由器命令行。
使用 LuCI (Web 界面)
- 进入 系统 -> 软件包。
- 点击 “更新列表”。
- 在 “可用软件包” 搜索框中输入
samba36-server。 - 勾选它,然后点击 “更换” 进行安装。
- (可选)为了方便管理,你也可以安装
luci-app-samba,这是一个图形化的配置界面,但本教程将使用更灵活的命令行配置。
使用命令行
opkg update opkg install samba36-server
准备存储设备
将你的 USB 硬盘插入路由器的 USB 接口,系统会自动识别,通常设备会出现在 /mnt/ 目录下。

-
检查设备是否被识别:
ls /dev/sd* # 你应该能看到类似 /dev/sda, /dev/sda1 的设备
-
创建挂载点:
mkdir -p /mnt/sda1
-
挂载硬盘:
# 假设你的分区是 /dev/sda1 mount /dev/sda1 /mnt/sda1
如果希望在重启后自动挂载,你需要编辑
/etc/config/fstab文件,你可以使用block mount命令来自动生成配置:block detect > /etc/config/fstab # 然后编辑 /etc/config/fstab,确保 "enabled" 为 "yes"
重启路由器后,检查硬盘是否成功挂载:
df -h
-
创建共享目录: 在挂载点下创建一个你想共享的文件夹,
share。mkdir /mnt/sda1/share
第二步:配置 Samba
Samba 的主配置文件是 /etc/samba/smb.conf,我们将手动编辑它,这是最灵活和强大的方式。
-
备份原始配置文件(好习惯):
cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
-
编辑配置文件: 使用
vi或nano编辑器打开文件:nano /etc/samba/smb.conf
-
编写配置内容: 将文件内容清空,然后添加以下配置,这是一个非常标准和通用的配置。
[global] # 工作组,通常与你的 Windows 局域网工作组一致,默认是 WORKGROUP workgroup = WORKGROUP # 描述信息,在 Windows 网络邻居中可见 server string = OpenWrt Samba Server # 安全级别,建议使用 "user",即需要用户名和密码访问 security = user # 允许的客户端,可以根据需要限制 # hosts allow = 192.168.1. 10.0.0. # 只允许这两个网段访问 # hosts deny = 0.0.0.0/0 # 默认拒绝所有,然后由 allow 规则放行 # 日志文件位置 log file = /var/log/samba/log.%m max log size = 1000 # 是否浏览共享列表,yes 表示在 "网络" 中可见 browsable = yes # 是否允许 guest 用户(匿名)访问,我们这里禁用 map to guest = never # ==================== 共享文件夹定义 ==================== # [共享名称] 是你在 Windows 网络中看到的文件夹名 [Public] # 共享的路径,指向我们创建的目录 path = /mnt/sda1/share # 是否允许 guest 用户访问,no 表示需要认证 guest ok = no # 是否允许写入 writable = yes # 新创建的文件/目录的权限 # create mask = 0777 # 文件权限 # directory mask = 0777 # 目录权限 # 更推荐的做法是让 Samba 来管理,由 force user 指定用户 force user = root force group = root # 允许的访问用户列表,* 表示所有已验证的用户 valid users = @root, myuser1, myuser2 # 允许的访问用户组列表 # valid groups = mygroup1 # 你可以定义多个共享文件夹 # [Media] # path = /mnt/sda1/Media # guest ok = no # writable = yes # valid users = @root
配置详解:
[global]:全局设置,影响所有共享。[Public]:这是一个共享段的名称,你可以自定义,[Movies],[Backup]。path:最重要的参数,指定共享的本地路径。security = user:设置安全级别,要求每个用户都必须提供有效的用户名和密码。guest ok = no:禁止匿名访问,必须登录。writable = yes:允许写入。valid users:指定哪些用户可以访问这个共享。@root表示root用户组的所有成员,这里我们只列出了root和你将创建的用户。
第三步:创建 Samba 用户
Samba 的用户必须是系统已经存在的用户,我们通常不建议直接使用 root 用户,而是创建一个专门用于共享的用户。
-
创建系统用户:
# 创建一个名为 'sambauser' 的用户,并设置其主目录为 /mnt/sda1/share # -s /bin/false 表示该用户不能通过 SSH 或本地登录,仅用于 Samba useradd -s /bin/false -d /mnt/sda1/share sambauser
-
为该用户设置 Samba 密码: 这个密码是独立的,不与系统密码相同。
smbpasswd -a sambauser # 系统会提示你输入并确认一个密码
-
(可选)如果你决定使用 root 用户:
smbpasswd -a root # 为 root 用户设置一个 Samba 密码
你的配置文件中的 valid users 就可以包含 sambauser 了。
第四步:启动和启用服务
-
启动 Samba 服务:
/etc/init.d/samba36-server start
-
设置服务开机自启:
/etc/init.d/samba36-server enable
第五步:访问共享文件夹
你的 Samba 服务器已经配置完成,你可以从局域网内的其他设备访问它了。
从 Windows 访问
- 打开“文件资源管理器”。
- 在地址栏输入
\\<OpenWrt路由器的IP地址>,然后按回车。\\192.168.1.1
- 系统会弹出身份验证窗口。
- 输入你刚刚创建的 Samba 用户名和密码(用户名
sambauser,密码是你设置的密码)。 - 成功登录后,你就能看到名为
Public的共享文件夹了。
从 macOS 访问
- 打开“访达”。
- 点击菜单栏的“前往” -> “连接服务器”。
- 输入
smb://<OpenWrt路由器的IP地址>,smb://192.168.1.1。 - 点击“连接”,然后输入用户名和密码。
从 Linux 访问
-
打开文件管理器。
-
在地址栏输入
smb://<OpenWrt路由器的IP地址>。 -
或者使用命令行挂载:
# 创建一个本地挂载点 mkdir ~/myshare # 挂载共享 sudo mount -t cifs //192.168.1.1/Public ~/myshare -o username=sambauser,password=your_password,iocharset=utf8
排错与常见问题
-
问题:看不到共享或无法连接。
- 检查防火墙:OpenWrt 默认有防火墙(
firewall),你需要放行 Samba 使用的端口:137/udp,138/udp,139/tcp,445/tcp。- 进入 LuCI 网络 -> 防火墙 -> 端口转发。
- 新建一条规则,将
WAN接口的445端口转发到LAN接口的445端口(源/目标区域根据你的设置调整)。 - 或者更简单,在 区域 设置中,为你的
lan区域勾选 "允许 Samba 客户端访问"。
- 检查网络:确保你的设备能
ping通路由器的 IP。 - 检查 Samba 日志:
log file = /var/log/samba/log.%m,查看日志文件获取错误信息。
- 检查防火墙:OpenWrt 默认有防火墙(
-
问题:无法写入文件或文件夹。
- 检查权限:确保共享目录
/mnt/sda1/share的用户和组是正确的,并且有写入权限。ls -ld /mnt/sda1/share # 应该显示类似 drwxr-xr-x 2 root root ... # 如果权限不对,可以使用 chown 和 chmod 修改 chown -R root:root /mnt/sda1/share chmod -R 775 /mnt/sda1/share
- 检查 Samba 配置:确认
writable = yes和force user设置正确。
- 检查权限:确保共享目录
-
问题:中文文件名显示乱码。
- 在
smb.conf的[global]部分,添加以下行:[global] # ... 其他配置 ... dos charset = gbk unix charset = utf8 display charset = utf8这可以解决 Windows 和 Linux/macOS 之间字符编码的差异。
- 在
通过以上步骤,你就可以成功地在 OpenWrt 路由器上搭建一个功能完善的 Samba 文件共享服务器了。
