OpenVPNサーバーに接続しようとしています。ルートを使用して接続コマンドを実行すると、正常に動作します。
openvpn /etc/openvpn/client.conf
ただし、一般ユーザーの場合、ログに次のエラーメッセージが表示されます。
Aug 15 18:01:43 a openvpn[4755]: OpenVPN 2.1.1 i686-redhat-linux-gnu [SSL] [LZO2] [EPOLL] [PKCS11] built on Jan 5 2010
Aug 15 18:01:43 a openvpn[4755]: WARNING: you are using user/group/chroot/setcon without persist-tun -- this may cause restarts to fail
Aug 15 18:01:43 a openvpn[4755]: WARNING: you are using user/group/chroot/setcon without persist-key -- this may cause restarts to fail
Aug 15 18:01:43 a openvpn[4755]: WARNING: No server certificate verification method has been enabled. See http://openvpn.net/howto.html#mitm for more info.
Aug 15 18:01:43 a openvpn[4755]: NOTE: OpenVPN 2.1 requires '--script-security 2' or higher to call user-defined scripts or executables
Aug 15 18:01:43 a openvpn[4755]: Control Channel Authentication: using '/home/MYUSERNAME/.cert/shared.key' as a OpenVPN static key file
Aug 15 18:01:43 a openvpn[4755]: LZO compression initialized
Aug 15 18:01:43 a openvpn[4756]: NOTE: UID/GID downgrade will be delayed because of --client, --pull, or --up-delay
Aug 15 18:01:43 a openvpn[4756]: UDPv4 link local: [undef]
Aug 15 18:01:43 a openvpn[4756]: UDPv4 link remote: 111.222.333.444:443
Aug 15 18:01:43 a openvpn[4756]: [vpnserver] Peer Connection Initiated with 192.168.1.1:443
Aug 15 18:01:46 a openvpn[4756]: Note: Cannot ioctl TUNSETIFF tun: Operation not permitted (errno=1)
Aug 15 18:01:46 a openvpn[4756]: Note: Attempting fallback to kernel 2.2 TUN/TAP interface
Aug 15 18:01:46 a openvpn[4756]: Cannot allocate TUN/TAP dev dynamically
Aug 15 18:01:46 a openvpn[4756]: Exiting
したがって、上記のコマンドを実行するにはroot権限が必要なようです。
私が見つけた解決策:
- setuidビット:https://fedoraproject.org/wiki/Features/RemoveSETUID- もう良くありません。
- rootとして「visudo」と入力し、以下をファイルに追加します。
MYUSERNAME ALL = NOPASSWD: /usr/sbin/openvpn
これにより、ユーザー「MYUSERNAME」はroot権限で「sudo /usr/sbin/openvpn」バイナリを起動できます。
PS1:
$ which openvpn
/usr/sbin/openvpn
ps2: Fedora 14/bash を使用。
Q:
- 一般ユーザーとしてOpenVPNクライアントを起動するより良い安全な方法はありますか?
答え1
OpenVPN
新しく作成されたインターフェイスにIPアドレスを割り当てる必要があるため、rootアクセスが必要です。
グラフィックモードで実行している場合は、NetworkManager
プラグインを試してみてくださいopenvpn
。このプラグインはうまく機能し、ワンクリックでVPNを取得できます。一部のユーザーはこれがNetworkManager
少し邪魔になると思います(しかしこれはOFTです)。
それ以外は、あなたが言ったように最高の機会ですsudo
。 IMHOはsetuidビットを使用するよりもはるかに優れています。