SMB 高级权限(smb-acl)— fnOS 插件介绍
按用户授权指定路径的 SMB 共享:选择用户 + 指定文件夹(含外接盘子目录)+ 只读/读写,
补足飞牛 fnOS 原生界面缺失的细粒度 SMB 权限管理。
- 版本:1.0.7
- 平台:x86 / arm 通用(纯 Python3 标准库)
- 运行端口:默认 5453(安装时可改)
- 开发者 / 发布者:onlytoy
一、解决什么问题
飞牛 fnOS 原生的共享能力存在一个明显短板:
| 存储类型 |
原生能力 |
痛点 |
| 内部存储池共享文件夹 |
支持按用户 ACL |
基本够用 |
| 外接 USB / 移动硬盘 |
只有"整盘开关" |
无法把"某个用户"限制在"某个子目录" |
也就是说,外接盘要么整盘对所有人开,要么不开,没法做"用户 A 只读访问 /外接盘/电影,用户 B 读写 /外接盘/备份"这种精细授权。
本插件用一个网页,让你随意创建 「用户 → 路径 → 权限」 规则,一键生效。
二、核心功能
- ✅ 可视化授权:网页里选用户、浏览并选择任意路径(含外接盘子目录)、选只读 / 读写。
- ✅ 多条规则管理:新增 / 编辑 / 删除,每条规则对应一个独立 SMB 共享。
- ✅ 重启不丢:配置写入独立 include 文件,fnOS 升级 / 重启都不会覆盖。
- ✅ 互不影响:不修改 fnOS 自带共享,卸载后自动清理干净。
- ✅ 网页登录保护:访问管理页需账号密码(独立于 fnOS 账号,PBKDF2 加密存储)。
- ✅ 端口可自定义:安装向导里设置,方便配合路由器 / frp 远程转发。
三、工作原理
网页操作
** 保存规则
▼
rules.json ──生成──► /etc/samba/smb.acl.conf (每条规则 = 一个 [共享] 段)
** 自动引用
▼
/etc/samba/smb.custom.conf (加 include,fnOS 不覆盖此文件)
** smbcontrol smbd reload-config
▼
SMB 服务热生效
- 规则持久化为 `${数据目录}/rules.json`。
- 据此生成独立的 Samba include 文件 `/etc/samba/smb.acl.conf`,每条规则是一个 `[共享名]` 段,含 `valid users` / `read only` 等。
- 自动在 `/etc/samba/smb.custom.conf` 加入 `include = /etc/samba/smb.acl.conf`(fnOS **不会覆盖**该文件)。
- 执行 `smbcontrol smbd reload-config` 热生效,无需重启。
- **服务每次启动还会重新应用一次规则**,因此重启、升级都不丢,且与 fnOS 自带共享互不影响。
---
## 四、安装
1. 打开 fnOS **应用中心 → 手动安装**,上传 `smb-acl_1.0.7_x86.fpk`。
2. 安装向导依次填写:
- **服务端口**(默认 5453;需远程访问就填一个你已在路由器 / frp 转发出去的端口)
- **登录账号**(默认 admin)
- **登录密码**(不少于 6 位)
3. 安装完成后,桌面出现「SMB 高级权限」图标(**仅管理员可见**)。
> 升级换版本时建议**先卸载旧版再装新版**;授权规则保存在数据目录,卸载默认保留,重装不丢。
---
## 五、使用
1. 桌面点击「SMB 高级权限」(新标签页打开管理网页)。
2. 用安装时设置的**账号密码登录**。
3. 点击「新建授权」:
- **选用户**:从 fnOS 已有用户中选择(用户需先在 fnOS「用户管理」中存在并启用 SMB)。
- **选路径**:浏览并选择任意文件夹(支持外接盘子目录)。
- **选权限**:只读 / 读写。
4. **保存并应用**,配置即时生效。
5. 客户端(电脑 / 手机 / 电视)用对应账号连 `\\飞牛IP`,即可看到被授权的共享。
> 💡 `以 root 读写底层文件` 选项可绕过外接盘文件属主限制,方便但权限较高,请谨慎使用。
---
## 六、远程访问说明
- **局域网**:点桌面图标 → `http://飞牛IP:5453` 直接可用。
- **远程**:插件服务走的是独立端口(如 5453),**不经过 fnOS 主网关**。如需公网访问,请在
路由器或 frp 中**单独把该端口转发出去**,再用 `http://你的域名:端口` 访问。
- ⚠️ 暴露到公网有风险,务必设置强密码,建议仅在受信任网络或配合 VPN 使用。
---



下载地址:smb-acl_1.0.7_x86.fpk: (访问密码: 4759)