issue: User Model Access for removed models persists

用户使用 Docker 安装的 Open WebUI 10.0.2 版本,运行在 Ubuntu 上。最初连接了 Ollama 提供商的 4 个模型并设置了某些用户的模型访问权限,之后切换到 llama.cpp 后端的模型,并删除了 Ollama 提供商。虽然 Ollama 模型已从模型列表中消失,但

快速结论:此问题发生在 Open WebUI 中,当一个模型提供商(如 Ollama)被删除或断开连接后,之前设置的模型权限(如“公开”权限)仍然保留在用户权限预览页面上,即使这些模型已经从模型列表中消失。用户无法管理或删除这些“幽灵”权限。优先排查:检查用户权限预览页是否显示已删除模型的权限计数,以及新模型如果使用相同的模型名称是否会自动继承旧权限。

问题场景

用户使用 Docker 安装的 Open WebUI 10.0.2 版本,运行在 Ubuntu 上。最初连接了 Ollama 提供商的 4 个模型并设置了某些用户的模型访问权限,之后切换到 llama.cpp 后端的模型,并删除了 Ollama 提供商。虽然 Ollama 模型已从模型列表中消失,但之前授予这些模型的权限仍然出现在用户权限预览页(显示“user has access to 2 out of 8 models”),而实际可用模型只有 4 个。用户无法删除这些已删除模型的权限,且当新模型使用与旧模型相同的名称时,新模型会自动继承旧权限。

报错原文

issue: User Model Access for removed models persists

When a model/provider gets deleted their access control should be gone too. Currently they persist. I had Ollama running with 4 models and I migrated to llama.cpp backed models. The permissions I granted to the Ollama models still show up/work and display as (user has access to 2 out of 8 models) on their permission preview page but I only have 4 models now in the models page. There is no way to remove the 4 now defunct model permissions from the users, they're bound to the model name.

Now I have 4 phantom models with phantom permissions showing up for every user. And if my new models reuse that name they get auto permission added to it.

If you have permissions hanging off a model, you should be able to remove that permission even after the model is gone.

原因分析

根据 Issue 讨论,这是一个精心设计的“功能”而非 Bug。Open WebUI 有意保留了已删除模型的权限设置,以防止因模型提供商短暂不可用、网络连接中断、管理员误删或重新添加提供商(如更换 API 密钥或基础 URL)时导致所有权限丢失。但此设计存在缺陷:当模型被删除后,其权限设置作为“孤儿”记录保留在数据库中,用户无法在界面上管理或清除这些权限。具体表现为:
– 模型名称被用作权限表的主键。
– 当新模型使用相同的名称时,会自动继承旧权限。
– 用户权限预览页面会显示包含这些已删除模型在内的权限计数,造成混乱。

环境排查

  • 确认 Open WebUI 版本:v10.0.2(或其他受影响版本)
  • 确认安装方式:Docker
  • 确认操作系统:Ubuntu
  • 确认模型提供商:Ollama(原始提供商),llama.cpp(新提供商)
  • 确认模型名称:新旧模型是否使用了相同的模型 ID/名称
  • 确认用户权限预览页显示的模型总数与实际可用模型数是否一致

解决步骤

  1. 理解设计意图:Open WebUI 开发者明确表示此行为是设计使然,用于保护权限设置不被意外清除。因此,直接修改代码或期望自动清理可能不现实。
  2. 针对孤儿权限的临时解决方法:
    • 手动重新配置用户权限。进入“用户管理” -> 选择受影响用户 -> 在“模型访问权限”中手动调整权限设置。
    • 对于新模型自动继承旧权限的问题,可以通过为不同的提供商设置模型前缀来避免模型名称冲突。进入“提供商连接设置” -> 为每个连接配置一个唯一的模型名称前缀(例如:”dev-“、”prod-“)。这样即使模型基础 ID 相同,也会被视为不同的模型。
  3. 向开发者报告需求:如果你想拥有删除离线模型权限的能力,请在 Open WebUI 的 GitHub Issues 中提交功能请求,要求:
    • 在模型管理页面中显示“离线/不可用”的模型,并允许管理员删除这些模型及其关联的权限。
    • 或者,提供一个清理孤儿权限的工具或界面选项。
  4. 可能的数据库直接清理(仅供高级用户,风险提示):如果必须立即清除这些孤儿权限,可以在备份数据库后,直接操作 Open WebUI 的数据库(如 SQLite 或 PostgreSQL),删除与已删除模型名称相关的权限记录。这需要专业数据库知识,强烈建议先在测试环境验证。

验证方法

完成上述步骤后:
1. 刷新用户权限预览页面,确认显示的模型总数与实际可用的模型数一致。
2. 测试使用相同模型名称的新模型,确认其不会自动继承旧权限(通过为不同提供商添加模型前缀可避免此问题)。
3. 如果进行了数据库清理,需确认旧权限记录已被删除,且系统运行正常,无其他数据异常。

参考来源

open-webui/open-webui #26788
关联问题 #14806 – UI gets stuck in loading state when switching back to conversation with revoked model permissions
关联问题 #23406 – Public -> Private models are still accessible

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 16142

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注