2016-05-31 1 views
0

Je suis connecté en tant qu'utilisateur JSmith. En tant qu'utilisateur, j'exécute un script csh qui exécute une série d'exécutables. Toutefois, l'un de ces exécutables doit être exécuté avec l'utilisateur HJones. Après cela, les autres exécutables doivent être exécutés avec l'utilisateur JSmith. Notez que JSmith n'est pas l'utilisateur root et que HJones a un mot de passe, qui est "abcd". Comment changer l'utilisateur en HJones pendant l'exécution du script, exécuter mon exécutable, puis revenir à JSmith.Modification de l'utilisateur lors de l'exécution du script csh à l'aide de l'utilisateur non root

Voici du code dans le fichier run_execs.sh, que je cours avec l'utilisateur JSmith.

#!/bin/csh -f 

cd $EXEC_DIRECTORY 

./doJSmithThis 
./doJSmithThat 

sudo -u HJones ?? 

./doHJonesStuff 

sudo -u JSmith ?? 

./doJSmithAnother 
./doJSmithMoreStuff 

etc

Répondre

0

su -c './doHJonesStuff' - HJones va exécuter le script doHJonesStuff comme HJones, il n'affectera pas vos autres commandes.

#!/bin/csh -f 

cd $EXEC_DIRECTORY 

./doJSmithThis 
./doJSmithThat 

su -c './doHJonesStuff' - HJones 

./doJSmithAnother 
./doJSmithMoreStuff 
+1

HJones est protégé par mot , alors comment puis-je passer le mot de passe? JSmith n'est pas un utilisateur root. – didjek

+0

@didjek Oh, c'est vrai. Pardon. Édité. –

0

Si vous voulez que le script csh pour fournir le mot de passe: (. Le sleep 1 est là parce su écarterait un mot de passe qui est arrivé avant l'invite)

(sleep 1 ; echo abcd) | socat -,ignoreeof EXEC:'su -c ./doHJonesStuff HJones',pty