GNU/Linux >> Linux Esercitazione >  >> Linux

Esegui parte di uno script bash come utente diverso

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

Linux
  1. Eseguire script con argomenti come utente?

  2. Script Bash - Come leggere l'input dell'utente

  3. Come eseguire lo script come un altro utente senza password?

  4. Ubuntu - Esegui il comando all'avvio con sudo

  5. Come eseguire un comando come utente specifico in uno script init?

Esegui container su Linux senza sudo in Podman

Come eseguire uno script Bash {7 metodi}

Come eseguire uno script Bash

Esegui lo script bash dopo il login

Qual è la differenza tra root e sudo?

Eseguire uno script di shell come utente diverso