进阶 codewhale.net 2026-10-08 10:03:43 · 6 阅读

第15章 限制命令的访问范围 · Codewhale 文档

限制命令的访问范围批准一条命令,决定的是它能不能运行;沙箱决定的是它运行之后能碰到什么。只要操作系统提供沙箱,Codewhale 就会使用它;没有沙箱时,也会如实告诉你。查看你的平台提供了什么macOSSeatbelt,启动检查通过后自动启用。命令可以广泛读取,写入范围由沙箱模式限定,只有模式允许时才能联网。Linuxbubblewrap,但需要你手动开启(见下文)。不开启时,命令在没有操作系统沙箱的情况下运行。Windows目前没有操作系统沙箱。你的审批设置和 Windows 自身的权限仍然有效。外部服务设置 sandbox_backend = "opensandbox" 后,shell 命令会在你配置的 OpenSandbox 兼容服务上运行;隔离效果由该服务负责保证。问问 Codewhale 它找到了哪一种:codewhale doctor codewhale setup --status两条命令报告的都是应用你的设置之后实际可用的沙箱。仓库里存在但没有接入执行路径的代码,Codewhale 从不把它算作沙箱。开启 Linux 沙箱先安装 bubblewrap,再在 ~/.codewhale/config.toml 中加一行来启用:sudo apt install bubblewrap # Fedora: dnf install bubblewrap · Arch: pacman -S bubblewrap # ~/.codewhale/config.toml prefer_bwrap = true只有当 /usr/bin/bwrap 存在且可执行时,Codewhale 才会使用它。此后,命令看到的是只读的系统视图,只能写入沙箱模式允许的位置,除非模式允许,否则无法联网。决定命令能写到哪里sandbox_mode = "workspace-write"read-only命令只能读,不能写。workspace-write命令只能写入工作区和临时文件夹,其他地方都不行。danger-full-access不使用操作系统沙箱。只在你不怕损坏的机器或容器里使用。external-sandbox你已经运行在隔离环境里,Codewhale 不再额外加一层。前两种模式只有在沙箱可用时才会真正生效——在没有 bubblewrap 的 Linux 上,以及在 Windows 上,它们只是设置,背后没有操作系统沙箱。仓库自带的配置只能让模式更严格,不能更宽松。对单次无界面运行,可以给 codewhale exec 传 --sandbox <模式>;--auto 只会自动批准工具,绝不会放宽沙箱。了解局限命令启动前会检查沙箱是否可用,但受主机策略或容器限制影响,沙箱仍可能在启动时失败。命令报出“Permission denied”并不能证明是沙箱拦下了它。只有沙箱自己报告的拒绝,Codewhale 才会标记为沙箱拒绝。任何沙箱都无法防御内核漏洞,也无法防住所有类型的资源耗尽。下一步设置模式与审批决定哪些命令需要停下来等你批准。了解哪些数据会离开本机提供商会收到什么、哪些留在本地,以及遥测会发送什么。修改设置这些配置项写在哪里,以及仓库可以覆盖哪些。

评论 (0)