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 ルート: root 644 /var/log/openvpn/openvpn.log.ルート:ルート600 /var/log/openvpn/openvpn-status.log root: root 600
それでは、OpenVPNがrootとして実行されているようですが、systemdを使用するとフォルダの権限が755に拒否されるのはなぜですか? bashからrootとして同じコマンドラインを実行すると、期待どおりに機能します。
/lib/システム/.../[Eメール保護]コンテンツ:
[単位] 説明=%iに接続されたOpenVPN 部分=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 PIDファイル=/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 =マルチユーザー。ターゲット