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.
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.
sh -xnur die Berechtigungen des shSkripts selbst anwenden , nicht jedoch die des Skripts.
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.
cat $(which myscript)?