Ollama使用非root运行,权限最小化安全加固

Ollama 在 Linux 上默认会以当前登录用户运行,如果直接用 root 启动,模型文件和进程都面临较高权限风险。
下面基于当前稳定版 Ollama,带你完成非 root 用户创建、二进制安装、systemd 服务配置和目录权限收紧,最终让 Ollama 以最低权限稳定运行。
本文适合零基础用户,按顺序操作即可,遇到问题可以直接对照常见排错部分处理。

为什么要把 Ollama 从 root 降到普通用户

用 root 运行 Ollama 时,任何模型加载漏洞或路径穿越都可能直接获得整机权限。
普通用户运行的好处非常明确:进程权限有限、文件隔离清晰、审计更方便。
Ollama 官方也推荐让服务以非 root 身份运行,尤其是在多用户服务器或需要暴露 API 的场景下,权限最小化能明显缩小攻击面。

第一步:创建专用系统用户

先创建一个不能登录的专用用户,比如 ollama

sudo useradd --system --home /usr/local/share/ollama --shell /bin/false ollama

--system 表示创建为系统用户,--shell /bin/false 禁止该用户直接登录。
创建后检查:

id ollama

预期能看到 uidgid,且用户组为 ollama
这一步做好之后,Ollama 的所有文件都归这个用户管理。

第二步:下载 Ollama 二进制并调整目录属主

官方安装脚本会写入 /usr/local/bin,但为了更精细地控制权限,建议手动下载二进制。
以 x86_64 架构为例:

curl -fsSL https://ollama.com/download/ollama-linux-amd64 -o /usr/local/bin/ollama
chown root:root /usr/local/bin/ollama
chmod 755 /usr/local/bin/ollama

如果是 ARM 设备(如树莓派),请把文件名换成 ollama-linux-arm64
模型目录默认是 /usr/share/ollama,这里手动创建并收紧权限:

mkdir -p /usr/share/ollama/models
chown -R ollama:ollama /usr/share/ollama
chmod 700 /usr/share/ollama

chmod 700 表示只有 ollama 用户能进入该目录,这是权限最小化的关键操作。
后续所有模型和日志都只在这个目录中读写。

第三步:用 systemd 以非 root 方式启动

创建服务文件 /etc/systemd/system/ollama.service

[Unit]
Description=Ollama Service
After=network-online.target

[Service]
User=ollama
Group=ollama
ExecStart=/usr/local/bin/ollama serve
Restart=always
RestartSec=3
Environment="OLLAMA_MODELS=/usr/share/ollama/models"
Environment="OLLAMA_HOST=127.0.0.1:11434"
NoNewPrivileges=true
ProtectSystem=strict
ProtectHome=true
ReadOnlyPaths=/

[Install]
WantedBy=multi-user.target

几个重要配置项的作用:

  • User=ollamaGroup=ollama 明确指定运行身份。
  • OLLAMA_HOST=127.0.0.1:11434 让服务只监听本机,避免直接暴露到公网。
  • NoNewPrivileges=true 禁止进程获得新的提权能力。
  • ProtectSystem=strict 配合 ReadOnlyPaths=/,让根文件系统保持只读,模型目录通过 OLLAMA_MODELS 单独指定后依然可写。

保存文件后,执行以下命令生效:

sudo systemctl daemon-reload
sudo systemctl enable --now ollama

第四步:验证运行状态和权限边界

查看进程是否以 ollama 用户运行:

systemctl status ollama
ps -o user,group,pid,cmd -C ollama

预期在 systemctl 输出中看到 User: ollama,在 ps 结果中第一列为 ollama
接着验证 API 是否正常:

curl http://127.0.0.1:11434/api/version

返回类似 {"version":"0.x.x"} 的 JSON 就表示服务已正常运行。

常见问题与避坑指南

1. 模型下载报权限不足

检查日志中的 permission denied 提示,然后修正目录属主和权限:

chown -R ollama:ollama /usr/share/ollama
chmod -R 700 /usr/share/ollama

2. 服务启动失败,端口被占用

先查看占用情况:

ss -lntp | grep 11434

找到占用进程后停掉旧服务,再重新启动 Ollama。

3. 如何确认没有以 root 运行

直接查看进程的 UID:

ps -o user,uid,pid,cmd -C ollama

如果 User 不是 root,说明非 root 配置已生效。
还可以用 systemd-analyze security ollama 查看整体安全评分,正常情况下该分数会明显优于 root 启动的方式。

完成以上步骤后,你的 Ollama 服务已经以普通用户身份运行,根文件系统只读、禁止提权、监听地址仅限本机。
这种权限最小化方案能有效降低模型服务被攻破时的提权风险,适合长期部署在生产环境。
如果你的服务器有多个模型目录或需要远程访问,请在此基础上单独调整 OLLAMA_HOST 和防火墙规则,不要直接放开全部端口。

分享到:
上一篇
sub2api异常:网页会话频繁掉线
下一篇
公网大量暴露无鉴权LLM端点,安全扫描报告解读
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意