You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

配置ngrok为系统服务时遭遇权限拒绝问题求助

解决Snap版ngrok配置系统服务的权限问题

问题原因

  1. 配置文件权限冲突:使用sudo运行ngrok时,Snap的沙箱环境切换到root上下文,无法访问普通用户m的/home/m/snap/ngrok/79/.config/ngrok/ngrok.yml文件(该文件权限为-rw-------,仅用户m可读)。
  2. Systemd服务目录写入限制:Snap版ngrok受沙箱安全机制约束,没有直接写入/etc/systemd/system/目录的权限,导致自带的service install命令执行失败。

解决方案

方案1:手动创建Systemd服务文件(推荐)

绕过ngrok自带的服务安装命令,直接编写systemd配置文件,以普通用户身份运行ngrok,彻底避免权限冲突:

  1. 创建服务文件:
sudo nano /etc/systemd/system/ngrok.service
  1. 粘贴以下内容(注意将User=m替换为你的实际用户名,配置文件路径保持原样):
[Unit]
Description=ngrok Tunnel Service
After=network.target

[Service]
User=m
ExecStart=/snap/bin/ngrok start --all --config /home/m/snap/ngrok/79/.config/ngrok/ngrok.yml
Restart=always
RestartSec=3

[Install]
WantedBy=multi-user.target
  1. 保存并退出编辑器(按Ctrl+O回车确认,再按Ctrl+X退出)。
  2. 重新加载systemd配置并启动服务:
sudo systemctl daemon-reload
sudo systemctl enable --now ngrok.service
  1. 验证服务运行状态:
sudo systemctl status ngrok.service

方案2:复制配置文件到root的Snap目录(备用)

如果坚持使用ngrok自带的service install命令,需让root用户能访问配置文件:

  1. 创建root用户的ngrok配置目录:
sudo mkdir -p /root/snap/ngrok/current/.config/ngrok/
  1. 复制你的配置文件到该目录:
sudo cp /home/m/snap/ngrok/79/.config/ngrok/ngrok.yml /root/snap/ngrok/current/.config/ngrok/
  1. 修改复制后文件的权限,确保root可读:
sudo chown root:root /root/snap/ngrok/current/.config/ngrok/ngrok.yml
  1. 执行服务安装命令:
sudo ngrok service install --config /root/snap/ngrok/current/.config/ngrok/ngrok.yml
  1. 启动并启用服务:
sudo systemctl enable --now ngrok.service

内容的提问来源于stack exchange,提问作者CodingMatters

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 06:36:34