Die Option "--up" in OpenVPN wird normalerweise für das Routing usw. verwendet. Daher wird sie verarbeitet, bevor OpenVPN die Root-Rechte verliert, um als "nobody" ausgeführt zu werden. Ich rufe jedoch Shell-Skripte auf, die als nicht privilegierter Benutzer ausgeführt werden müssen.
Wie mache ich das? Ich habe Drop Process Privileges studiert , insbesondere die Antworten von Polynomen und TylerLer, aber ich verstehe nicht, wie man sie implementiert. Ich arbeite in Centos 6.5 und suid ist blockiert, sowohl als "chmod u + s" als auch als "setuid ()".
Es gibt ein OpenVPN-Plugin ("openvpn-down-root.so"), mit dem von der Option "--down" aufgerufene Skripts als Root ausgeführt werden können. Es könnte ein Äquivalent geben, wie "openvpn-up-user.so", aber ich habe es nicht gefunden.
Edit0
Per Nikola Koturs Antwort habe ich Ian Meyers Runit-RPM installiert . Obwohl der Befehl chpst im Terminal funktioniert, schlägt er im Skript up mit "Befehl nicht gefunden" fehl. Was funktioniert, ist "sudo chpst" und das Einstellen der richtigen Anzeige und Sprache. Weitere Informationen finden Sie unter Warum gibt mein Terminal Unicode-Zeichen nicht ordnungsgemäß aus? Vorausgesetzt, das up-Skript benötigt diese vier Zeilen:
LANG="en_US.UTF-8"; export LANG
GDM_LANG="en_US.UTF-8"; export GDM_LANG
DISPLAY=:0; export DISPLAY
sudo chpst -u user -U user /home/user/unprivileged.sh &
Edit1
Per 0xC0000022L's Kommentar stelle ich fest, dass "sudo -u user" genauso funktioniert wie "sudo chpst -u user -U user":
LANG="en_US.UTF-8"; export LANG
GDM_LANG="en_US.UTF-8"; export GDM_LANG
DISPLAY=:0; export DISPLAY
sudo -u user /home/user/unprivileged.sh &
Ich werde Man Sudoer studieren und aktualisieren, wenn ich Sudo alleine zum Arbeiten bringe.