![Ubuntu 升级后的 systemd 和 OpenVPN 问题](https://linux22.com/image/92237/Ubuntu%20%E5%8D%87%E7%BA%A7%E5%90%8E%E7%9A%84%20systemd%20%E5%92%8C%20OpenVPN%20%E9%97%AE%E9%A2%98.png)
将虚拟机从 Ubuntu Server 14.04 LTS 更新到 16.04 LTS 后,OpenVPN 停止工作,我希望能帮助了解原因。
使用 systemctl status 我可以看到 OpenVPN 由于“权限被拒绝”而无法在 /run/openvpn 中创建 PID 文件或 /var/log/openvpn 中的日志文件。
如果我使用完全相同的命令以 root 身份手动启动 OpenVPN,那么一切都会正常工作,如果我将文件夹的权限更改为 777,它也会正常工作。
/run/openvpn 由 root:root 所有,最初拥有 755 权限。
/var/log/openvpn 由 openvpn:root 所有,最初权限为 775。
如果我以 777 权限启动 OpenVPN,我可以看到以下文件:
/run/openvpn/server.pid 根:根 644 /var/log/openvpn/openvpn.log。根:根600 /var/log/openvpn/openvpn-status.log 根:根 600
那么,OpenVPN 似乎是以 root 身份运行的,那么为什么当我使用 systemd 时,我的文件夹权限会被拒绝,并且文件夹权限为 755 呢?以 root 身份从 bash 运行完全相同的命令行,可以按预期工作。
/lib/systemd/.../[电子邮件受保护]内容:
[单元] 描述=OpenVPN 连接到 %i 部分=openvpn.service ReloadPropagatedFrom=openvpn.service 之前=systemd-user-sessions.service 文档=man:openvpn(8) 文档=https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage 文档=https://community.openvpn.net/openvpn/wiki/HOWTO [服务] PrivateTmp=true KillMode=混合 类型=分叉 ExecStart=/usr/sbin/openvpn --daemon ovpn-%i --status /run/openvpn/%i.status 10 --cd /etc/openvpn --script-security 2 --config /etc/openvpn/% i.conf --writepid /run/openvpn/%i.pid PIDFile=/run/openvpn/%i.pid ExecReload=/bin/kill -HUP $MAINPID 工作目录=/etc/openvpn 保护系统=是 CapabilityBoundingSet=CAP_IPC_LOCK CAP_NET_ADMIN CAP_NET_BIND_SERVICE CAP_NET_RAW CAP_SETGID CAP_SETUID CAP_SYS_CHROOT CAP_DAC_READ_SEARCH CAP_AUDIT_WRITE 限制NPROC=10 DeviceAllow=/dev/null rw DeviceAllow=/dev/net/tun rw [安装] WantedBy=多用户.target