# 服务端文件访问权限 设置入口为「设置 → 文件访问」,仅管理员可修改。配置保存在服务端数据目录的 `file-access.json`,随现有数据备份一起保存;客户端不保存允许目录列表。 默认配置: ```json { "mode": "folders", "folders": [] } ``` - 当前 Profile 的工作目录始终允许。绝对目录取自 Hermes 的 `terminal.cwd`;相对路径及默认值由 Hermes `/api/fs/default-cwd` 返回的实际工作目录确认,不使用 Web 进程或手机的目录。 - `folders` 是额外目录,不替代 cwd。为空时只允许工作目录及其子目录。 - 开启「全局授权」后保存 `mode: "all"`,无需逐个添加目录。Hermes 自身的认证、敏感文件和宿主文件权限仍然生效。 - 文件请求携带 Profile,普通聊天、移动端和配对节点走同一服务端校验。指定目录模式会向拥有文件的 Hermes 核对真实目录和文件路径,拒绝越界及符号链接逃逸;回环地址也不被当作共享文件系统的证据。 - 服务器文件路径统一通过 `/api/files/download?path=…&profile=…` 读取。HTML、SVG、XML 等主动内容不能作为同源可执行页面预览。已上传、归档的附件继续使用其原有文件接口和权限校验。 - 修改配置后,后续服务端文件请求立即应用新规则,包括缓存命中。已下载到客户端的副本不会被远程删除。 接口: - `GET /api/app/settings/file-access?profile=default`:返回配置、当前工作目录及目录读取错误。 - `PUT /api/app/settings/file-access`:管理员通过现有 CSRF 保护保存 `mode`、`folders`。 加载失败时显示文件名和服务端原因,并提供重试。目录未授权、文件已移动和连接失败分别处理,不再仅显示破损图片。