Repository navigation
Windows 沙箱把工作区整棵树永久标为 Low integrity,导致工作区内的可执行文件在沙箱外运行时无法写/删用户目录(例:Vite/esbuild 构建报 Access is denied)
#11973
zhangtong-arch
started this conversation in
General
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
环境
10.0.26200x64dsh-base+dsh-web-app)@deepseek-ai/dsh-sandbox-windows-acl、@deepseek-ai/dsh-sandbox-local、@deepseek-ai/dsh-sandbox-policy现象
用 DSH 在这个工作区以默认权限(
workspace-write/ 工作区内修改)跑过一次 agent 之后,退出 DSH、在普通终端里构建该项目必然失败。本例是 Electron + Vite 项目:pnpm start:dev在主进程 SSR 构建阶段中断,项目自身没有任何改动。复现步骤
同一份
esbuild.exe复制到%TEMP%(Medium)后再跑同样的脚本则成功。对照实验:remove ...: Access is denied.根因
@deepseek-ai/dsh-sandbox-windows-acl在 provisionworkspace-write时,对工作区根目录做三处常驻改动(模块注释中明确为设计行为:standing、不随会话撤销):Mandatory Label\Low Mandatory Level:(OI)(CI)(NW)(可继承的完整性标签);FILE_DELETE_CHILD(ACL 中表现为Everyone:(CI)(DENY)(DC));W,D,DC(S-1-4-<sha256 派生>)。由于标签可继承:
node_modules/@esbuild/win32-x64/esbuild.exe(早于 DSH 本次使用)也被标成 Low;%TEMP%(Medium),而esbuild.exe因镜像带 Low 标签而以 Low 完整性运行,os.Remove返回ERROR_ACCESS_DENIED→ 构建失败。该 SID 可确认来自 DSH 而非本地规则,算法即
workspaceWriteSid:影响
%TEMP%、%APPDATA%、日志/缓存),不能删除沙箱外文件。ERROR_NONE_MAPPED, 1332),请通过本模块回收",但没有向用户提供可用的回收入口。实际处置只能把 Low 标签改回 Medium(icacls <workspace> /setintegritylevel (OI)(CI)medium /T,本机 92,025 个文件、约 70 秒),ACL 里的 capability ACE 和FILE_DELETE_CHILDdeny 仍残留。期望行为 / 建议
dsh sandbox revoke --workspace <path>,或设置中的"重置工作区权限",能撤销 Low 标签、capability ACE 与FILE_DELETE_CHILDdeny,并递归处理子树;文档给出可直接复制的命令。workspace-write运行前提示"将在该工作区写入常驻 ACL/完整性标签,会影响在此目录内运行的其他开发工具",并给出撤销方式。相关讨论
临时绕过(供维护者参考)
danger-full-access)的会话不会触发 provision,也就不会打标;icacls <workspace> /setintegritylevel (OI)(CI)medium /T(可继承标签改回 Medium;capability ACE 与 deny 仍需模块自身回收)。证据摘录
可信度说明
workspace-write会话,之后未再被 DSH 重新打标(手工改回 Medium 后保持至今)。All reactions