GNU/Linux >> Tutoriels Linux >  >> Linux

Exécuter le script avec des arguments en tant qu'utilisateur ?

J'essaie de m'assurer que lorsqu'un script est exécuté, il est exécuté en tant qu'utilisateur spécifique sans avoir à suivre cet utilisateur avant l'exécution du script. De plus, le script est exécuté avec quelques drapeaux par exemple

./myscript.sh -e dev -v 1.9

J'ai essayé ce qui suit

[ `whoami` = myuser ] || exec sudo -S su - myuser -c "bash `pwd`/`basename $0` [email protected]"

Mais le drapeau -v qui est censé être une entrée de mon script est alimenté en entrée de su. Il se plaint donc d'une option invalide, existe-t-il un moyen de corriger ce qui précède ?

NB :La personne qui exécute le script a les privilèges sudo.

Réponse acceptée :

L'utilisateur courant est déjà dans la variable $USER . Donc, tout ce dont vous avez besoin est :

[ "$USER" = "myuser" ] || sudo -u myuser $0 "[email protected]"

Il n'y a pas besoin de sudo su , sudo peut faire tout ce dont vous avez besoin. Vous n'avez pas non plus besoin de pwd ou basename , le $0 la variable a déjà le chemin complet vers le script.

Votre commande d'origine lançait un shell de connexion (su - ). Si c'est vraiment nécessaire (ce qui semble étrange), vous pouvez faire :

[ "$USER" = "myuser" ] || sudo -iu myuser $0 "[email protected]"

Linux
  1. Shell Script Wrapper pour empêcher l'exécution de la commande sans arguments ?

  2. Linux - Exécuter le script toutes les 30 minutes avec Systemd ?

  3. Comment exécuter un script ? ?

  4. Exécuter une partie d'un script bash en tant qu'utilisateur différent

  5. Exécuter un script shell en tant qu'utilisateur différent

Commande Linux runuser - Exécuter Shell avec l'ID utilisateur/groupe spécifié

Comment exécuter un script bash

Script au démarrage ?

Comment exécuter une partie d'un script avec des privilèges réduits ?

Vérifier le mot de passe de l'utilisateur avec un script shell

Comment passer plusieurs arguments à exécuter avec le script .sh