1. 首页 > 技术教程 > 正文

Claude Code 权限模式说明:如何避免误删文件和危险命令

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

zhujixuan TASK 106

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