Gemini CLI 使用手冊
首頁
命令列介面
核心概念
工具執行
開源貢獻
報名課程
首頁
命令列介面
核心概念
工具執行
開源貢獻
報名課程
  • 歡迎使用 Gemini CLI 文件
  • Gemini CLI 執行與部署
  • Gemini CLI 架構總覽
  • 檢查點(Checkpointing)
  • Gemini CLI 擴充套件
  • 使用 OpenTelemetry 進行可觀測性
  • 疑難排解指南
  • 服務條款與隱私權公告
  • 套件總覽
  • 整合測試
  • Gemini CLI:配額與定價
  • Gemini CLI 的沙箱機制
  • 卸載命令列介面 (CLI)

Gemini CLI 的沙箱機制

本文件提供 Gemini CLI 沙箱機制的指南,包括先決條件、快速入門以及設定方式。

先決條件

在使用沙箱機制之前,您需要安裝並設定 Gemini CLI:

npm install -g @google/gemini-cli

驗證安裝是否成功

gemini --version

沙箱機制概覽

沙箱機制(sandboxing)可將具有潛在危險性的操作(例如 shell 指令或檔案修改)與您的主機系統隔離,為 AI 操作與您的環境之間提供一層安全防護。

沙箱機制的優點包括:

  • 安全性:防止意外損壞系統或資料遺失。
  • 隔離性:將檔案系統存取限制於專案目錄。
  • 一致性:確保在不同系統間可重現的環境。
  • 安全防護:在處理不受信任的程式碼或實驗性指令時降低風險。

沙箱機制方法

根據您的平台及偏好的容器解決方案,最適合的沙箱機制方法可能有所不同。

1. macOS Seatbelt(僅限 macOS)

使用 sandbox-exec 的輕量級內建沙箱機制。

預設設定檔:permissive-open - 限制專案目錄以外的寫入,但允許大多數其他操作。

2. 基於容器(Docker/Podman)

跨平台沙箱機制,提供完整的程序隔離。

注意:需要在本地建置 sandbox 映像檔,或使用您組織的 registry 中已發佈的映像檔。

快速開始

# Enable sandboxing with command flag
gemini -s -p "analyze the code structure"

# Use environment variable
export GEMINI_SANDBOX=true
gemini -p "run the test suite"

# Configure in settings.json
{
  "tools": {
    "sandbox": "docker"
  }
}

設定

啟用沙箱機制(依優先順序)

  1. 命令旗標 (flags):-s 或 --sandbox
  2. 環境變數:GEMINI_SANDBOX=true|docker|podman|sandbox-exec
  3. 設定檔:在你的 settings.json 檔案中的 tools 物件下設定 "sandbox": true(例如:{"tools": {"sandbox": true}})。

macOS Seatbelt profiles

內建 profiles(可透過 SEATBELT_PROFILE 環境變數設定):

  • permissive-open(預設):限制寫入,允許網路
  • permissive-closed:限制寫入,不允許網路
  • permissive-proxied:限制寫入,僅允許透過 proxy 的網路
  • restrictive-open:嚴格限制,允許網路
  • restrictive-closed:最大限制

自訂沙箱旗標 (flags)

針對基於容器的沙箱機制,你可以透過 SANDBOX_FLAGS 環境變數,將自訂旗標 (flags) 注入到 docker 或 podman 指令中。這對於進階設定很有用,例如針對特定情境停用某些安全功能。

範例(Podman):

若要在掛載 volume 時停用 SELinux 標記,可以這樣設定:

export SANDBOX_FLAGS="--security-opt label=disable"

可以將多個旗標 (flags) 以空格分隔的字串方式提供:

export SANDBOX_FLAGS="--flag1 --flag2=value"

Linux UID/GID 處理

sandbox 會自動處理 Linux 上的使用者權限。你可以透過以下方式覆寫這些權限:

export SANDBOX_SET_UID_GID=true   # Force host UID/GID
export SANDBOX_SET_UID_GID=false  # Disable UID/GID mapping

疑難排解

常見問題

"Operation not permitted"(不允許的操作)

  • 操作需要存取 sandbox 容器外部的資源。
  • 請嘗試使用更寬鬆的設定檔(profile)或新增掛載點(mount points)。

缺少指令

  • 請加入自訂的 Dockerfile。
  • 可透過 sandbox.bashrc 安裝。

網路相關問題

  • 請確認 sandbox 設定檔允許網路存取。
  • 檢查 proxy(代理伺服器)設定是否正確。

除錯模式

DEBUG=1 gemini -s -p "debug command"

注意: 如果你在專案的 .env 檔案中有 DEBUG=true,由於會自動排除,這不會影響 Gemini CLI。請使用 .gemini/.env 檔案來設定 Gemini CLI 專屬的除錯設定。

檢查 sandbox

# Check environment
gemini -s -p "run shell command: env | grep SANDBOX"

# List mounts
gemini -s -p "run shell command: mount | grep workspace"

安全性注意事項

  • 沙箱機制(sandboxing)能降低但無法完全消除所有風險。
  • 請使用允許您工作所需的最嚴格設定檔(profile)。
  • 在首次建置後,sandbox 容器的額外負擔極小。
  • GUI 應用程式在沙箱機制下可能無法運作。

相關文件

  • Configuration:完整的設定選項。
  • Commands:可用指令。
  • Troubleshooting:一般疑難排解。
Last Updated: 10/1/25, 8:28 PM
Contributors: Will
Prev
Gemini CLI:配額與定價
Next
卸載命令列介面 (CLI)
本網站由 Will 保哥 翻譯、建置與維護,歡迎追蹤我的
歡迎追蹤我的 Will 保哥的技術交流中心 粉絲團