Usa il comando sudo nello script.
Nella forma:
sudo -u username command
il comando sudo esegue command come utente nomeutente .
Se lo script viene eseguito come root, non credo che richiederà una password. Altrimenti, questo articolo discute come usare sudo con password in una riga di comando?, e questo articolo discute come usare sudo senza password?
Questa risposta è buona, ma il consiglio serverfault è leggermente pericoloso:consentirebbe a chiunque di eseguire qualsiasi cosa come root! Quindi sto postando qui perché non riesco a formattare il commento.
Consiglierei di utilizzare visudo per fornire le autorizzazioni necessarie nel modo più preciso possibile. Digita visudo
e aggiungi una riga come:
username hostname = NOPASSWD: /full/path/to/command1, full/path/to/command2
Se hai bisogno di eseguire la stessa cosa su molti host, puoi aprirla con:
username ALL = NOPASSWD: /full/path/to/command1, full/path/to/command2
Ma **non* userei neanche:
username ALL=(ALL) NOPASSWD: ALL
orusername hostname =ALL
La pagina man sudoer contiene molti dettagli cruenti
# I=mi piace:
#test if running bash as a different user works
sudo -u nobody bash -c : && RUNAS="sudo -u nobody"
echo 1: $USER
#Runs bash with commands between '_' as nobody if possible
$RUNAS bash<<_
echo 2: \$USER
_
echo 3: $USER
# ./run
1: root
2: nobody
3: root