it-swarm.com.de

Ist es möglich, Passwörter für ein Shell-Skript zu übergeben?

Lange suche ich danach, ich würde gerne wissen, ob es möglich ist, Passwörter in einem Shell-Skript zu übergeben? Viele der Antworten kehrten mit Nein zurück. Kürzlich habe ich einen Artikel gelesen, der besagt, wie man Passwörter in einem Shell-Skript weitergibt. Ich habe das versucht, aber es scheint nicht zu funktionieren. Dies ist der Link . Kann jemand auschecken und zurückkehren? Auch bitte sagen Sie mir, gibt es eine Möglichkeit, Passwörter in einem Shell-Skript zu übergeben? Wenn nein, bitte sag mir, wie Linux die Eingabe für das Passwort bekommt?

11
karthick87

Mit "Eingeben von Passwörtern" meinen Sie wahrscheinlich die Eingabe von Daten, ohne dass sie für den Benutzer sichtbar sind.

(vorgeschlagen von geirha) Wenn Sie bash verwenden, können Sie die Option -s verwenden, um zu verhindern, dass eingegebene Zeichen angezeigt werden:

read -p "Password please: " -s pass

Alternativ können Sie das Verhalten des Terminals ändern, um eingegebene Zeichen mit stty -echo auszublenden (deaktivieren Sie echo). Nachdem Sie das Kennwort mit der integrierten Shell read in eine Variable eingelesen haben (im folgenden Beispiel $pass), schalten Sie es mit stty echo wieder ein. Weil die neue Leitung aus Enter verborgen ist, müssen Sie eine neue Zeile drucken, um die zukünftige Ausgabe in einer neuen Zeile zu erhalten.

stty -echo
read -p "Password please: " pass
stty echo
printf '\n'

read und printf sind integrierte Shell-Funktionen. stty wird durch das Paket coreutils bereitgestellt, das standardmäßig installiert ist. Das bedeutet, dass dieses Snippet sehr portabel ist.

Hinweis: Die Option -p ist nicht Standard, sondern von bash. Wenn Sie eine Eingabeaufforderung in anderen Shells anzeigen müssen, verwenden Sie:

printf "Password please: "
stty -echo
read pass
stty echo
printf '\n'

Verweise:

11
Lekensteyn

An welches Programm möchten Sie ein Passwort übergeben?

Das Skript auf dem Link funktioniert für mich. Beachten Sie, dass es sich nicht um ein Shell-Skript, sondern um ein Expect-Skript handelt (dazu muss das Paket expect installiert sein). Die Verwendung von expect ist eine gängige Methode zur Automatisierung textbasierter interaktiver Programme.

Nicht interaktive ssh Anmeldungen werden häufig mithilfe der schlüsselbasierten Authentifizierung mit einer leeren Passphrase durchgeführt.

Einige andere Programme (wie Sudo) haben Optionen, um ein Passwort von stdin zu lesen.

Das Bereitstellen eines Kennworts als Befehlszeilenoption ist häufig ein Sicherheitsproblem, da auf den meisten Systemen jeder Benutzer mit einfachen Tools wie ps die Prozesse anderer Benutzer einschließlich der Befehlszeilenargumente anzeigen kann.

2
Florian Diesch

Ein Skript sollte niemals wirklich mit Passwörtern umgehen. Lassen Sie die Anwendung nach dem Kennwort fragen. Ist dies nicht möglich, finden Sie eine bessere Möglichkeit, sich bei der Anwendung zu authentifizieren. Bitte lies http://mywiki.wooledge.org/BashFAQ/069

1
geirha

Es gibt eine Möglichkeit, Kennwörter in einem Bash-Skript zu speichern, aber Sie müssen das Skript verschlüsseln, damit niemand es lesen oder einen beliebigen Debugger ausführen kann, um genau zu sehen, was es tut. Um ein Bash/Shell-Skript zu verschlüsseln und tatsächlich ausführbar zu machen, kopieren Sie es und fügen Sie es ein hier

Auf der obigen Seite müssen Sie lediglich Ihr Skript einreichen (Sie können zur Beruhigung zuerst ein Beispielskript einreichen). Eine Zip-Datei wird für Sie generiert. Klicken Sie mit der rechten Maustaste auf den Download-Link und kopieren Sie die angegebene URL. Gehen Sie dann zu Ihrer UNIX-Box und führen Sie die folgenden Schritte aus.

Installation:

   wget link-to-the-Zip-file
   unzip the-newly-downloaded-Zip-file
   cd /tmp/KingLazySHIELD
   ./install.sh  /var/tmp/KINGLAZY/SHIELDX-(your-script-name) /home/(your-username)  -force 

Mit dem obigen Installationsbefehl können Sie Folgendes ausführen:

  1. Das verschlüsselte Skript wird im Verzeichnis /var/tmp/KINGLAZY/SHIELDX-(your-script-name) installiert.

  2. Es wird eine Verknüpfung zu diesem verschlüsselten Skript in dem Verzeichnis erstellt, das Sie anstelle von /home/(your-username) angegeben haben. Auf diese Weise können Sie problemlos auf das Skript zugreifen, ohne den absoluten Pfad eingeben zu müssen.

  3. Stellt sicher, dass NIEMAND das Skript ändern kann - Jeder Versuch, das verschlüsselte Skript zu ändern, macht es funktionsunfähig ... bis diese Versuche gestoppt oder entfernt werden.

  4. Stellt sicher, dass NIEMAND Kopien davon anfertigen kann. Niemand kann Ihr Skript an einen abgelegenen Ort kopieren und versuchen, damit herumzudrehen, um zu sehen, wie es funktioniert. Alle Kopien des Skripts müssen Links zum ursprünglichen Speicherort sein, den Sie bei der Installation angegeben haben.

HINWEIS:

Ich glaube nicht, dass dies für interaktive Skripte funktioniert, die den Benutzer zu einer Antwort auffordern. Die Werte sollten im Skript fest codiert sein. Die Verschlüsselung stellt sicher, dass niemand diese Werte tatsächlich sehen kann, sodass Sie sich darüber keine Gedanken machen müssen.

0