Root-Befehle können in einem OpenVPN-Skript nicht ausgeführt werden

Root-Befehle können in einem OpenVPN-Skript nicht ausgeführt werden

Ich verwende die OpenVPN-Option „Client-Connect“, um ein Skript auszuführen, wenn ein Client eine Verbindung herstellt.

Das Skript funktioniert einwandfrei, wenn ich einfache Befehle verwende, aber wenn ich Befehle hinzufüge, die Root-Berechtigungen erfordern, funktioniert es nicht und Clients können keine Verbindung zum VPN-Server herstellen.

Hier sind beispielsweise einige Befehle, die ich auszuführen versuche:

bgpctl reload Und

route add -net $ifconfig_pool_remote_ip/30 -interface $dev -static.

Die Befehle sind getestet und funktionieren einwandfrei. Ich verwende FreeBSD.

Irgendeine Idee, wie man das Problem beheben kann?

Danke schön!

Aktualisieren

Eigentlich gab es kein Problem mit den Berechtigungen. Das Skript konnte die Befehle nicht ausführen bgpctl, routeweil es sie nicht erkannte.

Ich konnte das Problem beheben, indem ich den vollständigen Pfad zu den Befehlen angegeben habe:

/usr/local/sbin/bgpctl reload

/sbin/route add -net $ifconfig_pool_remote_ip/30 -interface $dev -static

Jetzt funktioniert es.

Danke, Roaima.

Antwort1

Das --client-connectSkript wird als der durch den Parameter angegebene nicht privilegierte OpenVPN-Benutzer ausgeführt --user.

Sie können dies überprüfen, indem Sie diese Zeilen am Anfang Ihrer --client-connectDatei hinzufügen und die Ausgabe überprüfen, die /tmp/ov.lognach einer erfolgreichen Verbindung geschrieben wird

#!/bin/bash
exec >>/tmp/ov.log 2>&1
chmod 666 /tmp/ov.log 2>/dev/null
echo
date
id
echo "PATH=$PATH"

# Payload
bgpctl reload
route add -net "$ifconfig_pool_remote_ip/30" -interface "$dev" -static

# All done
true

Auf meinem System erhalte ich mit den Anweisungen --user nobodyund --group nogroupdiese Ausgabe:

Tue Jun  9 15:00:45 BST 2015
uid=65534(nobody) gid=65534(nogroup) groups=65534(nogroup)
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
...

Da Sie diese als rootBenutzer und wheelGruppe erhalten, verwenden Sie vermutlich nicht die --useroder --group-Direktive.

Es ist auch wichtig zu überprüfen, ob PATHdie erforderlichen Verzeichnisse für die Befehle enthalten sind, die Sie ausführen möchten.

verwandte Informationen