staging.inyokaproject.org

Prüfen, ob ein Skript mit führendem Leerzeichen aufgerufen wurde

Status: Gelöst | Ubuntu-Version: Ubuntu 24.04 (Noble Numbat)
Antworten |

Doc_Symbiosis

Avatar von Doc_Symbiosis

Anmeldungsdatum:
11. Oktober 2006

Beiträge: 4453

Hallo,

ich habe ein Bash-Skript zum Setzen eines neuen Passworts eines Benutzers in einer Datenbank.

Jetzt würde ich gerne verhindern, dass die Aufrufe des Skripts in der Bash-History landen. Das geht ja, indem man einfach beim Aufruf ein Leerzeichen davor setzt.

Nun frage ich mich, ob ich aus dem Skript heraus auch irgendwie prüfen kann, ob ein Leerzeichen am Anfang des Aufrufs stand.

Ich habe das bereits mit dem Auswerten von $0 probiert, aber da ist das Leerzeichen schon nicht mehr drin.

Hat dazu jemand eine tolle Idee?

frostschutz

Avatar von frostschutz

Anmeldungsdatum:
18. November 2010

Beiträge: 7795

Ist so wahrscheinlich nicht möglich. Die Shell führt das Script ganz normal aus und macht eben nur intern keinen Eintrag in die History. Da wird meines Wissens auch sonst keine Environment Variable gesetzt oder sowas.

Wenn du verhindern willst, dass Passwörter in der History landen... dann musst du für diese eben einen Prompt machen und per read vom Benutzer abfragen, oder von stdin oder aus einer Datei lesen, und nicht als Kommandozeilenargument.

Die History ist da auch nur ein Problem, solange der Befehl läuft sind die Parameter auch über /proc/<pid>/cmdline einsehbar. Das Leerzeichen davor löst so gesehen das Problem gar nicht.

Die Bash bietet ansonsten über HISTIGNORE noch eine Möglichkeit, Befehle auszufiltern. Manche Leute schreiben da gängige Befehle rein (ls usw.) aber es ist eigentlich nervig, weil dann auch direkt in der Session kein Pfeilhochraufrunter mehr funktioniert um Befehle zu wiederholen...

Man könnte den Spieß umdrehen und in der bashrc (oder sonst einem Startup/Shutdown Service) die History nachbearbeiten. Damit würden die Befehle erstmal in der History landen, aber auch schnell wieder aussortiert werden.

Doc_Symbiosis

(Themenstarter)
Avatar von Doc_Symbiosis

Anmeldungsdatum:
11. Oktober 2006

Beiträge: 4453

Hallo frostschutz,

danke für die ganzen Hinweise! Das war mir auch schon soweit alles klar. Ich hatte halt drauf gehofft, dass man das irgendwie doch aus dem Skript heraus unterbinden kann.

Aber jetzt beim weiter drüber Nachdenken kam ich auch drauf, dass ein Check im Skript, ob es mit führendem Leerzeichen aufgerufen wurde, ja auch schon zu spät ist.

Denn wenn ich einen Check einbaue, so in der Art wie "Alarm, Du hast das Skript nicht mit führendem Leerzeichen aufgerufen!", dann wäre es ja auch schon zu spät und der Aufruf wäre ja schon in der History vorhanden.

Von daher werde ich mal sehen, ob ich das beim HISTIGNORE mit einbaue.

Besten Dank jedenfalls!

Antworten |