GNU/Linux >> Tutoriels Linux >  >> Linux

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

Utilisez la commande sudo dans le script.

Sous la forme :

sudo -u username command

la commande sudo exécute la commande en tant qu'utilisateur nom d'utilisateur .

Si le script est exécuté en tant que root, je ne pense pas qu'il demandera un mot de passe. Sinon, cet article explique comment utiliser sudo avec mot de passe dans une ligne de commande ?, et cet article explique comment utiliser sudo sans mot de passe ?


Cette réponse est bonne, mais le conseil de serverfault est légèrement dangereux - permettrait à n'importe qui d'exécuter n'importe quoi en tant que root ! Je poste donc ici car je n'arrive pas à formater le commentaire.

Je recommanderais d'utiliser visudo pour donner les autorisations dont vous avez besoin aussi précisément que possible. Tapez visudo et ajoutez une ligne comme :

username hostname = NOPASSWD: /full/path/to/command1, full/path/to/command2

Si vous avez besoin d'exécuter cette même chose sur plusieurs hôtes, vous pouvez l'ouvrir avec :

username ALL = NOPASSWD: /full/path/to/command1, full/path/to/command2

Mais je n'utiliserais **pas* non plus :

username ALL=(ALL) NOPASSWD: ALL

ounom_utilisateur nom_hôte =ALL

La page de manuel de sudoer contient de nombreux détails sanglants


# J'aime :

#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

# ./exécuter

1: root
2: nobody
3: root

Linux
  1. Comment exécuter rétroactivement un script en tant que root ?

  2. Bash Script - Comment lire l'entrée de l'utilisateur

  3. Comment exécuter le script en tant qu'autre utilisateur sans mot de passe ?

  4. Exécuter le script bash en tant que démon

  5. Autorisation refusée avec bash.sh pour exécuter cron

Comment exécuter un script bash {7 méthodes}

Comment exécuter un script bash

Ajout à $PYTHONPATH avec un script bash

Exécuter le script bash après la connexion

Quelle est la différence entre root et sudo ?

su - utilisateur Vs sudo su - utilisateur