GNU/Linux >> Linux Esercitazione >  >> Linux

come passare la variabile d'ambiente a sudo su

Suggerimento pro:non c'è mai una buona ragione per eseguire sudo su . Per eseguire un comando come utente diverso, usa sudo -u username command . Se vuoi una shell di root, esegui sudo -i o sudo -l . Se hai attivato l'account root, puoi anche eseguire su da solo, ma sudo su non è solo utile. E sì, so che lo vedi ovunque.

Detto questo, sudo ha il -E switch che conserverà l'ambiente della sessione dell'utente:

 -E, --preserve-env
        Indicates to the security policy that the user wishes to preserve 
        their existing environment variables.  The security policy may
        return an error if the user does not have permission to 
        preserve the environment.

Quindi, dovrai prima esportare la tua variabile, quindi eseguire sudo -E :

$ export DUMMY=dummy
$ sudo -Eu bob bash -c 'echo $DUMMY'
dummy

Il bash -c non è necessario. Tuttavia, se eseguo sudo -Eu bob echo "$DUMMY" , la variabile viene espansa prima dell'avvio della root shell in modo da non dimostrare che il comando funziona effettivamente:

$ sudo -u bob echo $DUMMY  ## looks like it works but doesn't
dummy
$ sudo -u bob bash -c 'echo D:$DUMMY' ## now we see it failed
D:
$ sudo -Eu bob bash -c 'echo D:$DUMMY'  ## works as expected
D:dummy

Puoi farlo senza chiamare login shell:

sudo DUMMY=dummy su ec2-user -c 'echo "$DUMMY"'

oppure:

sudo DUMMY=dummy su -p - ec2-user -c 'echo "$DUMMY"'

Il -p opzione di su comando preserva le variabili d'ambiente.


-E fa il lavoro per me. Da man sudo -

-E , --preserve-env
Indica alla politica di sicurezza che l'utente desidera conservare le proprie variabili di ambiente esistenti. La politica di sicurezza può restituire un errore se l'utente non dispone dell'autorizzazione per preservare l'ambiente.


Linux
  1. Come eseguire un comando memorizzato in una variabile?

  2. Come eseguire retroattivamente uno script come root?

  3. Come posso eliminare una variabile di ambiente esportata?

  4. Come posso configurare ed eseguire PhantomJS su Ubuntu?

  5. Come verificare se ho accesso sudo?

Come impostare/disimpostare le variabili d'ambiente in Linux

Come eseguire comandi Sudo senza password

Come impostare la variabile d'ambiente in Bash

Come eseguire un alias con Sudo in Linux

Come eseguire sudo comandi senza password

Come eseguire un audit di sicurezza su AlmaLinux con Lynis