凌峰创科服务平台

oplayer samba服务器

核心概念:OpenWrt 上的 Samba 共享

在 OpenWrt 上,Samba 共享的本质是:

oplayer samba服务器-图1
(图片来源网络,侵删)
  1. 一个硬盘:你需要一个连接到路由器的 USB 硬盘或内置的存储设备(如 SD 卡、SATA 盘)。
  2. 一个目录:在这个硬盘上创建一个或多个用于共享的文件夹。
  3. 一个配置文件:告诉 Samba 服务哪个文件夹可以被谁访问,以及有什么权限。
  4. 一个服务:启动 Samba 服务,让它监听网络请求。

第一步:准备工作

安装必要的软件包

登录到你的 OpenWrt 路由器的 Web 界面(LuCI),或者通过 SSH 连接到路由器命令行。

使用 LuCI (Web 界面)

  1. 进入 系统 -> 软件包
  2. 点击 “更新列表”
  3. “可用软件包” 搜索框中输入 samba36-server
  4. 勾选它,然后点击 “更换” 进行安装。
  5. (可选)为了方便管理,你也可以安装 luci-app-samba,这是一个图形化的配置界面,但本教程将使用更灵活的命令行配置。

使用命令行

opkg update
opkg install samba36-server

准备存储设备

将你的 USB 硬盘插入路由器的 USB 接口,系统会自动识别,通常设备会出现在 /mnt/ 目录下。

oplayer samba服务器-图2
(图片来源网络,侵删)
  1. 检查设备是否被识别

    ls /dev/sd*
    # 你应该能看到类似 /dev/sda, /dev/sda1 的设备
  2. 创建挂载点

    mkdir -p /mnt/sda1
  3. 挂载硬盘

    # 假设你的分区是 /dev/sda1
    mount /dev/sda1 /mnt/sda1

    如果希望在重启后自动挂载,你需要编辑 /etc/config/fstab 文件,你可以使用 block mount 命令来自动生成配置:

    block detect > /etc/config/fstab
    # 然后编辑 /etc/config/fstab,确保 "enabled" 为 "yes"

    重启路由器后,检查硬盘是否成功挂载:

    df -h
  4. 创建共享目录: 在挂载点下创建一个你想共享的文件夹,share

    mkdir /mnt/sda1/share

第二步:配置 Samba

Samba 的主配置文件是 /etc/samba/smb.conf,我们将手动编辑它,这是最灵活和强大的方式。

  1. 备份原始配置文件(好习惯):

    cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
  2. 编辑配置文件: 使用 vinano 编辑器打开文件:

    nano /etc/samba/smb.conf
  3. 编写配置内容: 将文件内容清空,然后添加以下配置,这是一个非常标准和通用的配置。

    [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 用户,而是创建一个专门用于共享的用户。

  1. 创建系统用户

    # 创建一个名为 'sambauser' 的用户,并设置其主目录为 /mnt/sda1/share
    # -s /bin/false 表示该用户不能通过 SSH 或本地登录,仅用于 Samba
    useradd -s /bin/false -d /mnt/sda1/share sambauser
  2. 为该用户设置 Samba 密码: 这个密码是独立的,不与系统密码相同。

    smbpasswd -a sambauser
    # 系统会提示你输入并确认一个密码
  3. (可选)如果你决定使用 root 用户

    smbpasswd -a root
    # 为 root 用户设置一个 Samba 密码

你的配置文件中的 valid users 就可以包含 sambauser 了。


第四步:启动和启用服务

  1. 启动 Samba 服务

    /etc/init.d/samba36-server start
  2. 设置服务开机自启

    /etc/init.d/samba36-server enable

第五步:访问共享文件夹

你的 Samba 服务器已经配置完成,你可以从局域网内的其他设备访问它了。

从 Windows 访问

  1. 打开“文件资源管理器”。
  2. 在地址栏输入 \\<OpenWrt路由器的IP地址>,然后按回车。
    • \\192.168.1.1
  3. 系统会弹出身份验证窗口。
  4. 输入你刚刚创建的 Samba 用户名和密码(用户名 sambauser,密码是你设置的密码)。
  5. 成功登录后,你就能看到名为 Public 的共享文件夹了。

从 macOS 访问

  1. 打开“访达”。
  2. 点击菜单栏的“前往” -> “连接服务器”。
  3. 输入 smb://<OpenWrt路由器的IP地址>smb://192.168.1.1
  4. 点击“连接”,然后输入用户名和密码。

从 Linux 访问

  1. 打开文件管理器。

  2. 在地址栏输入 smb://<OpenWrt路由器的IP地址>

  3. 或者使用命令行挂载:

    # 创建一个本地挂载点
    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,查看日志文件获取错误信息。
  • 问题:无法写入文件或文件夹。

    • 检查权限:确保共享目录 /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 = yesforce user 设置正确。
  • 问题:中文文件名显示乱码。

    • smb.conf[global] 部分,添加以下行:
      [global]
          # ... 其他配置 ...
          dos charset = gbk
          unix charset = utf8
          display charset = utf8

      这可以解决 Windows 和 Linux/macOS 之间字符编码的差异。

通过以上步骤,你就可以成功地在 OpenWrt 路由器上搭建一个功能完善的 Samba 文件共享服务器了。

分享:
扫描分享到社交APP
上一篇
下一篇