Unterdrücke das Passwort im Shell-Skript-Debug-Modus

0

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 Passwort in einer anderen versteckten und geschützten Datei definiert und verwenden diese Datei dann, um PGPASSWORD in die Skripte zu exportieren, damit wir die Passwörter nicht als explizite Argumente übergeben müssen. Nur wenige Benutzer (Nicht-DBA) haben Ausführungsberechtigungen für die Skripte. Wenn sie das Skript im Debug-Modus (sh -x) ausführen, können sie die Passwörter im Klartext anzeigen.

Kamlesh Gallani
quelle
Welches Betriebssystem unterstützt aus Neugier sogar Skripte, die nur die Berechtigung 'Ausführen' haben, aber nicht 'Lesen'? Oder verwenden Sie einen anderen Weg, um zu verhindern cat $(which myscript)?
Grawity
@grawity - Ich habe mich auch gefragt, wie er eine Datei versteckt, auf die er über ein Skript zugreifen kann: Vielleicht setuidkönnte dies erreicht werden? Jeder, der das Skript lesen kann, kann sehen, wie das Kennwort aus der verborgenen Datei extrahiert wird: Sie müssen nicht im Debug-Modus ausgeführt werden.
AFH
@AFH: Zumindest Linux unterstützt keine setuid-Skripte. Und selbst wenn das Skript setuid war, würde die indirekte Ausführung über sh -xnur die Berechtigungen des shSkripts selbst anwenden , nicht jedoch die des Skripts.
Grawity
@grawity - Ich habe gerade getestet, wie ein Skript mit dem setuidBit ausgeführt wird, und habe bestätigt, dass es nicht verwendet werden kann: Wenn es normal aufgerufen wird, wird eine Subshell mit den Rechten des Aufrufers ausgeführt. Wenn er mit aufgerufen wird ., ändert sich der Benutzer der Shell nicht. Ich habe vorher nur geraten, also danke, dass du mich in Ordnung gebracht hast.
AFH