收起左侧

[BUG] share_service 硬编码 /vol01 与实际不符,写坏 share.conf

2
回复
176
查看
[ 复制链接 ]

1

主题

1

回帖

0

牛值

江湖小虾

2026-4-21 23:33:10 显示全部楼层 阅读模式
环境
  fnOS 1.1.29, x86, 4 卷布局 /vol1~/vol4

症状
  特定账号 /etc/samba/users/.share.conf 被写坏:
    - 严重:0 字节,该账号所有 SMB 共享失效
    - 轻度:部分私人共享丢失(name 数少于实际配置)
  Web UI 权限页显示正常(Web UI 查 ACL,与 share.conf 不同源)
  客户端表现:SMB 报错 67(网络名不存在)

定位
  /usr/trim/logs/share_service.log 每次 rebuild 固定 4 条:
    [error] [smb] /vol01/ not existed

  strings /usr/trim/bin/share_service 可见硬编码字符串:
    /vol00/
    /vol01/
    /vol01/%u/%s
    /vol02/
  (只到 02,无 /vol03 /vol04)

  受影响函数:
    sharing::BaseProtocol::AddUserFoldersByStorageId
    sharing::BaseProtocol::AddTeamFoldersByStorageId

  实际挂载是 /vol1~/vol4(单位数字无前导 0),
  模板与命名不一致 → 路径 ENOENT → 某条件下空结果被写入 share.conf

触发
  Docker 容器首次启动,bind-mount 目标在 /vol*// 下且需 mkdir
  inotify CREATE 事件 → RebuildOtherSharesOnFileChanged → 踩坏路径
  docker restart 已有容器不触发(目录已存在)

对比
  冷启动 systemctl restart share_service:正确重建完整 share.conf
  inotify 增量事件:踩坏路径,写残缺

当前外部 workaround
  ln -s /vol1 /vol01
  ln -s /vol2 /vol02
  systemctl restart share_service
  (透明 symlink,对其他组件无影响)

期望官方修复
  1. share_service 路径模板与实际挂载命名一致(去除 /vol%02d 残留)
  2. rebuild 结果为"空/减少"时增加保护:不 truncate 已有 share.conf,
     fallback 到上一状态,待下次冷启动或正确 rebuild 再更新
收藏
送赞
分享

3

主题

12

回帖

0

牛值

江湖小虾

2026-4-22 10:11:13 显示全部楼层

技术型大佬

完全不是...是AI总结的..  详情 回复
2026-4-23 12:25

1

主题

1

回帖

0

牛值

江湖小虾

2026-4-23 12:25:02 楼主 显示全部楼层

完全不是...是AI总结的..
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则