L'opzione "--up" in OpenVPN viene normalmente utilizzata per il routing ecc. E quindi viene elaborata prima che OpenVPN elimini i privilegi di root per funzionare come nessuno. Tuttavia, sto invocando script di shell che devono essere eseguiti come utente senza privilegi.
Come lo faccio? Ho studiato i privilegi di Drop Process , in particolare le risposte del polinomio e di tylerl, ma non capisco come implementarlo. Sto lavorando in Centos 6.5 e il suid è bloccato, sia come "chmod u + s" che come "setuid ()".
Esiste un plug-in OpenVPN ("openvpn-down-root.so") che consente agli script richiamati dall'opzione "--down" di essere eseguiti come root. Potrebbe esserci un equivalente, come "openvpn-up-user.so", ma non l'ho trovato.
Edit0
Secondo la risposta di Nikola Kotur, ho installato i runit-rpm di Ian Meyer . Sebbene il comando chpst funzioni nel terminale, nello script up non riesce con "comando non trovato". Ciò che funziona è "sudo chpst" oltre a impostare la visualizzazione e la lingua corrette. Vedere Perché il mio terminale non emette correttamente i caratteri Unicode? Detto questo, lo script up ha bisogno di queste quattro righe:
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 il commento di 0xC0000022L, trovo che "sudo -u user" funziona così come "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 &
Studierò man sudoers e aggiornerò se / quando farò funzionare sudo da solo.