GNU/Linux >> Znalost Linux >  >> Linux

jak předat proměnnou prostředí sudo su

Tip pro profesionály:Pro spuštění sudo su není nikdy dobrý důvod . Chcete-li spustit příkaz jako jiný uživatel, použijte sudo -u username command . Pokud chcete root shell, spusťte sudo -i nebo sudo -l . Pokud jste aktivovali účet root, můžete také spustit su sám, ale sudo su prostě není užitečné. A ano, vím, že to vidíte všude.

To znamená sudo-E přepínač, který zachová prostředí uživatelské relace:

 -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.

Nejprve tedy budete muset exportovat svou proměnnou a poté spustit sudo -E :

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

bash -c není potřeba. Pokud však spustím sudo -Eu bob echo "$DUMMY" , proměnná se rozbalí před spuštěním kořenového shellu, takže nedemonstruje, že příkaz skutečně funguje:

$ 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

Můžete to udělat bez volání přihlašovacího shellu:

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

nebo:

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

-p možnost su příkaz zachovat proměnné prostředí.


-E to udělá za mě. Od muže sudo -

-E , --preserve-env
Označuje bezpečnostní politiku, že si uživatel přeje zachovat své stávající proměnné prostředí. Bezpečnostní politika může vrátit chybu, pokud uživatel nemá oprávnění k ochraně prostředí.


Linux
  1. Jak spustíme příkaz uložený v proměnné?

  2. Jak spustit Wireshark na Ubuntu 17.10?

  3. Jak spustit terminál jako root?

  1. Jak zpětně zajistit, aby skript běžel jako root?

  2. Jak předávat proměnné prostředí do kontejnerů Docker

  3. Jak změnit jazyk mého git?

  1. Jak odstraním exportovanou proměnnou prostředí?

  2. Jak mohu nastavit a spustit PhantomJS na Ubuntu?

  3. Jak zkontrolovat, zda mám sudo přístup?