Wie kann verhindert werden, dass Emacs eine Passphrase in der Mx-Shell anzeigt?


9

Ich habe versucht, Dachboden mit einer Passphrase zu verwenden, um meine Dateien von innen zu sichern M-x shell. Die Shell hat die Passphrase als einfachen Text im Puffer verfügbar gemacht und sie durch Eingabe M-rsowie durch Durchsuchen des Shell-Eingabeverlaufs mit verfügbar gemacht C-c C-l.

Als ich die Shell schloss und den Eingabeverlauf erneut öffnete, sah ich, dass er zumindest verschwand. Vermutlich, weil die Shell ihre ursprüngliche Geschichte liest .bash_historyund zumindest bashden guten Sinn hatte, meine passphrasedort nicht zu schreiben .

Muss ich wirklich gehen emacs, um meine atticBackups durchzuführen , oder kann ich es so konfigurieren, dass es nicht nachlässig ist?

Ich konnte das Problem mit einer neuen emacs -QSitzung reproduzieren . Ich war vorher verwirrt, weil Emacs die Passphrase in allen Fällen korrekt verbirgt, außer wenn ich anrufe

 attic create --stats /path/to/backup::name ~/folders ~/backed ~/up

Dann werden folgende atticEingabeaufforderungen angezeigt:

Enter passphrase for /path/to/backup::name:

Das Problem kann mit diesem Python-Einzeiler reproduziert werden:

python -c 'import getpass; getpass.getpass("Hello")'

Wenn die Kennwort-Eingabeaufforderungszeichenfolge lautet, "Password:"wird von Emacs eine Kennwortabfrage angezeigt, jedoch nicht, wenn die Zeichenfolge eine andere Zeichenfolge ist.

Wie kann ich Emacs dazu bringen, zumindest die Passwortabfragen auf dem Dachboden zu erkennen?

Antworten:


13

Im Shell-Modus erkennt Emacs Kennwortabfragen anhand der Eingabeaufforderung. Wenn es Password:(oder Enter new password:, oder Passwort:, oder Wachtwoord:oder eine Reihe von Variationen) sieht , wird davon ausgegangen, dass Sie aufgefordert werden, ein Kennwort einzugeben, und eine Zeichenfolge aus dem Minibuffer gelesen wird (Wiederholung der Eingabeaufforderung). Diese Zeichenfolge wird nicht wiederholt und in keiner Verlaufsliste eingetragen.

Wenn Emacs keine Eingabeaufforderung erkennt, können Sie den gleichen Effekt erzielen, indem Sie aufrufen M-x send-invisible(standardmäßig nicht an einen Schlüssel gebunden).

Sie können Emacs beibringen, die angezeigten Kennwortabfragen durch Anpassen zu erkennen comint-password-prompt-regexp. Beachten Sie, dass dieser reguläre Ausdruck in der aktuellen Zeile durchsucht wird. Er sollte also mit beginnen, ^wenn Sie Text am linken Rand abgleichen möchten, und mit enden, \'wenn Sie anschließend keinen beliebigen Text zulassen möchten.

Um ein weiteres Eingabeaufforderungsformat hinzuzufügen, fügen Sie \|^…\'am Ende des vorhandenen regulären Ausdrucks hinzu. Sie können dies beispielsweise zu Ihrer Init-Datei hinzufügen (denken Sie daran, Backslashes zwischen doppelten Anführungszeichen zu verdoppeln):

(setq comint-password-prompt-regexp
      (concat comint-password-prompt-regexp
              "\\|^Enter passphrase for .*:\\s *\\'"))

1
Wenn Sie ein Element hinzufügen comint-password-prompt-regexp, sollten Sie es über senden, M-x report-emacs-bugdamit es zu den Standardeinstellungen hinzugefügt werden kann.
Stefan
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.