GNU/Linux >> Linux Esercitazione >  >> Linux

Come eliminare i privilegi di root negli script della shell?

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

Linux
  1. Come personalizzare gli ambienti utente Linux

  2. Come impostare i privilegi di Sudo per l'utente in Linux

  3. Come disabilitare l'accesso dell'utente root tramite SSH

  4. Come passare dall'utente root a un altro utente che ha una shell Nologin?

  5. Come fare eco a una nuova riga negli script di Bash Shell

Come elencare tutti gli utenti in Linux

Come controllare i privilegi utente MySQL in Linux

Come accedere come root in MySQL?

Come utilizzare if-else negli script della shell?

Come limitare l'utente root in CentOS

Come abilitare l'utente root nel server Ubuntu?