局域网文件共享基本属于必需品了,在这里就介绍如何在 OpenWrt 系统中安装对应的软件来实现这个功能。
Samba 官方网站:https://www.samba.org/
准备工作
- 确认路由器系统有足够的剩余空间,至少 9MB。
- 路由器连接了可用的存储设备,建议使用 EXT4 格式的硬盘。(路由器格式化硬盘教程)
- 路由器已正常联网。
开始操作
1、安装 samba4,软件界面名称:luci-i18n-samba4-zh-cn
2、打开“NAS”-“网络共享-samba4”
3、按需配置软件,创建需要的共享目录,即可开始使用。
界面配置项说明
- 常用的配置选项需要注意的是“接口”,只有已勾选的接口才能访问到 samba 共享目录。
- “允许旧协议”则适合某些不支持最新 smb 协议的客户端,以允许其访问共享目录。
- 如果不希望被局域网内的客户端扫描到共享目录,则应当勾选 “禁用 Netbios” 选项。
示例:将路由器本地目录 /mnt/sdb/test 共享为 Video 目录,且允许所有人匿名只读访问。
Windows 访问示例:\\192.168.9.1\Video
共享目录配置项说明
序号 | 说明 |
1 | 共享目录的名称,此名称按需自定义,这是让客户端看到的名称。 |
2 | 要共享目录的本地路径,可通过的“系统”-“文件助手”查找目录。 |
3 | 允许客户端看到共享目录名称,如果不勾选,则必须输入完整路径才能访问。 |
4 | 勾选后则完全只读,任何账户都无法进行写操作。 |
5 | 勾选后则强制将所有访问用户映射为 root 权限,即允许匿名用户进行写操作。(仅适用于 ext4 之类) |
6 | 此处输入操作系统(OpenWrt)内的用户名称,表示只允许这个用户访问。 |
7 | 允许匿名访问 samba 共享。 |
8 | 将访问权限映射为来宾用户,即默认的 nobody 用户。 |
9 | 子目录的权限继承自父目录。 |
10 | 客户端创建文件时的权限掩码。 |
11 | 客户端创建目录时的权限掩码。 |
12 | 与苹果系统访问有关,加载所需的 VFS 模块。 |
13 | 允许苹果系统的“时间机器”访问。 |
14 | “时间机器”占用空间的上限。 |
共享目录配置示例
初次使用的用户可能不知道 “共享目录” 的路径怎么填,首先你需要确认已经挂载好了硬盘,
打开“系统”-“挂载点”查看硬盘当前挂载路径,如果自动挂载成功,则可以在 “已挂载的文件系统” 中看到相关信息。
例如:硬盘挂载点为 /mnt/sdb ,如果想直接共享整个硬盘,则在 samba 共享目录中填入 /mnt/sdb 即可。
如果想翻找子目录,可以打开“系统”-“文件助手”翻阅系统目录,一般硬盘都会自动挂载至 /mnt 目录下。
例如:想共享硬盘内的 qBittorrent 目录,则在 samba 共享目录中填入 /mnt/sdb/qBittorrent 即可。
注意:如果要将 Samba 服务通过 WAN 口公开,需要打开防火墙端口:445/TCP
samba 用户管理(密码保护共享)
有时会需用启用 samba 的用户管理功能,以将共享目录限制为特定用户才能访问。
- samba 不能直接使用操作系统的用户名和密码,需要为操作系统内已有的用户配置专用的 samba 访问密码。
- samba 配置文件默认禁止 root 用户登录,一般也不建议启用 root 用户访问共享目录。
示例:为 ftp 用户添加 samba 专用密码,然后将共享目录 /mnt/sdb/test 限制为仅允许 ftp 用户访问。
# 为 FTP 用户创建 samba 专用密码,根据提示输入两遍密码,然后就可以凭此密码访问共享目录。
smbpasswd -a ftp
# 访问此共享目录时提示输入用户名密码,用户名:ftp 密码:已设置的 samba 专用密码。
# 如果要禁用此用户访问共享目录,删除 FTP 用户的 samba 专用密码即可。
smbpasswd -x ftp
# 如果要分配给 FTP 用户的目录权限不匹配,还应当修改目录权限,否则将导致无法进行写操作。
chown -R ftp:ftp /mnt/sdb/test
如果要让同一个共享目录允许多个用户访问,只需在 “允许用户” 选项填入多个用户名即可,用英文逗号分隔不同用户名。
添加自定义用户
有时可能想要自行创建自定义用户名,例如想创建一个用户名:xyz,首先需要创建操作系统用户,然后再为其添加 samba 专用密码即可。
# 安装 OpenWrt 下的用户添加工具。
opkg update
opkg install shadow-useradd
# 或安装全部支持组件,以支持各类用户管理命令。(与 Linux 系统相同)
opkg install shadow
# 执行添加用户命令。
useradd xyz
# 为用户添加 samba 专用密码,以允许登录 samba 共享目录。
smbpasswd -a xyz
# 为方便使用,可创建一个专用的存储目录,并修改目录权限。
# 示例
mkdir -p /mnt/sdb/mydir
chown xyz:xyz /mnt/sdb/mydir
# 或修改其它目录权限,递归修改目录权限,即目录下的子目录也一起修改权限。
chown -R xyz:xyz /mnt/sdb/test
# 如果需要禁用,可删除该用户。
# 先删除 samba 专用密码。
smbpasswd -x xyz
# 然后从操作系统中删除用户。
userdel xyz
ksmbd 用户管理(密码保护共享)
一款和 samba 同类型的软件,ksmbd 添加用户的命令有所不同,请参照下列示例。
# 为 FTP 用户创建 ksmbd 专用密码,根据提示输入两遍密码,然后就可以凭此密码访问共享目录。 ksmbd.adduser -a ftp # 访问此共享目录时提示输入用户名密码,用户名:ftp 密码:已设置的 ksmbd 专用密码。 # 如果要分配给 FTP 用户的目录权限不匹配,还应当修改目录权限,否则将导致无法进行写操作。 chown -R ftp:ftp /mnt/sdb/test
CIFS 挂载共享目录
samba 提供了文件共享服务后,可以通过客户端访问共享或者挂载共享目录进行使用,Windows 下比较简单,添加为“映射网络驱动器”即可,如果想在 Linux 类系统下挂载共享目录进行使用,则需要使用 CIFS 挂载命令。
例如想在 OpenWrt 下挂载其它设备提供的 samba 共享目录。
# 安装 cifs 软件界面
opkg update
opkg install luci-i18n-cifs-zh-cn
按需配置所需参数即可,当前网页界面不太规范美观,但不影响使用。
使用命令行方式挂载网络共享目录
因为挂载命令只需要系统启动时执行一次即可,所以也可以直接使用命令行的方式挂载网络共享目录,利用 OpenWrt 的开机启动脚本可自动执行命令,打开“系统”-“启动项”-“本地启动脚本”按需添加即可,一行一条命令。
示例:将位于 192.168.9.1 的名为 net 的网络共享目录挂载至本地路径 /mnt/net ,使用 ftp 账号登录。
# 先确认本地路径是否可用,如果本地目录缺失,则应先创建。
mkdir -p /mnt/net
# 按需执行挂载命令。
mount -t cifs //192.168.9.1/net /mnt/net -o username=ftp,password=123456,domain=WORKGROUP,iocharset=utf8,rw,vers=3.1.1
# cifs 挂载命令格式:mount -t cifs 远程路径 本地路径 -o 附加参数
# 各个附加参数之间用英文逗号分隔。
# 如果想匿名挂载共享目录,则省略密码参数即可。
mount -t cifs //192.168.9.2/video /mnt/video -o username=guest,domain=WORKGROUP,iocharset=utf8,ro,vers=3.1.1
CIFS 挂载参数说明
参数 | 用途 |
---|---|
username=name | 访问共享目录时使用的用户名。 |
password=123456 | 用户名对应的 samba 专用密码。 |
domain=WORKGROUP | 设置工作组名称。 |
iocharset=utf8 | 设置字符编码(单选)。常用编码: utf8,cp437,cp936,cp850,iso8859-1 |
ro | 只读访问。 |
rw | 允许读写。 |
noperm | 禁用权限检查。 |
noacl | 禁用 POSIX ACL。 |
sfu | 兼容 Unix 服务。 |
directio | 禁用缓存。 |
file_mode=0777,dir_mode=0777 | 设置写入文件和文件夹的权限掩码。 |
nounix | 禁用 Unix 扩展。 |
noserverino | 禁用服务器 inode 编号。 |
vers=3.1.1 | 明确指定使用的 SMB 协议版本号。 常用版本号:3.1.1,2.1,1.0 |
Windows 10 访问匿名共享目录
默认情况下,Windows 10 操作系统无法访问匿名共享目录,会提示错误代码:0x80004005
解决方法:打开 “本地组策略编辑器”-“计算机配置”-“管理模板”-“网络”-“Lanman 工作站”-“启用不安全的来宾登录”-已启用。
Windows 10 家庭版访问匿名共享目录
Windows 10 家庭版无法使用“组策略编辑器”,如要启用访问匿名共享目录,需要添加注册表键值“DWORD (32 位) 值”。
计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters
"AllowInsecureGuestAuth"=dword:00000001