Passwörter in Skripten die mit Dollar-Ausrufezeichen beginnen
Hallo zusammen!
Sorry für den Titel, aber $ und ! sind da leider nicht erlaubt.
Ich habe ein Problem speziell mit meinem Kennwort unter Debian 8, da es mit $! beginnt.
Wenn ich ein Script ausführen möchte, in meinem Fall war dies die Benutzeranlage von Open-Xchange, wird das $! ignoriert:
Wenn ich hier mein Kennwort eingebe, also -p $!Abc123 wird das $! ignoriert, mein Kennwort wäre in diesem Fall also Abc123.
Auch wenn ich es in Anführungszeichen setze funktioniert es nicht.
Das ganze tritt nicht nur bei Open-Xchange auf, sondern bei allen Skripten, welchen ich auf diese Weise ein Kennwort mitgeben muss.
Kann ich irgendwo einstellen, dass $! nicht als Systemvariable gehandhabt wird, sondern als Text? Muss ich evtl. irgendwelche Zeichen davorsetzen?
Vielen Dank und Grüße,
Daniel
Sorry für den Titel, aber $ und ! sind da leider nicht erlaubt.
Ich habe ein Problem speziell mit meinem Kennwort unter Debian 8, da es mit $! beginnt.
Wenn ich ein Script ausführen möchte, in meinem Fall war dies die Benutzeranlage von Open-Xchange, wird das $! ignoriert:
/opt/open-xchange/sbin/createuser -c 1 -A oxadmin -P admin_password -u testuser -d "Test User" -g Test -s User -p $!Abc123 -e testuser@example.com --imaplogin testuser --imapserver 127.0.0.1 --smtpserver 127.0.0.1
Wenn ich hier mein Kennwort eingebe, also -p $!Abc123 wird das $! ignoriert, mein Kennwort wäre in diesem Fall also Abc123.
Auch wenn ich es in Anführungszeichen setze funktioniert es nicht.
Das ganze tritt nicht nur bei Open-Xchange auf, sondern bei allen Skripten, welchen ich auf diese Weise ein Kennwort mitgeben muss.
Kann ich irgendwo einstellen, dass $! nicht als Systemvariable gehandhabt wird, sondern als Text? Muss ich evtl. irgendwelche Zeichen davorsetzen?
Vielen Dank und Grüße,
Daniel
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 330060
Url: https://administrator.de/forum/passwoerter-in-skripten-die-mit-dollar-ausrufezeichen-beginnen-330060.html
Ausgedruckt am: 02.02.2025 um 12:02 Uhr
5 Kommentare
Neuester Kommentar
Deshalb muss man *JEDE* Nutzereingabe escapen lassen
Im jetzigen Script wäre es ja wirklich sehr bedauerlich, wenn ein Nutzer als Kennwort - sagen wir mal - ";halt -f" wählen würde... Oder schlimmeres...
Von wo kommen denn die Eingaben her?
Wenn sie aus einer Weboberfläche kommen, könntest du mit der jeweiligen Scriptsprache vorher das Escaping ausführen lassen. Bei PHP wäre das zum Beispiel mit escapeshellarg() getan.
NACHTRAG:
Auch die Single Quotes sind kein Ersatz für sauberes Escaping - dann wählt ein Nutzer eben als Kennwort und schaltet den Server aus.
Im jetzigen Script wäre es ja wirklich sehr bedauerlich, wenn ein Nutzer als Kennwort - sagen wir mal - ";halt -f" wählen würde... Oder schlimmeres...
Von wo kommen denn die Eingaben her?
Wenn sie aus einer Weboberfläche kommen, könntest du mit der jeweiligen Scriptsprache vorher das Escaping ausführen lassen. Bei PHP wäre das zum Beispiel mit escapeshellarg() getan.
NACHTRAG:
Auch die Single Quotes sind kein Ersatz für sauberes Escaping - dann wählt ein Nutzer eben
';halt -f
Latürnich! Allerdings funktioniert dann mancher Befehl erstmal nicht wie gewünscht. Allerdings kann man durch privilege-escalation trotzdem root-Rechte erlangen und Unsinn anstellen.
lks