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.
cat $(which myscript)
?setuid
kö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.sh -x
nur die Berechtigungen dessh
Skripts selbst anwenden , nicht jedoch die des Skripts.setuid
Bit 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.