Passwort im Shellskript-Debug-Modus unterdrücken

328
Kamlesh Gallani

Gibt es eine Möglichkeit, eine beliebige Zeichenfolge (wie 'xxxx' oder '***') anstelle eines Kennworts zu drucken, wenn der Shell-Debug-Modus verwendet wird.

Kontext - Ich habe einige Skripte, die eine Verbindung zur PostgreSQL-Datenbank herstellen. Wir haben das Kennwort in einer anderen versteckten und geschützten Datei definiert, und dann verwenden wir diese Datei, um PGPASSWORD in die Skripts zu exportieren, damit die Kennwörter nicht als explizite Argumente übergeben werden müssen. Nur wenige Benutzer (Nicht-DBA) verfügen über die Berechtigung zum Ausführen der Skripts. Wenn sie das Skript im Debug-Modus (sh -x) ausführen, können sie die Passwörter im Klartext anzeigen.

0
Welches Betriebssystem verwenden Sie aus Neugier, das sogar Skripts unterstützt, die nur die Berechtigung "Ausführen" haben, aber nicht "Lesen"? Oder verwenden Sie eine andere Möglichkeit, um "cat $ (welches myscript)" zu verhindern? grawity vor 7 Jahren 0
@grawity - Ich habe mich auch gefragt, wie er eine Datei versteckt, auf die er von einem Skript aus zugreifen kann. Vielleicht könnte `setuid` das erreichen? Jeder, der das Skript lesen kann, kann sehen, wie das Kennwort aus der versteckten Datei extrahiert wird: Sie müssen nicht im Debug-Modus ausgeführt werden. AFH vor 7 Jahren 0
@AFH: Zumindest Linux unterstützt keine Setuid-Skripte. Und selbst wenn das Skript setuid wäre, würde die indirekte Ausführung über "sh -x" nur die Berechtigungen von "sh" anwenden, nicht das Skript selbst. grawity vor 7 Jahren 0
@grawity - Ich habe gerade getestet, ein Skript mit dem `setuid`-Bit auszuführen, und zu bestätigen, dass es nicht verwendet werden kann: Wenn es normalerweise aufgerufen wird, wird eine Subshell mit den Privilegien des Aufrufers ausgeführt. Bei Aufruf mit `` ändert sich der Benutzer der Shell nicht. Ich habe vorher nur geraten, also danke, dass Sie mich richtig gestellt haben. AFH vor 7 Jahren 0

0 Antworten auf die Frage