GNU/Linux >> Tutoriels Linux >  >> Linux

comment passer la variable d'environnement à sudo su

Conseil de pro :Il n'y a jamais vraiment de bonne raison d'exécuter sudo su . Pour exécuter une commande en tant qu'utilisateur différent, utilisez sudo -u username command . Si vous voulez un shell root, exécutez sudo -i ou sudo -l . Si vous avez activé le compte root, vous pouvez également exécuter su seul, mais sudo su n'est tout simplement pas utile. Et oui, je sais que vous le voyez partout.

Cela dit, sudo a le -E commutateur qui préservera l'environnement de la session de l'utilisateur :

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

Donc, vous devrez d'abord exporter votre variable, puis exécuter sudo -E :

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

Le bash -c n'est pas nécessaire. Cependant, si j'exécute sudo -Eu bob echo "$DUMMY" , la variable est développée avant le lancement du shell racine afin de ne pas démontrer que la commande fonctionne réellement :

$ 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

Vous pouvez le faire sans appeler le shell de connexion :

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

ou :

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

Le -p possibilité de su la commande conserve les variables d'environnement.


-E fait le travail pour moi.De l'homme sudo -

-E , --preserve-env
Indique à la politique de sécurité que l'utilisateur souhaite conserver ses variables d'environnement existantes. La politique de sécurité peut renvoyer une erreur si l'utilisateur n'a pas l'autorisation de préserver l'environnement.


Linux
  1. Comment exécuter une commande stockée dans une variable ?

  2. Comment exécuter Wireshark sur Ubuntu 17.10 ?

  3. Comment exécuter le terminal en tant que root ?

  4. Comment transmettre des variables d'environnement aux conteneurs Docker

  5. Comment changer la langue de mon git?

Comment définir/annuler les variables d'environnement sous Linux

Comment exécuter des commandes Sudo sans mot de passe

Comment définir une variable d'environnement dans Bash

Comment exécuter un alias avec Sudo sous Linux

Comment exécuter les commandes sudo sans mot de passe

Comment exécuter un audit de sécurité sur AlmaLinux avec Lynis