Code-Schnipsel: Bash Passwortabfrage

| Keine Kommentare

Immer wieder habe ich die letzten Tage Bash-Skripte schreiben müssen, die ein Passwort benötigen (z.B. um eine LDAP-Abfrage durchzuführen). Jetzt kann man das Passwort natürlich ganz einfach direkt in das Skript schreiben, was allerdings weder schön noch besonders sicher ist. Denn wie schnell vergisst man, dass Passwort nach Benutzung wieder aus dem Skript zu entfernen. Jeder der dann Zugriff auf das Skript hat, kann auch das Passwort auslesen.
Code photo

Die Lösung dieses Problems ist mehr als einfach. So kann ein Passwort einfach über read ausgelesen werden. Ich habe mich allerdings einmal auf die Suche gemacht, da ich eine schöner Lösung wollte, die etwas mehr Funktionen bietet. So habe ich mir gewünscht, dass bei einer Eingabe des Nutzers nicht die Eingabe ausgeworfen wird, was ja wieder eine potentielle Sicherheitslücke darstellen würde, sondern ein Sternchen. Außerdem sollte es für den Nutzer möglich sein, einen Schritt zurückzugehen und die letzte bzw. die letzten Eingaben zu löschen. Fündig geworden bin ich ein einem Forumsbeitrag auf stackoverflow.com. Hier kommt die Funktion, die ich aus den Antworten abegeleitet habe:

password_request ()
{
echo Bitte das LDAP Passwort eingeben und die Eingabe mit [ENTER] beenden
unset PWD;
while IFS= read -r -s -n1 pass; do
[[ -z $pass ]] && { printf '\n'; break; }
if [[ $pass == $'\x7f' ]]; then # Wenn die Zurueck-Taste gedrueckt wird
# letztes Zeichen der Variabel wieder entfernen
[[ -n $PWD ]] && PWD=${PWD%?}
# Lösche letztes '*'
printf '\b \b'
else
printf '*'
PWD+=$pass
fi
done
BINDPW=$PWD
}

Die Funktion kann dann in dem selben Skript einfach über die Eingabe ihres Namens password_request aufgerufen werden.

Autor: Alexander Kallenbach

Mein Name ist Alexander Kallenbach. Ich schreibe hier auf Scroom über alles mögliche – vor allem aber über IT. Hierbei interessieren mich besonders freie und/oder quelloffene Software sowie deren Entwicklung und Einsatz. Außerdem interessieren mich Auswirkungen von IT auf unser Leben. Hierbei ist die Nutzung von Daten und somit auch Datenschutz ein Themenbereich.

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert.