GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Pourquoi ce script exécutant Su ne semble-t-il jamais se terminer si je change d'utilisateur dans le script ?

J'ai un script bash très simple avec 5 commandes exécutées sous l'utilisateur root. Si j'exécute les commandes manuellement une par une, tout fonctionne - pas de problème. Mais comme je l'exécute en tant que fichier my-deploy.sh via la commande

bash /root/custom-scripts/deploy/my-deploy.sh 2>> /var/log/www-deploy/tatrytec.eu.log

cela semble être un processus sans fin. Voici le script :

#!/bin/bash
# Run this script as bash command like: bash create-apache-site.sh

cd /var/www/html/tatrytec.eu

git pull

# Change user bacause of composer install warrning
su vlado

composer install  --no-scripts

npm install --production

Il commence à fonctionner et je peux voir le résultat de git pull dans le terminal. Mais ensuite, il meurt sans aucune erreur et il est toujours en cours d'exécution. Je peux l'arrêter via ctrl+Y. Je pense que quelque chose ne va pas avec cet utilisateur, mais comme je l'ai déjà écrit, si j'exécute les commandes une par une, cela fonctionne. Je ne comprends pas. Quelqu'un peut-il me dire quel pourrait être le problème? Merci.

Réponse acceptée :

Vous semblez vouloir exécuter les dernières lignes de votre script en tant qu'utilisateur vlado. Il existe un moyen propre de le faire :

sudo -u vlado  your_command 

Ainsi, les dernières lignes de votre script ressembleront à ceci :

sudo -u vlado composer install --no-scripts
sudo -u vlado npm install --production

Ubuntu
  1. Pourquoi "sudo Su" dans un script Shell n'exécute-t-il pas le reste du script en tant que racine ?

  2. Pourquoi la méthode suivante ne modifie-t-elle pas la taille limite du fichier principal ?

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

  4. Pourquoi Ubuntu continue-t-il à demander le mot de passe Gmail ?

  5. Pourquoi ce script pour supprimer une partie de l'historique des commandes ne fonctionne-t-il pas sur l'ordinateur ?

Comment changer le shell utilisateur par défaut dans le système d'exploitation Linux

Pourquoi Ping -f agit-il comme ça ?

Exécuter un script shell en parallèle

Exécutez un script shell à partir de la commande docker-compose, à l'intérieur du conteneur

Pourquoi le bit setuid fonctionne-t-il de manière incohérente ?

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