L'opzione "–up" in OpenVPN viene normalmente utilizzata per il routing, ecc. E quindi viene elaborata prima che OpenVPN rilasci 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 di polinomi e tylerl, ma non capisco come implementarli. Sto lavorando in Centos 6.5 e 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.
Modifica0
Per la risposta di Nikola Kotur, ho installato 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" più l'impostazione del display e della lingua corretti. Si prega di 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 &
Modifica1
Secondo il commento di 0xC0000022L, trovo che "sudo -u user" funzioni 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 avrò sudo da solo al lavoro.
Risposta accettata:
Uso il chpst
di runit strumento per compiti come questo. Ad esempio, dallo script in alto chiama il tuo script non privilegiato:
chpst -u nobody /path/to/script