2016-11-18 1 views
2

Ich bin derzeit bei "SERVER1" mit Benutzer "USER1" angemeldet, und ich habe mein Bash-Skript hier platziert. Dieses Skript muss zum anderen Benutzer "USER2" auf demselben Server "SERVER1" wechseln und einige Befehle mit dem neuen geschalteten Benutzer ausführen.Wie wechseln Sie zu einem anderen Benutzer innerhalb eines Shell-Skripts und führen einen Befehl mit dem neuen Benutzer aus?

Hinweis: USER1 ist kein Root-Benutzer, daher muss ich das USER2-Passwort innerhalb des Skripts angeben, jedoch in einem verschlüsselten Format.

Bitte helfen Sie mir dabei ..!

#!/bin/bash 

command1 
command2 
. 
. 
... 

echo "PASSWORD" | su USER2 << EOF 
command1 
command2 
. 
. 
... 

Bitte beachten Sie, ich möchte hier keine Konfigurationsdateien ändern, um dies zu erreichen.

+0

Auch wenn es Ihnen gelingt, 'su' zu verwenden und das Passwort mit' expect' zu übergeben, muss das Passwort ein einfacher Text sein. Verwenden Sie 'sudo' mit der Option' NOPASSWD'. Dies garantiert, dass niemand das Passwort aus Ihrem Skript stehlen kann. – alvits

Antwort

4

Es ist keine gute Idee, Kennwörter in Skripts zu speichern oder sie in su zu streamen. Der bessere Ansatz ist die Verwendung von sudo.

Da Sie USER1 sind erlaubt, ohne ein Passwort als USER2 zu handeln, können Sie /etc/sudoers wie folgt aufgebaut:

USER1 localhost=(USER2) NOPASSWD: ALL 

Dann können Sie sudo als USER1 aufrufen wie folgt:

sudo -u USER2 bash 

Wenn Sie es ein wenig mehr sperren möchten, können Sie ein Skript angeben, das der Benutzer ausführen darf. Die Linie in /etc/sudoers aussehen könnte:

USER1 localhost=(USER2) NOPASSWD: /home/USER1/setup.sh 

Und Sie nennen würde:

sudo -u USER2 /home/USER1/setup.sh 

Hinweis in diesem letzten Beispiel, denke ich, dass USER2 eine tatsächliche Schale in /etc/passwd (dh konfiguriert haben müßte NICHT /bin/false).

+0

ya .. ich weiß das. Ich habe nur versucht, es ohne die '/ etc/sudoers'-Datei zu erstellen, da ich kein Root-Benutzer bin, um es zu bearbeiten. Danke für die Antwort..! – Rohith

+0

@Rohith: Wenn es schmerzhafte Einschränkungen gibt wie "Ich kann nichts zu"/etc/sudoers "hinzufügen, sollten Sie sie in der Frage auflisten, damit die Leute vermeiden können, Ihnen die offensichtlich vernünftige Antwort zu geben, wenn dies nicht der Fall ist erfüllen Sie Ihre Anforderungen aufgrund der Einschränkungen. (Es gibt auch einen Unterschied zwischen "nicht wollen" und "keine Erlaubnis" zu haben, "Konfigurationsdateien bearbeiten".) Wenn Sie '/ etc/sudoers' nicht hacken können, müssen Sie' expect' erkunden in Kombination mit 'su' oder etwas ähnlich Verschlagenem. Das ist keine gute Lösung; es könnte jedoch eine bessere Lösung sein. –

+0

Wenn Sie auf diesem System keine Root-Rechte haben, welche Aufgabe haben Sie dann, Befehle als ein anderer Benutzer auszuführen? – paddy

Verwandte Themen