前言¶
在 Windows 上,DeepSeek Harness(DSH)爲受限工作區會把目錄完整性降到 Low,並寫入顯式的 S-1-4-* 沙箱授權 ACE,好讓受限令牌能寫入。這些標記寫在磁盤 ACL 裏,不隨會話結束而消失;工作區從 DSH 移除或 DSH 升級之後,目錄上仍可能留着 Low 標籤和沙箱 ACE。安裝器、IDE、備份工具再訪問這些路徑時,可能觸發權限檢查失敗或表現異常。手動用 icacls 逐目錄排查既費事,又容易誤改正常授權。下面介紹社區插件 dsh-file-integrity-check,它按 DSH 實時工作區列表做只讀掃描、確認後修復、復掃校驗,併爲每個工作區保留一條可替換的 ACL 回滾記錄。
這是什麼¶
dsh-file-integrity-check 由維護者 Dofang-C 發佈,分類爲 admin-security,當前 package 版本爲 1.2.0(MIT 許可證)。它是 僅 Windows 的 DSH 插件:側邊欄提供白色工作區映射頁,底層還有可脫離 DSH 單獨運行的 PowerShell 引擎。插件不掃全盤,只讀 DSH 工作區註冊表裏的路徑;掃描階段不改 ACL,修復前需確認,默認行爲等價於只讀 dry run。
核心功能¶
插件只處理與 DSH 沙箱殘留相關的三類發現:
- Low 完整性標籤(SACL Mandatory Label,
S-1-16-4096) - 非繼承的顯式
S-1-4-*沙箱授權 ACE Everyone:(DENY)(DC),且僅當同一目錄已命中 Low 或 S-1-4 時才納入修復
正常的 X2\<用戶名>:(F) 等工作區授權不會被修改;單獨出現的 Everyone 拒絕項不算命中,也不會被碰。
已覈實的能力包括:
- 掃描:單個工作區,或 掃描全部工作區 一次請求覆蓋當前列表。
- 修復:確認後保存當前 ACL,再改標籤與 DACL;未確認時只讀。
- 校驗:修復後復掃,報告剩餘 Low / S-1-4 數量。
- 回滾:每個工作區最多一條回滾記錄;下一次成功修復會原子替換舊記錄。無發現時不產生備份與記錄。
- 工作區映射:來自 DSH 實時列表;在 DSH 中刪除工作區後,插件頁面對應卡片消失。
- 無第三方依賴:引擎爲 Windows PowerShell 5.1 / PowerShell 7,配合內聯 C# P/Invoke 與
icacls。
重目錄(如 node_modules、.git、dist、.venv、AppData\Local\Temp)會跳過;重解析點與 junction 不跟隨;長路徑使用 \\?\ 前綴。
安裝與啓用¶
catalog 條目合併後,可在 dsh-market 中搜索 文件完整性檢查 / File Integrity Check 並安裝。社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。
從源碼安裝時,通過 Plugin Manager 將插件目錄作爲本地 bundle 安裝,例如使用 DSH agent 工具:
plugin_manager action=install_bundle target="<path-to>\dsh-file-integrity-check"
安裝後刷新 DSH Web GUI。側邊欄會出現盾牌圖標 文件完整性檢查。若 Host 半有變更,需完全退出並重新打開 DSH,而不是僅刷新頁面。
環境要求:
- Windows 10 或 Windows 11
- DSH 0.2.1 或更新(桌面或 Web)
- Windows PowerShell 5.1 或 PowerShell 7
典型用法¶
側邊欄¶
- 打開側邊欄 文件完整性檢查。
- 每個 DSH 工作區對應一張卡片。
- 掃描 (Scan):只讀。
- 修復 (Fix):確認後保存 ACL 並修改。
- 校驗 (Verify):復掃並報告計數。
- 掃描全部工作區 (Scan all):一次掃描當前全部工作區。
修復成功後卡片顯示 可回滾 (Rollback available);詳情裏可 回滾到上次狀態 或 刪除記錄(刪除記錄需確認,會永久移除記錄目錄)。
回滾記錄路徑(僅 ACL 元數據,不含文件內容):
%LOCALAPPDATA%\dsh-lowlabel-fix\rollback\<first-16-hex-of-path-sha256>\
獨立 PowerShell CLI¶
不依賴 DSH 界面時,可調用倉庫內 scripts/DshWorkspaceAcl.ps1:
# 掃描單個工作區目錄樹
powershell -NoProfile -ExecutionPolicy Bypass -File .\scripts\DshWorkspaceAcl.ps1 `
-Action scan -Path "D:\project" -Deep
# 修復(無 -Apply 時爲 dry run)
powershell -NoProfile -ExecutionPolicy Bypass -File .\scripts\DshWorkspaceAcl.ps1 `
-Action fix -Path "D:\project" -Apply
# 校驗
powershell -NoProfile -ExecutionPolicy Bypass -File .\scripts\DshWorkspaceAcl.ps1 `
-Action verify -Path "D:\project"
# 列出回滾記錄
powershell -NoProfile -ExecutionPolicy Bypass -File .\scripts\DshWorkspaceAcl.ps1 `
-Action records
# 回滾
powershell -NoProfile -ExecutionPolicy Bypass -File .\scripts\DshWorkspaceAcl.ps1 `
-Action rollback -Path "D:\project"
# 永久刪除一條記錄
powershell -NoProfile -ExecutionPolicy Bypass -File .\scripts\DshWorkspaceAcl.ps1 `
-Action delete-record -Path "D:\project"
加 -Json 時,機器可讀結果寫到 stdout,進度與階段信息寫到 stderr。
適用場景與注意¶
適合在 Windows 上長期使用 DSH、且工作區目錄曾以受限模式運行、又希望在不誤傷正常授權的前提下清理 Low 標籤與 S-1-4-* 殘留的用戶。修復邏輯有明確邊界:只移除非繼承的 S-1-4-* allow ACE;只把 Low 標籤恢復爲可繼承的 Medium(icacls /setintegritylevel "(OI)(CI)M");改前會保存 SDDL 與 icacls /save 的 .acl 到回滾目錄。
對當前用戶擁有的目錄,通常不需要管理員權限;受保護的系統位置可能仍不可讀或不可寫,插件會報告並跳過,不會強行修改。不可讀目錄同樣會報告並跳過,批次內其餘路徑繼續處理。
插件以 當前 DSH 進程權限 運行;安裝前應自行查看源碼與 MIT 許可證,確認行爲符合預期。DSH 生態理念是「一切皆插件」;本插件 GitHub 倉庫當前約 2 stars,可作爲 admin-security 類補充工具使用。
結尾¶
經過上面的步驟,你可以在 DSH 側邊欄或 PowerShell 裏對工作區做掃描、確認修復、校驗與回滾,避免沙箱 ACL 長期留在磁盤上干擾其他工具。目錄頁與源碼: