![16.10 dnsmasqd snap 无法作为守护进程启动](https://linux22.com/image/997915/16.10%20dnsmasqd%20snap%20%E6%97%A0%E6%B3%95%E4%BD%9C%E4%B8%BA%E5%AE%88%E6%8A%A4%E8%BF%9B%E7%A8%8B%E5%90%AF%E5%8A%A8.png)
我对 Snaps 还不熟悉,所以如果这是一个愚蠢的问题,我提前道歉。
我已经安装了 dnsmasqd snap 包,并按照说明设置了 dnsmasq.confhttps://github.com/lool/dnsmasq-snap
如果我从命令行调用 dnsmasq,它会正常工作。所有结果都与预期完全一致。但是,如果我尝试从命令行或通过 systemd 将 snap 作为守护进程启动,则会在写入 /var/run/dnsmasq.pid 时出现权限错误。从命令行(以 root 身份):
# /snap/bin/dnsmasqd.dnsmasq -C /var/snap/dnsmasqd/common/dnsmasq.conf
dnsmasq: failed to open pidfile /var/run/dnsmasq.pid: Permission denied
systemd snap 输出显示类似的错误
snap[1330]: dnsmasq: failed to open pidfile /var/run/dnsmasq.pid: Permission denied
我也尝试强制用户/组 dnsmasq.conf,但没有变化。
通常情况下,我可以解决权限问题,但这个问题却让我很头疼。我是不是忘了什么?
答案1
如果您没有以经典模式运行,则 snapd 启动的应用程序不允许读取/写入/修改其笼子外的文件。您可以使用 -x 或 --pid-file 选项指定在 jail 内创建 pid 文件 ($SNAP_DATA 例如 /var/snap/dnsmasqd/current/dnsmasq.pid)。请参阅 man dnsmasq。