2016-11-17 4 views
0

Ich bin ein Bash-Skript für meine Arbeit zu bauen, um die erste Einrichtung und Windows-Domain beitreten für unsere Ubuntu-Maschinen einfach genug für jemanden, der nichts über Linux weiß es tun können. Ich habe viele Leute gefunden, die sagen, dass Sie keine Passwörter durch ein Skript weitergeben sollten, aber um effizient zu sein, muss ich. Das Skript fordert zu Beginn Informationen und Anmeldeinformationen auf und es muss in der Lage sein, seine Arbeit ohne Interaktion auszuführen. Ich kann es nicht durch ps sichtbar machen, wenn ich es passiere, und ich kann es nicht als ungesicherte Variable speichern lassen. Irgendwelche Vorschläge?Passwort sicher durch Bash

+0

Welchen Befehl (en) benötigen Sie, um das Passwort zu übergeben? – Gilles

Antwort

2

Wenn Sie dies wirklich tun müssen, können Sie die Anmeldeinformationen früh im Skript in Variablen mit read -s lesen und diese Werte dann an die Eingabeaufforderungen übergeben. Zum Beispiel:

read -p "Enter your username: " username 
read -sp "Enter your password: " password 
echo 

enthalten ich die leeren echo weil die -s Option für read die Eingabe des Benutzers verhindert im Terminal erscheinen, einschließlich der neuen Linie in der Regel erstellt, nachdem ein BenutzerGeben Sie drückt, wenn eine Aufforderung zu beantworten.

Sie können dann mit den $username und $password Variablen für den Rest des Skripts und die Anmeldeinformationen werden nicht außerhalb des Speichers gespeichert werden müssen, was bedeutet, werden sie verloren/zerstört werden, nachdem das Skript abgeschlossen.

Beachten Sie jedoch, dass alle Programme oder Dienstprogramme, die die Anmeldeinformationen als Befehlszeilenargumente verwenden, diese anderen Benutzern auf dem Computer, auf dem das Skript ausgeführt wird, anzeigen. Zum Beispiel, wenn ich eine MySQL-Abfrage mit dieser Methode laufen bin, konnte ich tun:

mysql -u "${username}" -p"${password}" -e "SHOW DATABASES;" 

Andere Benutzer auf der Maschine die Anmeldeinformationen sehen können, während die mit so etwas wie ps ausgeführt wurden:

ps -ef | grep mysql 
... 
watrudoin 29512 29443 0 12:57 pts/4 00:00:00 mysql -u MyUserName -phunter2 -e SHOW DATABASES 

Sie müssen nur darauf achten, dass das, was Sie tun, nicht unbedingt sicher ist, aber es scheint, dass Sie bereits sind.

+1

Einige Befehle ermöglichen das Festlegen des Passworts in einer Konfigurationsdatei und das Lesen der Konfigurationsdatei von stdin, so dass Sie z. das folgende Konstrukt: 'echo" -u user \ n -p $ pw "| curl -K - ... 'damit du es passieren kannst, ohne sichtbar zu sein (nimm nicht die curl config wie sie ist, sie ist von unten nach oben und nur um das Prinzip zu demonstrieren) - du müsstest das überprüfen Befehle, die Sie benötigen oder versuchen, diejenigen auszuwählen, die dies unterstützen –

+0

Ja, viele, wenn nicht die meisten Befehle oder Dienstprogramme enthalten solche Funktionen. Ich habe den Vorbehalt für "alle Programme oder Dienstprogramme, die die Berechtigungsnachweise als Befehlszeilenargumente annehmen" eingefügt. – edaemon

+0

"Ich kann es nicht durch ps sichtbar machen, wenn ich es passiere" – Gilles

Verwandte Themen