OpenWrt 局域网文件共享实现主要有两个软件选择,Samba 和 NFS。Samba 系统兼容性较好,NFS 则性能表现占优。对于新手或者需要使用 Windows 设备的用户来说,建议选择 Samba。

以下是 Samba 具体安装配置步骤,其中涉及到命令运行的操作需要登录 SSH。

安装 USB 设备

根据官方帮助文档操作即可,很详细。

安装 Samba

安装 luci-app-samba,它会同时安装 samba-server 核心程序。

1
2
3
4
5
### 更新软件索引 
$ opkg update

### 安装 Samba4 版本
$ opkg install luci-app-samba4 luci-i18n-samba4-zh-cn

创建系统用户

为了能以用户验证方式共享文件,需要创建一个系统用户(Samba 用户必须同时以系统用户身份存在,因为拥有共享和用于验证的是系统用户)。

1
2
3
4
5
6
7
8
### 安装用户工具 
$ opkg install shadow-groupmod shadow-useradd

### 创建用户并设置密码
$ useradd -m smbusers && passwd smbusers

### 修改用户所属组名称(创建用户同时会创建同名用户组。Windows 使用环境不允许用户和组使用相同名称)
$ groupmod -n smbgroups smbusers

创建 Samba 用户

这是访问共享文件时要求登录的 Samba 帐号,用户名和之前创建的系统用户一样(密码可不同)。

1
2
3
4
5
### 创建用户并设置密码 
$ smbpasswd -a smbusers

### 修改用户密码
$ smbpasswd smbusers

更多 smbpasswd 参数用法见此文档。

Samba 参数配置

登录 LuCI 控制台,在“服务”下拉菜单点击“网络共享”,点击“编辑模板”可以添加自定义参数设置。

例如笔者在默认规则基础上加了下面几个参数,分别为仅允许 192.168.1.0/24 主机连接,加密认证密码,不要加载打印机,设置日志文件(%m 表示客户端主机名),日志文件最大 50 KB,设置 Samba 用户名映射(可防止登录用户知道存在同名系统用户)。

自定义添加参数

hosts allow = 192.168.1.
username map = /etc/samba/usernamemap
encrypt passwords = yes
load printers = no
log file = /var/log/samba/log.%m
max log size = 50

创建 Samba 用户名映射文件

1
$ vi /etc/samba/usernamemap 

内容如下。例如将 smbusers 映射到 admin,之后可用 admin 用户名登录

smbusers = admin

更多自定义参数可查看此文档。

添加共享目录

填写共享目录名称/路径,用户/权限等内容。如下图。

完成设置后点击“保存并应用”,转到“系统”下拉菜单“启动项”里重启 samba 服务生效。

将共享目录所有者改为之前创建的系统用户/用户组,不然无法读取写入数据。

1
$ chown smbusers:smbgroups /mnt/sda1 

Samba 客户端连接

如果你使用 Windows 10 系统,默认无法创建连接,因为禁用了 SMBv1 过时协议。需要在“启用或关闭 Windows 功能”里选中“SMB 1.0/CIFS File Sharing Support”下的“SMB 1.0/CIFS Client”,添加后重启系统生效。

然后打开系统“凭据管理器”界面,点击添加“添加 Windows 凭据”,填写 NETBIOS 地址(默认 OpenWrt),Samba 用户名密码。

设置后就可以在“文件管理器”里右键添加网络位置,或者点击左侧“网络”进入设备共享目录。别忘了需要开启“网络发现”和“文件共享”。

其它设备,iOS 或 Android 建立连接就简单了,一操作便明就不赘述了。

本来想使用 SMBv2 协议创建连接,理论上 Samba 3.6 最高支持 SMBv2。但在确认 SMBv2 启用的情况下, Windows 10 怎么弄都不成功,可能与系统 SMBv2 版本过高有关系。Windows 7 支持 SMB2_10 版本,这与 Samba 3.6 最高支持版本相符,或许 Windows 7 下可以使用 SMBv2 连接。


本站总访问量

本站由 Rick Ying 使用 Stellar 1.33.1 主题创建。本站内容仅供学习与交流使用,如有侵权请联系管理员删除。