¿Cómo permitir que eshell recuerde la contraseña de sudo durante dos minutos?

Pregunta:

En un término general ejecutando bash , cuando ejecuto un comando sudo ... , bash recordará mi contraseña por un tiempo. Esto facilita la tarea de administración de paquetes.

Por ejemplo:

sudo apt-get update
# password ......
sudo apt-get install turing-brain
# execute without requiring password again.

¿Es posible lograrlo en todo el mundo?

(Sé que term o ansi-term en Emacs puede hacer esto. Pero eshell se integra mejor con Emacs).

Respuesta:

En primer lugar, compruebe qué sudo se ejecuta en su sesión de eshell. Puede ser el sudo de su sistema:

$ which sudo
/path/to/system/wide/sudo
$ which *sudo
/path/to/system/wide/sudo

o el sudo de eshell:

$ which sudo
sudo is a compiled Lisp function in `em-tramp.el'
$ which eshell/sudo
eshell/sudo is a compiled Lisp function in `em-tramp.el'

El sudo de Eshell usa el método su o sudo de TRAMP. Estos comandos están en el módulo eshell-tramp, que está deshabilitado de forma predeterminada.

Cubriré el caso de sudo de eshell, porque es interno de Emacs y no depende de la distribución de su sistema operativo:

  1. Cargue el módulo eshell-tramp:

     (require 'em-tramp) ; to load eshell's sudo
  2. Cambiar al sudo de eshell

    • prefiriendo los comandos integrados

       (setq eshell-prefer-lisp-functions t)

      Parece que en Emacs 24.4 necesitamos configurar

       (setq eshell-prefer-lisp-variables t)
    • creando un alias (ejecute el fragmento en eshell)

       alias sudo 'eshell/sudo $*'

      Los alias definidos (o eliminados) por el comando alias se escriben automáticamente en el archivo nombrado por eshell-aliases-file , que también puede editar directamente (aunque tendrá que volver a cargarlo manualmente).

  3. Finalmente, habilite el almacenamiento en caché de contraseñas para el sudo de eshell (y TRAMP):

     (setq password-cache t) ; enable password caching (setq password-cache-expiry 3600) ; for one hour (time in secs)

PD: si ha cambiado su indicador con eshell-prompt-function , recuerde ajustar el indicador regex eshell-prompt-regexp en consecuencia. Una expresión regular incorrecta puede romper algunas funciones de eshell, incluida la detección de contraseñas.

Leave a Comment

Your email address will not be published. Required fields are marked *

web tasarım