Gemini CLI 中的沙箱操作
Gemini CLI 中的沙箱操作
Section titled “Gemini CLI 中的沙箱操作”本文档介绍了如何在 Gemini CLI 中使用沙箱操作,包括先决条件、快速入门和配置。
在使用沙箱之前,您需要安装并设置 Gemini CLI:
npm install -g @google/gemini-cli要验证安装
gemini --version沙箱将可能危险的操作(如 shell 命令或文件修改)与您的宿主系统隔离,为 AI 操作与您的环境之间提供了一道安全屏障。
沙箱的好处包括:
- 安全性:防止意外损坏系统或数据丢失。
- 隔离性:限制文件系统访问至项目目录。
- 一致性:确保在不同系统上可复现的环境。
- 安全性:在使用不可信代码或实验性命令时降低风险。
根据您的平台和首选容器解决方案,理想的沙箱方法可能会有所不同。
1. macOS Seatbelt (仅限 macOS)
Section titled “1. macOS Seatbelt (仅限 macOS)”使用轻量级、内置的沙箱功能 sandbox-exec。
默认配置文件:permissive-open - 限制对项目目录外的写入,但允许大多数其他操作。
2. 容器化 (Docker/Podman)
Section titled “2. 容器化 (Docker/Podman)”跨平台的沙箱,具有完全的进程隔离。
注意:需要本地构建沙箱镜像,或使用组织注册表中发布的镜像。
# Enable sandboxing with command flaggemini -s -p "analyze the code structure"
# Use environment variableexport GEMINI_SANDBOX=truegemini -p "run the test suite"
# Configure in settings.json{ "tools": { "sandbox": "docker" }}启用沙箱(按优先级顺序)
Section titled “启用沙箱(按优先级顺序)”- 命令标志:
-s或--sandbox - 环境变量:
GEMINI_SANDBOX=true|docker|podman|sandbox-exec - 设置文件:在
settings.json文件的tools对象中设置"sandbox": true(例如,{"tools": {"sandbox": true}})。
macOS Seatbelt 配置文件
Section titled “macOS Seatbelt 配置文件”内置配置文件(通过 SEATBELT_PROFILE 环境变量设置):
【译文】
permissive-open(默认): 写入限制,允许网络permissive-closed: 写入限制,无网络permissive-proxied: 写入限制,通过代理网络restrictive-open: 严格限制,允许网络restrictive-closed: 最大限制
自定义沙箱标志
Section titled “自定义沙箱标志”对于基于容器的沙箱,您可以使用环境变量SANDBOX_FLAGS向docker或podman命令中注入自定义标志。这对于高级配置很有用,例如针对特定用例禁用安全特性。
示例(Podman):
要禁用卷挂载的SELinux标签,您可以设置以下内容:
export SANDBOX_FLAGS="--security-opt label=disable"可以提供多个以空格分隔的标志:
export SANDBOX_FLAGS="--flag1 --flag2=value"Linux UID/GID处理
Section titled “Linux UID/GID处理”沙箱自动处理Linux上的用户权限。使用以下命令覆盖这些权限:
export SANDBOX_SET_UID_GID=true # Force host UID/GIDexport SANDBOX_SET_UID_GID=false # Disable UID/GID mapping“操作不允许”
- 操作需要访问沙箱外的内容。
- 尝试使用更宽松的配置文件或添加挂载点。
缺少命令
- 添加到自定义Dockerfile。
- 通过
sandbox.bashrc安装。
网络问题
- 检查沙箱配置文件是否允许网络。
- 核验代理配置。
DEBUG=1 gemini -s -p "debug command"注意: 如果项目中的.env文件中有DEBUG=true,它不会影响gemini-cli,因为会自动排除。使用.gemini/.env文件为gemini-cli设置特定的调试设置。
# Check environmentgemini -s -p "run shell command: env | grep SANDBOX"
# List mountsgemini -s -p "run shell command: mount | grep workspace"- 沙箱可以降低风险,但不会消除所有风险。
- 使用允许您工作的最严格配置文件。
- 容器在首次构建后开销最小。
- GUI应用程序在沙箱中可能无法工作。