2016-05-31 9 views
0

Ich bin als Benutzer JSmith angemeldet. Als dieser Benutzer, ich führe ein Csh-Skript, das eine Reihe von ausführbaren Dateien ausführt. Eines dieser ausführbaren Programme muss jedoch mit dem Benutzer HJones ausgeführt werden. Danach sollten die anderen ausführbaren Dateien mit dem Benutzer JSmith ausgeführt werden. Beachten Sie, dass JSmith nicht der root-Benutzer ist und dass HJones ein Kennwort hat, das "abcd" ist. Wie ändere ich den Benutzer während der Ausführung des Skripts zu HJones, führe meine ausführbare Datei aus und wechsle dann wieder zu JSmith.Ändern Sie Benutzer während der Ausführung von Csh-Skript mit Nicht-Root-Benutzer

Hier ist ein Code in der Datei run_execs.sh, die ich mit dem Benutzer JSmith ausführen.

#!/bin/csh -f 

cd $EXEC_DIRECTORY 

./doJSmithThis 
./doJSmithThat 

sudo -u HJones ?? 

./doHJonesStuff 

sudo -u JSmith ?? 

./doJSmithAnother 
./doJSmithMoreStuff 

etc

Antwort

0

su -c './doHJonesStuff' - HJones wird das Skript doHJonesStuff als HJones laufen, wird es nicht Ihre anderen Befehle beeinflussen.

#!/bin/csh -f 

cd $EXEC_DIRECTORY 

./doJSmithThis 
./doJSmithThat 

su -c './doHJonesStuff' - HJones 

./doJSmithAnother 
./doJSmithMoreStuff 
+1

HJones ist passwortgeschützt Wie übermittele ich das Passwort? JSmith ist kein Root-Benutzer. – didjek

+0

@didjek Oh richtig. Es tut uns leid. Bearbeitet. –

0

Wenn Sie die csh-Skript wollen das Passwort liefern: (. Die sleep 1 gibt es da su ein Passwort verwerfen würde, die vor dem Prompt kam)

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