沙箱與檔案保護
LanMate 執行命令和寫檔案時,預設跑在受限環境裡:系統級沙箱隔離命令執行,檔案保護限制可寫入範圍。兩層獨立生效,日常使用無需設定。
系統沙箱
沙箱用的是作業系統原生隔離機制,按平台自動選擇:
| 系統 | 後端 | 說明 |
|---|---|---|
| macOS | Seatbelt(sandbox-exec) |
系統內建,無需安裝 |
| Linux | Landlock 優先,bubblewrap 回退 | Landlock 核心原生;兩者都不可用時見下方「沙箱不可用時」 |
| Windows | 低完整性程序 | 系統內建,無需安裝 |
| HarmonyOS | 系統應用沙箱 | 作業系統強制執行,固定為僅工作目錄,此設定不可更改 |
Agent 執行的命令(bash、指令碼、核心程序)都在沙箱內執行,無法越界寫檔案;內建辦公指令碼與連接器程序例外,見「覆蓋範圍」。
檔案保護範圍
設定 → 安全 → 檔案保護,兩檔可選:
| 檔位 | 行為 |
|---|---|
| 僅工作目錄(預設) | 透過系統沙箱限制可寫範圍;寫工作目錄外的檔案時彈窗請求授權,批准後放行 |
| 不限制 | 關閉檔案保護,可寫任意檔案,僅受審批級別約束 |
「僅工作目錄」下,Agent 可以寫入的範圍:
| 權限 | 範圍 |
|---|---|
| 讀寫 | 目前專案工作目錄 |
| 讀寫 | 系統臨時目錄(macOS /tmp、TMPDIR;Windows %TEMP%;Linux /tmp) |
| 讀寫 | 目前會話的產物目錄(報告、圖表等中間檔案) |
| 不可寫 | 上述之外的任何路徑,首次寫入時彈出授權卡片 |
越界寫入的授權是會話級的:批准一次後,本會話再寫同一路徑不再詢問,新會話重新確認。經常需要寫的目錄(比如固定的輸出資料夾)可以加入常駐可寫目錄(設定 → 安全 → 常駐可寫目錄),加入後所有會話都可直接寫入。
提示:內建辦公指令碼(Word/Excel/PPT/PDF/圖片處理)與連接器程序不走系統沙箱,但讀寫仍受工作目錄與授權規則約束,每次執行都記錄稽核日誌。
沙箱不可用時
Linux 上 Landlock 與 bubblewrap 都不可用(或使用者命名空間被停用)時,LanMate 不會假裝安全:命令以普通權限執行,但三層提示確保你知道現狀——
- 啟動時右下角彈出提示
- 設定 → 安全 顯示常駐警告與補救指引(如安裝 bubblewrap)
- 每個會話第一次執行命令前再確認一次
審批攔截不受影響,仍然生效。重新啟動應用或修復系統配置後可能恢復。
其他安全設定
| 設定 | 位置 | 說明 |
|---|---|---|
| 沙箱內禁止聯網 | 設定 → 安全 | Linux 沙箱內斷網(預設開);核心內裝依賴需要網路時可關 |
| LanMate 依賴項 | 設定 → 安全 | 依賴裝到內建執行時(預設開);關閉後安裝走系統環境,指向內建環境的命令會被攔截 |
| 刪除移入資源回收筒 | 設定 → 安全 | 確認刪除後檔案進資源回收筒而非徹底刪除,可找回 |
| 限制管道傳送檔案路徑 | 設定 → 安全 | 開啟後藍信等管道會話只允許傳送工作目錄內的檔案,防資料外流 |
執行策略規則
設定 → 安全 → 執行策略規則,按工具、路徑和命令自訂放行策略:
- 每條規則:工具名(精確匹配)+ 匹配條件(路徑字首 / 命令包含)→ 決策(允許 / 拒絕 / 詢問)
- 規則自上而下匹配,第一條命中生效;未命中走預設決策
範例:bash 工具 + 命令包含 git push → 詢問,可以在放行日常操作的同時對推送留一道人工確認。
安全底線:敏感路徑(
~/.ssh、~/.aws、/etc等)與破壞性命令(如rm -rf /)始終被拒絕,任何規則都不能覆蓋。
企業稽核
組織開啟後,審批決策與高危工具呼叫會上報企業服務端稽核日誌:命令文字經金鑰脫敏後上報,斷網自動補發。完整本機軌跡保留在 ~/.lanmate/agent/sessions/<會話id>.jsonl,可用於企業取證。
與審批的關係
沙箱管「能碰哪裡」,審批管「要不要問你」。兩者獨立組合——比如「僅工作目錄 + 只讀放行」下,讀檔案直接執行、寫檔案彈窗、寫工作目錄外的檔案先過沙箱授權再過審批。詳見審批與安全。