前言¶
DeepSeek Harness (DSH) 从 0.1.7 版本开始,在 grantWrite 功能中加入了 Low 完整性标签,并将权限门槛从单纯的 DACL 能力 ACE 提升至需要 WRITE_DAC 和 WRITE_OWNER。这导致普通目录(仅有继承的 Modify 权限)在写入时会被拒绝,进而触发进程启动失败和 UAC 升权弹窗。
本插件在宿主进程内,为用户显式声明的工作区目录预置一条 Windows ACL 完全控制授权项(其中包含修改属主权限),使 dsh 的文件沙箱能够正常启动受限执行进程,避免将会话临时升权到完全访问。
插件介绍¶
名称:dsh-workspace-acl-allow
维护者:lovezi0
类别:admin-security
开源协议:MIT
该插件为 DSH 的声明式工作区模型提供权限补丁。它不会接管任何会话的工作目录,权限放宽仅发生在用户明确表达意图(添加工作区或手动新增路径)时。
核心功能¶
- 自动授权:在 dsh 中添加工作区时,插件会自动为该目录预置授权。
- 手动授权:在插件页的「工作区授权白名单」中手动输入目录路径并新增。
- 状态展示:显示授权状态(已授权、失败、受保护、不存在),失败项可查看退出码并重试。
- 管理功能:支持重新授权和移除记录(仅移除插件列表,不撤销已生效权限)。
- 内置保护:拒绝授权盘符根、系统目录、用户配置文件根目录等敏感路径。
- 配置选项:支持开启递归授权、配置失败重试冷却时间、添加排除路径。
安装¶
通过官方插件管理器安装:
dsh plugin --profile web add dsh-workspace-acl-allow
安装后,配置层会随 profile 一并加载。
使用方式¶
授权只在你明确表达意图时发生,有两个入口:
- 添加工作区:在 dsh 中添加工作区,插件会在记录写入后立即完成授权。插件启动前已注册的工作区会在加载时补齐。
- 手动新增:打开插件页 → 本插件 → 详情页底部的「工作区授权白名单」,输入目录路径并新增。
遇到「拒绝访问」错误时,可在列表中查看状态。如果状态为「授权失败」,常见原因是目录属主不是当前用户,或当前用户没有修改 DACL 的权限。
平台与限制¶
- 仅支持 Windows 平台:非 Windows 平台上插件不生效。
- 显式声明原则:插件不会接管任何会话的工作目录,也不会在某个目录下开会话就静默放宽权限。权限放宽必须由用户在插件页手动声明。
- 授权范围:授权只作用于工作区根目录一条授权项,不递归修改子项权限(除非在配置中开启
deepGrant)。 - 副作用:被处理的目录上,当前用户会从「继承的修改」变为「显式的完全控制」。移除列表条目不会撤销已生效的授权,由 dsh 自身授权体系负责。
配置项¶
配置写在 profile 的配置层中。
| 字段 | 默认值 | 说明 |
|---|---|---|
watchWorkspaces |
true |
是否订阅工作区新增事件。关闭后只剩手动新增入口。 |
deepGrant |
false |
是否递归处理子项。仅在子目录继承被破坏时开启。 |
retryCooldownMs |
3600000 |
授权失败项的冷却时间(毫秒),冷却内不重复尝试。 |
excludePaths |
[] |
追加的排除模式(支持 * 与 **),只能追加内置保护项之外的内容。 |
总结¶
该插件通过在宿主进程内显式授予完全控制权限,解决了 DSH 0.1.7+ 引入的低完整性标签导致的权限门槛问题。它采用声明式设计,避免了每次执行受限进程时的 UAC 弹窗,适合需要频繁在 Windows 上使用 dsh 工作区沙箱的场景。