¿Cómo evitar que Emacs muestre la frase de contraseña en `Mx shell`?


9

Intenté usar ático con una frase de contraseña para hacer una copia de seguridad de mis archivos desde adentro M-x shell. El shell expuso la frase de contraseña como texto sin formato en el búfer y la hizo disponible al escribir M-ry al revisar el historial de entrada del shell con C-c C-l.

Cuando cerré el shell y volví a abrir el historial de entrada, vi que al menos desapareció. Presumiblemente, porque el shell lee su historia inicial .bash_historyy al menos bashtuvo el buen sentido de no escribir mi passphraseallí.

¿Realmente necesito irme emacspara realizar mis atticcopias de seguridad, o hay alguna forma de configurarlo para que no sea descuidado?

Pude reproducir el problema con una nueva emacs -Qsesión. Estaba confundido antes porque Emacs oculta correctamente la frase de contraseña en todos los casos excepto cuando llamo

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

Luego atticaparece como:

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

El problema se puede reproducir con esta línea única de Python:

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

Si la cadena de solicitud de contraseña es "Password:"Emacs ve una solicitud de contraseña, pero no si la cadena es otra cosa.

¿Cómo puedo hacer que Emacs reconozca al menos las solicitudes de contraseña del ático?

Respuestas:


13

En el modo Shell, Emacs detecta las solicitudes de contraseña en función de la solicitud. Si ve Password:(o Enter new password:, o Passwort:, o Wachtwoord:una serie de variaciones), asume que se le solicita que ingrese una contraseña y lee una cadena del minibúfer (repitiendo la solicitud); esta cadena no se repite y no se ingresa en ninguna lista de historial.

Si Emacs no reconoce una solicitud, puede lograr el mismo efecto llamando M-x send-invisible(no está vinculado a ninguna tecla de forma predeterminada).

Puede enseñar a Emacs a reconocer las solicitudes de contraseña que ve al personalizarlas comint-password-prompt-regexp. Tenga en cuenta que esta expresión regular se busca en la línea actual, por lo que debe comenzar ^si desea hacer coincidir el texto en el margen izquierdo, y debe terminar \'si no desea permitir texto arbitrario después.

Para agregar otro formato de solicitud, agregue \|^…\'al final de la expresión regular existente. Por ejemplo, podría agregar esto a su archivo de inicio (recuerde duplicar las barras invertidas entre comillas dobles):

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

1
Y si agrega algún elemento comint-password-prompt-regexp, considere enviarlo M-x report-emacs-bugpara que pueda agregarse a los valores predeterminados.
Stefan
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.