2017-08-24 1 views
0

Je suis en train de tester si je peux exécuter le script en tant qu'utilisateur1, puis sudo en tant qu'utilisateur2 pour exécuter une section du script en tant qu'utilisateur, puis revenir à utilisateur1 par la suite.Commutateur bash d'utilisateurs UNIX d'avant en arrière

Apparemment, mon script est bloqué après le premier sudo et n'exécute pas les lignes suivantes. Comment cela peut-il être résolu?

Toutes mes excuses que je ne suis vraiment pas expérimenté dans les scripts shell

#!/bin/bash 
whoami 
ls -lrt /myfolder 
sudo -i -u user2 
whoami 

sftp ${othersvr} <<EOF 
cd /tgtpath 
lcd /myfolder 
get -p *.txt 
exit 
EOF 

sudo -i -u user1 
whoami 
ls -lrt /myfolder 
+0

vous avez à 'exit' de chaque appel de' sudo' (je suis sûr) . Bonne chance. – shellter

+0

toujours coincé avec user2 après le premier sudo. la commande après le sudo à user2 n'est pas exécutée – mtryingtocode

Répondre

1

Vous devriez trouver une meilleure façon de faire ce que vous voulez, comme l'utilisation de ACL s ou quelque chose.

Cependant, si vous voulez le faire de cette façon, prendre en compte que sudo peut recevoir une commande

sudo -i -u user2 'whoami; ls -lrt /myfolder' 
sudo -i -u user1 'whoami; ls -lrt /myfolder' 
+0

comment puis-je faire correctement si la commande que je veux être exécutée est un sftp. J'ai mis à jour mon exemple ci-dessous pour votre référence – mtryingtocode

+0

Il suffit de créer un script en faisant toutes les étapes que vous voulez faire (et de simplifier l'échappement) et l'invoquer à partir de 'sudo -i -u user script' –