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

MCP 文件系统连接器安全配置:哪些目录可以开放给 AI

如果你正在用 MCP 文件系统连接器给 AI Agent 开放本地目录权限,第一个要问清楚的问题就是:哪些目录可以开放,哪些绝对不能碰?很多人在 VPS 上部署 Claude Code、Codex 或 Hermes Agent 时,图省事直接给了 `/` 或 `/home` 读写权限,结果 AI 把系统配置改了、日志删了,甚至把 `.env` 文件里的 API Key 泄露了出去。本文从实战角度拆解 MCP 文件系统连接器的安全配置,告诉你哪些目录能放行,哪些必须锁死。

zhujixuan TASK 111

MCP 文件系统连接器安全配置的核心原则

MCP 文件系统连接器(File System Connector)是 Model Context Protocol 的一个官方工具,让 AI Agent 能读写宿主机的文件。它的权限控制依赖一个白名单机制:你必须在配置里显式声明允许访问的目录列表,不在列表内的路径 AI 无法触及。

原则一:最小权限。只给 AI 完成任务所需的最小目录范围,不要贪方便直接给整个用户目录。

原则二:隔离运行。不要把 AI Agent 和你的生产环境、敏感数据放在同一个用户下运行,最好用独立的系统账号。

原则三:只读优先。除非明确需要写文件(比如生成代码、保存日志),否则一律设为只读访问。

哪些目录绝对不要开放

`/etc`、`/usr`、`/lib`、`/boot` 等系统目录

这些目录包含系统配置文件、可执行文件和内核模块。AI 一旦误写或删除,轻则服务崩溃,重则系统无法启动。即使只读也不建议开放——有些 AI Agent 会尝试读取 `/etc/shadow` 或 `/etc/ssl/private` 中的敏感信息。

`/root`、`/home/*/.ssh`、`/var/log` 等敏感目录

`/root` 是 root 用户的家目录,里面可能有私钥、历史记录。`/home/*/.ssh` 存放 SSH 密钥,暴露等于拱手让出服务器。`/var/log` 里可能包含数据库密码、API 请求日志,AI 读到后可能被用于后续攻击。

`/proc`、`/sys`、`/dev` 等虚拟文件系统

这些目录不是真实文件,而是内核接口。AI 读取 `/proc/self/environ` 可能获取环境变量中的密钥,写入 `/proc` 可能导致内核异常。绝大部分场景下不需要访问。

包含 `.env`、`config.json`、`credentials` 的目录

很多项目在根目录放 `.env` 文件存 API Key。如果 AI 能读写整个项目目录,它可能直接读取你的 OpenAI 或 Claude API Key。即使只读,也建议用子目录隔离。

哪些目录可以安全开放

专门的工作目录,例如 `/opt/ai-workspace` 或 `/data/ai-projects`

这是最推荐的做法。在 VPS 上创建一个专用目录(比如 `/opt/ai-workspace`),把需要 AI 处理的文件、代码仓库都放到里面。权限设置为 750,归属一个专门的非 root 用户(如 `aiuser`)。MCP 配置里只开放这个目录。

临时目录 `/tmp` 或 `/var/tmp`(只读或清空后使用)

如果 AI 只需要读取临时文件或写入缓存,可以开放 `/tmp`。但要注意:`/tmp` 是共享的,其他进程也可能写文件,存在竞争风险。更好的做法是创建一个专属临时目录,比如 `/opt/ai-workspace/tmp`。

只读的公共数据目录,例如 `/usr/share/doc` 或 `/opt/public-data`

如果 AI 需要查询文档或公共数据集,可以开放这些目录的只读权限。确保目录下没有敏感信息。

如何配置白名单路径

以 Claude Code 的 MCP 配置为例(其他工具如 Codex、n8n 的 MCP 插件配置格式类似)。在 `~/.config/claude/mcp.json` 或项目根目录的 `.mcp.json` 中,文件系统连接器的 `allowedDirectories` 字段是一个数组,列出允许访问的路径。

json
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/opt/ai-workspace",
"/tmp/ai-tmp"
],
"allowedDirectories": [
"/opt/ai-workspace",
"/tmp/ai-tmp"
]
}
}
}

注意:`@modelcontextprotocol/server-filesystem` 默认支持多个路径参数,但不同版本可能有差异。以官方仓库 README 为准,部署前先执行 `npx @modelcontextprotocol/server-filesystem –help` 查看当前支持的参数。

如果你使用的是 Hermes Agent 或自建 MCP 客户端,配置方式类似——在客户端启动时传入 `–allowed-directories` 参数,或者通过环境变量 `MCP_ALLOWED_DIRECTORIES` 指定。

实际部署场景举例

场景一:用 Claude Code 写代码

你的项目在 `/opt/projects/my-app`,里面只有源码和配置文件(无密钥)。你希望 AI 能读取并修改代码。安全配置:只开放 `/opt/projects/my-app`,并且确保项目根目录下没有 `.env`、`credentials.json` 等敏感文件。如果必须用环境变量,通过 `.env` 文件但放在项目外,比如 `/etc/my-app/env`,并不开放那个目录。

场景二:用 Codex 分析日志

日志文件存放在 `/var/log/my-app`,但你想让 AI 只读分析,不修改。配置时用只读模式:部分 MCP 文件系统连接器支持 `–readonly` 参数。如果工具不支持,可以创建一个只读挂载点:`mount –bind /var/log/my-app /opt/ai-workspace/logs -o ro`,然后只开放 `/opt/ai-workspace`。

场景三:用 n8n 的 MCP 节点处理文件

n8n 工作流中调用了 MCP 文件系统连接器来读取 CSV 文件。文件放在 `/data/incoming`,处理完后写入 `/data/outgoing`。配置时只开放这两个目录,并且确保它们不在 `/home`、`/var` 等系统路径下。

老鸟叮嘱

1.永远不要用 root 运行 MCP 文件系统连接器。创建一个专用用户(如 `mcp-user`),只给这个用户读写工作目录的权限。这样即使 AI 被注入恶意指令,破坏范围也有限。
2.定期审计开放目录。项目迭代后,检查是否有新的敏感文件落入开放目录。可以用 cron 脚本扫描,例如 `find /opt/ai-workspace -name "*.env" -o -name "*secret*"`。
3.日志不要直接给 AI 读写。如果必须分析日志,把日志复制到隔离目录再开放,或者用日志收集工具(如 Vector、Fluentd)处理后输出到安全位置。
4.测试环境先验证。在本地或测试 VPS 上先用 `ls -la` 确认目录权限,再给 AI 开放。别在线上直接改配置。
5.关注 MCP 协议更新。目前文件系统连接器还比较新,后续可能增加更细粒度的权限控制(如按文件类型、按操作类型)。保持关注官方仓库。

FAQ

Q:MCP 文件系统连接器能限制 AI 只能读不能写吗?
A:部分版本支持 `–readonly` 参数。如果不支持,可以通过系统层面设置目录只读(`chmod -R a-w /path`)来间接实现。

Q:我开放了 `/home/ubuntu`,AI 能读到 `.ssh/id_rsa` 吗?
A:如果 `/home/ubuntu` 在 allowedDirectories 里,且运行 MCP 的用户有权限,就能读到。所以绝对不要开放家目录。

Q:多个 AI Agent 共用一个 MCP 文件系统连接器,安全吗?
A:不建议。每个 Agent 应该使用独立的 MCP 配置和独立的目录。如果必须共用,确保目录权限最小化,并且 Agent 之间相互隔离。

Q:在 Docker 容器里部署 MCP 文件系统连接器,还需要额外注意什么?
A:容器内权限默认是 root,务必使用 `–user` 参数指定非 root 用户运行。同时,挂载宿主机目录时使用 `:ro` 只读挂载。

Q:如果 AI 误删了文件,有办法恢复吗?
A:在开放目录上启用快照或备份(如 `rsync` 定时同步)。MCP 本身没有回收站功能。

Q:n8n 的 MCP 节点配置和 Claude Code 一样吗?
A:格式类似,但 n8n 是在工作流节点中填写路径参数。具体参考 n8n 官方文档,核心原则相同——只开放最小目录。

安全配置 MCP 文件系统连接器,核心就一句话:只给 AI 它需要的那一亩三分地,别让它看见整个农场。在 VPS 上部署 AI 工具时,花十分钟规划目录权限,比出事后花一小时恢复数据划算得多。

**相关阅读:**

– [VPS部署AI工具100讲:AI Agent、Codex、Claude Code、Hermes Agent、Ollama与自动化工作流实战教程](https://www.zhujixuan.com/jishujiaocheng/9606.html)
– [Codex、Claude Code、OpenClaw、Hermes Agent、Ollama、n8n 分别适合什么场景](https://www.zhujixuan.com/jishujiaocheng/9759.html)
– [n8n VPS 部署教程:搭建自己的自动化工作流平台](https://www.zhujixuan.com/jishujiaocheng/9892.html)

转载请注明出处:https://www.zhujixuan.com/jishujiaocheng/9833.html 商家投稿邮箱:zhujixuanblog@qq.com