引言
手头有一个大容量正吃灰的机械硬盘, 乘着周末有空就想着利用起来, 需求:
- 家里有个树莓派, 一直跑着一个
OpenWRT单独作为路由器使用 - 现在需要在树莓派上接入机械硬盘, 并将其作为家庭网络共享文件,
- 最终希望的是, 只要设备接入家里的
WIFI就可以通过smb协议访问到机械硬盘
SMB(Server Message Block)协议是一种网络文件共享协议, 主要用于在局域网中共享文件、打印机、串行端口和通信资源。它允许应用程序或用户在网络上的计算机之间读取和写入文件, 并请求服务。SMB协议最初由IBM开发, 后来由微软扩展和推广, 广泛应用于各大操作系统中。
一、安装 Samba
我这里主里环境是
OpenWrt(Linux), 通过Samba来实现网络共享
访问 OpenWrt 后台页面, 并进入软件包
首先我们需要先更新下软件包列表
更新完软件包后, 在搜索栏搜索 samba4, 在搜索结果中选择 luci-app-samba4 进行安装
在安装 luci-app-samba4 时实际上会安装所有所需的包, 如下图所示, 实际上安装了四个包呢
安装完成, 刷新页面会在服务一栏多出网络共享菜单
二、创建 Samba 用户
在进行网络共享时, 我们应该避免使用 root 用户来登录 samba 服务器。 为此, 我们需要单独创建一个用户来用于 Samba 服务器的访问, 并为它赋予文件夹的访问权限。
下面我们需要进入 OpenWrt 上进行操作, 所以这里需要先通过 SSH 访问 OpenWrt
ssh root@192.168.0.111
在开始前我们可以提前安装两个软件包:
shadow-useradd: 提供useradd命令, 可以用于添加用户shadow-userdel: 提供userdel命令, 可用于删除用户(如果需要的话)
opkg update # 更新软件包
opkg install shadow-useradd # 先安装 shadow-useradd 软件包
opkg install shadow-userdel # 先安装 shadow-userdel 软件包, 提供 userdel 命令
下面我们尝试添加新用户 test, 后面通过配置我们将对共享目录进行一个权限控制(只有 test 用户才能够访问共享目录)
useradd test # 使用 useradd 命令创建 test 用户
smbpasswd -a test # 为用户 test 创建 Samba 服务的密码, 会提示输设置码和确认密码
补充: 如果创建的用户不想继续使用, 可使用以下命令进行删除
smbpasswd -x test # 删除用户 test 的密码
userdel test # 删除用户
三、创建共享目录
下面创建共享文件目录 /share, 并添加一个测试文件 test.txt
mkdir -p /share
cd /share
echo "string" > test.txt
目录创建完后, 我们还需要为共享目录用户设置权限
# 更改 /share 目录及其所有子目录和文件的「所有者」和「所属组」两个 test 都换成你设置的用户名
chown -R test:test /share
四、Samba 配置
访问 OpenWrt 后台管理页面, 并进入网络共享页面, 如下图所示
先设置下接口
新增一条类目, 并填写相关信息(具体描述看图), 最后保存并应用
五、Mac 连接
上面👆🏻配置完, 其实整个网络共享目录就已配置完成, 下面我们开始测试:
Mac 下, 在菜单栏找到 前往 -> 连接服务器
这时会出来一个弹窗, 输入 Smb 服务器地址, 格式如下: smb://192.168.0.111/test IP 就是我树莓派地址, test 就是上面新增配置时设置的名称
然后点击连接, 选择 注册用户, 名称就是最开始我们设置的 Samba 用户名, 密码就是对应用户密码, 最后点击连接
这里不出意外, 就可以访问到共享文件目录了, 如下图所示:
这里我们也可以试着拖一个文件进来
然后树莓派上, 可以同步查看到该文件
六、挂载硬盘
上面我们是在 OpenWrt 宿主机器上创建了一个共享目录, 这里其实只是做个演示; 而我们真正的目的是要将外部的硬盘设置为共享目录, 但是在开始我们需要先把硬盘挂载到 OpenWrt 上
开始前先使用 lsblk 查看硬盘信息: 其目的是为了找到要挂载的硬盘路径
lsblk -l
从下面结果确定要挂载的硬盘路径为 /dev/sdb2(通过硬盘的大小确定)
补充:在类
Unix操作系统(如Linux)中, 硬盘路径前面的/dev代表device(设备), 这是因为在这些操作系统中, 所有的硬件设备(包括硬盘、光驱、USB设备等)都被表示为文件系统中的文件, 这些文件通常位于/dev目录下
确定了硬盘设备路径, 我们还需要创建一个目录用于作为挂载点
mkdir -p my-data
因为该目录后面会作为共享目录, 所以我们需要设置下目录和文件的所有者和所属组(设置为 Samba 用户 test)
chown -R test:test my-data
下面我们就可以开始挂载硬盘了
mount /dev/sdb2 my-data
遇到的坑: 由于我的硬盘是
Exfat格式的, 导致挂载失败, 而失败原因其实就是默认情况下OpenWrt并不支持Exfat文件格式, 为解决该问题, 我这里单独又装了kmod-fs-exfat目的添加Exfat格式的支持
七、共享硬盘
挂载完硬盘, 下面就需要修改下我们上面配置的网络共享设置了, 修改了共享文件路径为硬盘的挂载点路径, 最后点击保存并应用
测试: Mac 下重新连接 Smb 服务器
八、参考
大家好, 我是墨渊君, 如果您喜欢我的文章可以:
- 关注公众号: 「昆仑虚F2E」获取最新文章。
- GitHub: github.com/MoYuanJun
- 个人网站(昆仑虚, 虽然现在没啥东西): www.kunlunxu.cc