如果你用过 Claude Code 写代码或者让它直接操作服务器文件,一定遇到过它突然要删文件或者执行高危命令的场景。不是 Claude Code 不靠谱,而是它的权限模式没配对。很多人在 VPS 上部署 AI 工具时,图省事直接给 Claude Code 全开放权限,结果一个不小心,项目目录被清空、配置文件被覆盖,甚至系统文件被误删。本文直接讲清楚 Claude Code 的几种权限模式,以及怎么配置才能既让 AI 干活又不让它乱来。

Claude Code 权限模式到底有几种?
Claude Code(Anthropic 推出的命令行 AI 编程助手)默认有三种权限模式,分别对应不同的文件操作和命令执行控制粒度。
1. 全开放模式(默认无限制)
• 行为:Claude Code 可以读写任何路径下的文件,可以执行任何 shell 命令(包括 rm -rf、sudo 等)。
• 适用场景:本地开发环境、临时测试、你明确知道当前项目不会出问题。
• 风险:一旦 AI 误解了你的需求或上下文,它可能直接执行危险命令。比如让它“清理临时文件”,它可能直接把 `/tmp` 清空或者误删当前项目。
2. 受限模式(推荐给 VPS 部署场景)
• 行为:Claude Code 只能读写工作目录(启动时的当前目录)及其子目录下的文件;命令执行时,对高危命令(如 rm、sudo、chmod 等)会弹出确认提示。
• 适用场景:VPS 上部署 AI Agent、自动化工作流(如 n8n、Open WebUI 配合 Claude Code)、生产环境。
• 优势:即使 AI 给出危险指令,也需要你手动确认才能执行,文件写入被限制在项目文件夹内。
3. 只读模式(最安全)
• 行为:Claude Code 只能读取文件,不能写入、修改或删除任何文件;命令执行被完全禁止(仅允许输出结果到终端)。
• 适用场景:代码审查、日志分析、只读查询场景。
• 缺点:AI 无法帮你修改代码或自动修复问题,适合“只看不动”。
怎么设置权限模式?命令参数和环境变量
Claude Code 的权限模式主要通过启动参数或配置文件控制。以当前官方版本(截至 2025 年初)为例:
通过启动参数设置
claude
claude –restricted
claude –read-only
`–restricted` 参数会启用文件路径限制和高危命令确认。`–read-only` 则强制只读。
通过环境变量全局配置
如果你在 Docker 或 n8n 中调用 Claude Code,可以在环境变量中预设:
export CLAUDE_CODE_MODE=restricted
然后在启动脚本中读取这个变量。注意:不同版本的环境变量名可能不同,建议先 `claude –help` 确认当前版本的参数名。
在配置文件中锁定模式
Claude Code 会在用户目录下生成配置文件(如 `~/.claude/config.json`),可以手动添加:
json
{
"permission_mode": "restricted",
"allowed_paths": ["/home/youruser/projects"]
}
这样每次启动 Claude Code 都默认使用受限模式,并且只允许操作指定路径。
老鸟叮嘱:避坑三原则
1.永远不要在 root 用户下用全开放模式跑 Claude Code
很多人在 VPS 上图省事直接 `sudo claude`,结果 AI 一个 `rm -rf /` 的幻觉命令,系统直接崩。记住:Claude Code 应该用普通用户运行,并且配合受限模式。
2.受限模式不等于万无一失
受限模式只限制文件写入范围和高危命令确认,但如果 AI 在你的项目目录内执行 `rm -rf *`,你还是会丢数据。建议搭配 Git 版本控制,每次让 AI 操作前先提交代码。
3.在 n8n 或 AI Agent 工作流中调用 Claude Code 时要额外加一层沙箱
比如用 Docker 容器运行 Claude Code,把宿主机关键目录映射为只读卷。这样即使 AI 想删文件,也只能删容器内的临时数据。
常见场景配置示例
场景一:在 VPS 上用 Claude Code 写代码
cd /home/dev/myproject
claude –restricted
此时 Claude Code 只能读写 `myproject` 目录下的文件,执行 `rm` 等命令时会弹出确认提示。
场景二:通过 Docker 部署 Claude Code 作为 AI Agent
dockerfile
FROM python:3.11
RUN pip install claude-code
ENV CLAUDE_CODE_MODE=restricted
WORKDIR /workspace
CMD ["claude"]
启动容器时只映射需要操作的目录:
docker run -v /host/data:/workspace:rw -it my-claude-image
场景三:在 Open WebUI 中集成 Claude Code 执行代码
Open WebUI 可以调用外部工具执行代码,此时建议在调用脚本中强制添加 `–restricted` 参数:
python
import subprocess
subprocess.run(["claude", "–restricted", "–prompt", user_input], cwd="/safe/path")
FAQ
Q1:Claude Code 的受限模式能防住所有危险命令吗?
不能。受限模式主要拦截 `rm`、`sudo`、`chmod`、`dd` 等常见高危命令。但一些间接破坏(如写入恶意脚本、修改关键配置文件)仍然可能发生。建议配合文件系统权限(chmod)和 Git 快照。
Q2:我用了 `–restricted`,但 Claude Code 还是删了文件,怎么回事?
检查是否在 `allowed_paths` 中配置了过大的路径(比如 `/home`),或者你手动确认了高危命令提示。受限模式会弹窗让你确认,如果你盲目输入“y”,AI 就会执行。
Q3:Claude Code 支持自定义危险命令列表吗?
官方没有提供直接修改危险命令列表的接口。但你可以通过编写自定义的 shell 包装脚本,在 Claude Code 执行命令前用 `sudo` 或 `firejail` 进行二次限制。
Q4:只读模式下 Claude Code 能运行测试吗?
不能。只读模式禁止执行任何 shell 命令,包括运行测试脚本。如果你需要 AI 运行测试,必须切换到受限模式并手动确认命令。
Q5:在 n8n 工作流中调用 Claude Code 时,权限模式如何生效?
n8n 的 Execute Command 节点会直接执行你写的 shell 命令。如果你在命令中写 `claude –restricted`,那么权限模式会生效,但 n8n 本身不会拦截 Claude Code 的输出。建议在 n8n 中使用 Docker 容器隔离。
Q6:Claude Code 的权限模式会影响它调用 MCP 工具吗?
会。MCP(Model Context Protocol)工具调用同样受权限模式限制。如果 MCP 工具需要写文件或执行命令,受限模式会弹出确认提示。建议对 MCP 工具也做单独的权限控制。
总结
Claude Code 的权限模式是防止误删文件和危险命令的第一道防线。VPS 部署 AI Agent 时,务必使用 `–restricted` 或 `–read-only` 模式,配合普通用户运行和 Docker 沙箱,才能安全地让 AI 帮你写代码、改配置、跑自动化。别等到文件被删了才后悔——先配好权限再让 Claude Code 干活。
—
**相关阅读:**
– [VPS部署AI工具100讲:AI Agent、Codex、Claude Code、Hermes Agent、Ollama与自动化工作流实战教程](https://www.zhujixuan.com/jishujiaocheng/9606.html)
– [n8n VPS 部署教程:搭建自己的自动化工作流平台](https://www.zhujixuan.com/jishujiaocheng/9892.html)
– [AI Agent自动化运维实战100讲:VPS巡检、日志分析、告警处理与工作流教程](https://www.zhujixuan.com/jishujiaocheng/10066.html)
转载请注明出处:https://www.zhujixuan.com/jishujiaocheng/9814.html 商家投稿邮箱:zhujixuanblog@qq.com
