收起左侧

ZFS快照导致的SMB权限重置

1
回复
186
查看
[ 复制链接 ]

2

主题

0

回帖

0

牛值

江湖小虾

2026-4-19 02:58:27 显示全部楼层 阅读模式
## 问题现象

- SMB 挂载后,`/vol1`(RAIDZ2,6块 HDD)上的个人文件夹(Bak、Clips、Documents、Downloads、Media、stash)每天自动消失,无法通过 SMB 访问。
- 文件本身并未丢失,在 NAS 本地文件系统上完好存在。
- 通过飞牛管理界面重新配置「文件管理设置 → SMB → 可见文件夹范围」后,文件夹重新出现。
- 问题每天发生,发生时间约为 00:00(午夜)。

---

## 根本原因

`share_service`(飞牛核心 SMB 配置管理服务)在每日 ZFS 快照任务触发后重新生成 SMB 配置文件,但在重新写入 `/usr/trim/var/share_service/<uid>/smb.conf` 时,产生了**不完整的 JSON**,缺少 `items`、`mounted`、`appShare`、`external`、`team` 等字段。

### 对比:正常(FTP)vs 损坏(SMB)

**`/usr/trim/var/share_service/1000/ftp.conf`(正常)**:
`json
{
  "updated": 1776528015525,
  "encoding": "",
  "mode": 2,
  "extended": {
    "teamShareMode": 2,
    "mounted": [],
    "appShare": [],
    "external": [],
    "team": []
  },
  "items": [[], []]
}

/usr/trim/var/share_service/1000/smb.conf(损坏状态)

{
  "updated": 1776528015513,
  "encoding": "",
  "mode": 2,
  "extended": {
    "teamShareMode": 2
  }
}

items 字段缺失时,share_service 不为用户的个人文件夹生成 Samba share 定义,导致这些文件夹在 SMB 连接下不可见。

触发时序(以 2026-04-19 00:00 为例)

时间 事件
00:00:00 ZFS 快照任务(trim.snapshots)触发
00:00:15 磁盘 sdf、sdg 唤醒(vol2 镜像组)
00:00:15 share_service 重新写入 1000.share.conf(此时 smb.conf 已损坏)
00:00:15 所有用户的 smb.conf 被截断写入(uid=1000、1001、1002 均受影响)
之后 新的 SMB 连接找不到个人文件夹 shares;已建立的连接暂时不受影响

Bug 位置share_service 在处理 ZFS 快照完成事件时,重新生成 /usr/trim/var/share_service/<uid>/smb.conf 的逻辑中存在缺陷,导致 JSON 被截断写入(缺少 items 字段和 extended 子字段)。FTP/NFS/WebDAV 的同名配置文件写入正确,仅 SMB 受影响。

重现条件

  1. 飞牛 NAS 配置了「每日 ZFS 快照」
  2. SMB「可见文件夹范围 → 我的文件」设为「全部允许」
  3. 等待每日 00:00 快照任务执行后,断开并重新连接 SMB

建议修复:在 share_service 写入 smb.conf 前验证 JSON 结构完整性,确保 items 字段始终被写入。



收藏
送赞
分享
2026-4-20 17:46:37 显示全部楼层

感谢反馈!我转给负责的同事看看。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则