在 Windows 下遇到 Ollama 输出 No Permission,通常不是程序文件丢失,而是模型目录的 NTFS 权限、Ollama 服务的运行账户或安全软件拦截导致。建议先顺着错误输出做一次排查,再按权限、账户、安全软件的顺序处理。
先看ollama list是否正常,再检查.ollama\models目录权限。优先给当前用户授予完全控制权限,并确认 Ollama 进程是否以当前用户身份启动。如果重启后仍报错,再检查“受控文件夹访问”和防病毒排除项。不要直接开启管理员模式绕过权限,那样无法解决问题根因,还可能引入更多文件访问副作用。
先判断是哪个环节打不开
在 PowerShell 里执行 ollama list。如果这个命令本身报错,说明 Ollama 连基础目录都无法读取,问题发生在服务启动阶段;如果列表正常,再执行 ollama run 模型名,记录下具体的错误代码。Windows 事件查看器(应用程序日志)里也会留下“访问被拒绝”的记录,通常会写明具体路径。
ollama list
ollama run qwen2.5:7b
从这个输出里能确认模型是否在本地、模型文件名和路径是否正常。如果模型不存在,那要考虑的不是权限,而是下载是否中断。
修复模型目录的 NTFS 权限
模型默认存于 %USERPROFILE%\.ollama\models,也可以查看环境变量 OLLAMA_MODELS 是否改过路径。在资源管理器中右键该目录,进入“安全 - 编辑”,确认当前用户是否有“完全控制”权限。如果不确定,可以用管理员 PowerShell 执行以下命令,给当前用户追加递归权限:
icacls "C:\Users\你的用户名\.ollama\models" /grant "你的用户名:(OI)(CI)F" /T
执行后重启 Ollama 再测试。注意 /T 会覆盖目录下所有子项,所以只针对模型目录执行;如果权限还是无效,检查 OLLAMA_MODELS 是否指向了网络驱动器、U 盘或其他受策略限制的位置,并先用 Test-Path 确认路径可访问。
核对服务账户和杀毒软件
如果 Ollama 被安装成了 Windows 服务(例如通过 NSSM 注册),或者通过计划任务启动,它可能不会使用你当前登录的账户。这时“当前用户有权限”不等于“进程账户有权限”。先查看是否有 Ollama 相关的服务:
sc query state= all | findstr /i ollama
Get-Service -Name *ollama* | Format-List Name, Status, StartType
如果存在服务,需要确认其登录身份,并将模型目录的权限授予该服务账户,或者让服务以当前用户身份运行。另一个常见干扰是 Windows 的“受控文件夹访问”。到 Windows 安全中心 - 病毒和威胁防护 - 受控文件夹访问,将模型目录加入允许列表;也可以临时关闭实时保护,测试一次。但要记得测试之后恢复安全设置,不要为了图方便长期关掉。