现象
Linux 开启文件沙箱后,使用软链接形式的 HOME 启动会话,宿主侧存在的会话在沙箱内无法定位:
botmux schedule add "0 12 * * *" "fixture reminder" 提示无法推断 chat-id。
botmux history --session-id <current-session> 提示未找到 session。
此外,Linux outbox watcher 合法发起的宿主 botmux send 重执行仍可能报:
botmux send refused: read-isolated owning data-root locator is missing or ambiguous
两个问题相互独立;仅修正会话数据路径不能修复后一个错误。
复现条件
- HOME 经目录软链接访问,
SESSION_DATA_DIR 保留该软链接路径;会话数据库与每个 bot 的目录位于该 HOME 下。
- 启用 Linux bwrap 文件沙箱,创建正常的 bot 会话。
- 从会话内运行上述定时任务命令,不显式传入 chat-id。
- 对发送链路,令 outbox watcher 保留 origin channel,移除 relay 环境变量并从已记录的 worker 直接重执行 CLI。
已在 v3.19.3 和当前 master 的测试中复现。无需真实飞书凭据即可构造临时目录、会话数据库和受控子进程重现。
原因
- worker 按 realpath 生成沙箱挂载,但
prepareDirectSandbox 未将 SESSION_DATA_DIR 对齐到这些挂载。新根目录中没有宿主的 HOME 软链接。Linux managed-origin capability / attestation 目录也仍使用未规范化路径。
cmdSend 在验证宿主重执行的 worker 父进程绑定之前,就将继承的 origin marker 判为读隔离。合法的 Linux 宿主转发因此提前进入 locator 检查。
期望
会话定位和定时任务存储应与已授权的挂载一致;合法宿主转发应进入现有的精确会话/轮次校验。修复不应扩大读取范围,也不能仅凭 BOTMUX_HOST_RELAY_AUTHORIZED 环境变量信任调用者。改变启动时环境及挂载约定后,旧沙箱 pane 应冷启动一次,避免重连沿用旧状态。
现象
Linux 开启文件沙箱后,使用软链接形式的 HOME 启动会话,宿主侧存在的会话在沙箱内无法定位:
botmux schedule add "0 12 * * *" "fixture reminder"提示无法推断 chat-id。botmux history --session-id <current-session>提示未找到 session。此外,Linux outbox watcher 合法发起的宿主
botmux send重执行仍可能报:两个问题相互独立;仅修正会话数据路径不能修复后一个错误。
复现条件
SESSION_DATA_DIR保留该软链接路径;会话数据库与每个 bot 的目录位于该 HOME 下。已在 v3.19.3 和当前 master 的测试中复现。无需真实飞书凭据即可构造临时目录、会话数据库和受控子进程重现。
原因
prepareDirectSandbox未将SESSION_DATA_DIR对齐到这些挂载。新根目录中没有宿主的 HOME 软链接。Linux managed-origin capability / attestation 目录也仍使用未规范化路径。cmdSend在验证宿主重执行的 worker 父进程绑定之前,就将继承的 origin marker 判为读隔离。合法的 Linux 宿主转发因此提前进入 locator 检查。期望
会话定位和定时任务存储应与已授权的挂载一致;合法宿主转发应进入现有的精确会话/轮次校验。修复不应扩大读取范围,也不能仅凭
BOTMUX_HOST_RELAY_AUTHORIZED环境变量信任调用者。改变启动时环境及挂载约定后,旧沙箱 pane 应冷启动一次,避免重连沿用旧状态。