Cómo hacer que el gestor de claves de Gnome deje de preguntar la contraseña

Hace tiempo hablé sobre cómo hacer que el gestor de claves de Gnome dejara de preguntar la contraseña utilizando PAM Keyring.

Uno de los inconvenientes de este método era que era necesario que la contraseña del anillo de claves del gestor de claves fuera la misma que la contraseña de usuario, y que el usuario la introdujera en la pantalla de login, lo que implica que no se podía utilizar si teníamos Ubuntu configurado para iniciar sesión automáticamente.

Una solución, que explicaré a continuación, consiste en almacenar la contraseña en un archivo de texto plano y crear un script que la introduzca automáticamente con un simple comando echo. Evidentemente esto no es muy seguro, ya que cualquiera podría leer la contraseña si tuviera acceso al archivo en la que está escrita. Si esto no os preocupa, pongamos manos a la obra.

Este método sigue utilizando PAM Keyring, por lo que lo primero que tendremos que hacer es instalarlo, en el caso de que no lo esté:

sudo aptitude install libpam-gnome-keyring

También necesitaremos el programa pam-keyring-tool. Primero instalaremos sus dependencias:

sudo aptitude install build-essential libglib1.2-dev libglib2.0-dev libtool libgnome-keyring-dev libpam0g-dev

Tras lo cuál podemos descargar el código fuente y compilarlo:

wget http://www.hekanetworks.com/opensource/pam_keyring/pam_keyring-0.0.9.tar.gz
tar xzfv pam_keyring-0.0.9.tar.gz
cd pam_keyring-0.0.9/
./configure
make
sudo mv src/pam-keyring-tool /usr/bin/

Ahora creamos un nuevo archivo de texto usando nuestro editor preferido, que contendrá el script que introducirá la contraseña por nosotros:

sudo gedit /usr/local/bin/unlock.sh

El contenido del script será el siguiente:

#!/bin/bash
echo contraseña | /usr/local/bin/pam-keyring-tool -u -s

Le damos permisos de ejecución:

sudo chmod +x /usr/local/bin/unlock.sh

Y sólo resta hacer que el script se ejecute al iniciar el sistema. Nos dirigimos a Sistema -> Preferencias -> Sesiones -> Programas de inicio -> Añadir, donde introduciremos “Desbloquear keyring” como nombre, por ejemplo, y como orden /usr/local/bin/unlock.sh

Comentarios
  1. ¿No es mas rapido dejar la contraseña del gestor de claves en blanco cuando lo creas asi no te la pide nunca?

    Responder

  2. Anónimo

    Lo primero, gracias. Lo segundo: vaya chapuza. Y no me refiero a tu solución, sino al hecho de que esta sea forzosamente la solución.

    ¿No podrían poner algún sitio donde especifiques una serie de permisos o algo por el estilo? Todo este rollo del keyring me parece lo más antiintuitivo del mundo. Veo algo de “seguridad por mis cojones”.

    Si uno quiere tener el autologin, que le capen la conexión a internet sí o sí es un castigo innecesario.

    Responder

  3. unf

    Oops, el de antes soy yo.

    Responder

  4. godsfork

    esto lo andaba buscando yo desde hace tiempo, de momento nadie va a mirar el archivo donde tengo la contraseña y era un rollo escribirla en cada login.

    solo una cosita, yo he tenido que cambiar el script donde pone
    echo contraseña | /usr/local/bin/pam-keyring-tool -u -s

    he tenido que poner
    echo contraseña | /usr/bin/pam-keyring-tool -u -s

    o debería poner el archivo pam-keyring-tool en el directorio local?

    Responder

  5. @godsfork No hace falta que lo pongas en /usr/local/bin, pero se considera una buena práctica.

    Responder

  6. seahawk

    hay algo mal en la ruta del script…tambien tuve q hacer el mismo cambio que godsfork porque sino me da como que no existe el archivo ya que en la guia figura “sudo mv src/pam-keyring-tool /usr/bin/” y luego en la config del script lo busca en “/usr/local/bin/”…

    despues del cambio el error es el siguiente:

    pam-keyring-tool: error unlocking the login keyring

    Responder

  7. […] la contraseña a cada inici de sessió. Açò ho podem fer seguint les instruccions d’aquest lloc. Comparteix […]

    Responder

  8. Pues yo no llego ahí siquiera.

    iozu@iozu-laptop:~/pam_keyring-0.0.9$ make
    make all-recursive
    make[1]: se ingresa al directorio `/home/iozu/pam_keyring-0.0.9′
    Making all in src
    make[2]: se ingresa al directorio `/home/iozu/pam_keyring-0.0.9/src’
    /bin/bash ../libtool –tag=CC –mode=compile gcc -DHAVE_CONFIG_H -I. -I.. -I./../include -DGNOME_KEYRING_DAEMON=\””/usr/bin/gnome-keyring-daemon”\” -DKILL=\””/bin/kill”\” -DPAM_KEYRING_TOOL=\””/usr/local/libexec/pam-keyring-tool”\” -g -Werror -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/gnome-keyring-1 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -g -O2 -MT pam_keyring.lo -MD -MP -MF .deps/pam_keyring.Tpo -c -o pam_keyring.lo pam_keyring.c
    /bin/bash: ../libtool: No existe el fichero ó directorio
    make[2]: *** [pam_keyring.lo] Error 127
    make[2]: se sale del directorio `/home/iozu/pam_keyring-0.0.9/src’
    make[1]: *** [all-recursive] Error 1
    make[1]: se sale del directorio `/home/iozu/pam_keyring-0.0.9′
    make: *** [all] Error 2

    Responder

  9. Powersgame

    Imanol el error que te muestra al hacer make es que no encuentra la aplicación libtool en la ruta especificada en el Makefile. Pero si has instalado el paquete libtool debes de tener la aplicación, solo que no se encuentra donde se está buscando.

    Bueno, situate en el paso antes de ejecutar ./configure. Lo que haremos será localizar el fichero que buscamos, para ello teclearemos

    $ locate libtool

    Parte de la salida que se muestra en mi caso es la siguiente:

    /usr/bin/libtool
    /usr/bin/libtoolize
    /usr/lib/R/bin/libtool
    /usr/share/libtool
    /usr/share/aclocal/libtool.m4
    /usr/share/autoconf-archive/ac_libtoolize_cflags.m4
    /usr/share/autoconf-archive/patch_libtool_changing_cmds_ifs.m4
    /usr/share/autoconf-archive/patch_libtool_on_darwin_pass_all.m4
    /usr/share/autoconf-archive/patch_libtool_on_darwin_zsh_overquoting.m4
    /usr/share/autoconf-archive/patch_libtool_sys_lib_search_path_spec.m4
    /usr/share/autoconf-archive/patch_libtool_to_add_host_cc.m4
    /usr/share/automake-1.10/am/libtool.am
    /usr/share/automake-1.4/libtool.am
    /usr/share/automake-1.9/am/libtool.a

    Si nos fijamos en la primera línea, una ruta válida en la que podemos encontrar el binario es: /usr/bin/libtool

    Ahora solo quedará buscar el Makefile que produce el error y en concreto la línea donde se hace referencia a la ruta errónea. Para ello nos volvemos a fijar en el mensaje de error que has colgado y vemos que el en el último directorio en el que se ingresó antes del error fue: /home/iozu/pam_keyring-0.0.9/src. Esto lo sabemos por la línea:

    make[2]: se ingresa al directorio `/home/iozu/pam_keyring-0.0.9/src’

    Por tanto no está mal pensar que si existe un Makefile en dicho directorio la línea en la que se produce el error debe de estar allí.

    Ejecutamos un editor para modificar el Makefile de dicho directorio:

    $ gedit /home/iozu/pam_keyring-0.0.9/src/Makefile

    Lo siguiente será localizar la línea donde se hace referencia a libtool, para ello podemos utilizar la función de búsqueda que incorpora el editor.

    Tras la búsqueda vemos que en varias líneas se hace uso de una variable llamada LIBTOOL, localizaremos pues la línea donde se inicializa esta variable:

    LIBTOOL = $(SHELL) $(top_builddir)/libtool

    Es lógico pensar que la variable LIBTOOL contendra la ruta hacia libtool, por tanto $(top_builddir) se expanderá como ..
    Asi que cambiaremos esta línea por:

    LIBTOOL = $(SHELL) /usr/bin/libtool

    Guardaremos el fichero, saldremos del editor y seguiremos los pasos que se describen en este post por donde lo dejamos, es decir, desde ./configure

    A mi me presentaba el mismo error y lo solucioné de esta forma.

    Un saludo

    Responder

  10. machi

    hola
    estoy hace unos dias ya intentando esto y no he podido lograr nada
    hice lo que decias en el comentario anterior pero me sigue tirando error al hacer el make

    emu-sensei@death-noteBOOK:~/pam_keyring-0.0.9$ make
    make all-recursive
    make[1]: se ingresa al directorio `/home/emu-sensei/pam_keyring-0.0.9′
    Making all in src
    make[2]: se ingresa al directorio `/home/emu-sensei/pam_keyring-0.0.9/src’
    /bin/bash ../libtool –tag=CC –mode=compile gcc -DHAVE_CONFIG_H -I. -I.. -I./../include -DGNOME_KEYRING_DAEMON=\””/usr/bin/gnome-keyring-daemon”\” -DKILL=\””/bin/kill”\” -DPAM_KEYRING_TOOL=\””/usr/local/libexec/pam-keyring-tool”\” -g -Werror -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/gnome-keyring-1 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -g -O2 -MT pam_keyring.lo -MD -MP -MF .deps/pam_keyring.Tpo -c -o pam_keyring.lo pam_keyring.c
    /bin/bash: ../libtool: No existe el fichero ó directorio
    make[2]: *** [pam_keyring.lo] Error 127
    make[2]: se sale del directorio `/home/emu-sensei/pam_keyring-0.0.9/src’
    make[1]: *** [all-recursive] Error 1
    make[1]: se sale del directorio `/home/emu-sensei/pam_keyring-0.0.9′
    make: *** [all] Error 2

    la verdad ya no se que hacer no tengo muy claro el uso de comandos ni nada

    Responder

    • santiago

      yo estoy igual que vos machi pero intenta luego de lo que te dice powergame empezar el proceso desde el make en lugar que desde el ./configure
      ¡Ojo que no soy apropiado para dar consejos no tengo idea!

      Responder

  11. santiago

    tengo el mismo problema que machi.
    estuve intentando y me parece que hay un problema que es que al hacer ./configure crea nuevamente el Makefile y borra la modificación que se hace a mano.
    por lo tanto ejecuté directamente desde el make y el error me sale pero ahora me dice que no encuentra el archivo en la dirección que me dice el locate. pero además yo tengo otro problema y es que la respuesta del locate es la siguiente

    santiago@laptop:~$ locate libtool
    /usr/share/gtksourceview-2.0/language-specs/libtool.lang

    es decir que no tengo el libtool exactamente ¿esto es correcto?
    pero si intento instalarlo aparece lo siguiente
    santiago@laptop:~$ sudo apt-get install libtool
    [sudo] password for santiago:
    Leyendo lista de paquetes… Hecho
    Creando árbol de dependencias
    Leyendo la información de estado… Hecho
    libtool ya está en su versión más reciente.
    0 actualizados, 0 se instalarán, 0 para eliminar y 1 no actualizados.

    No tengo mucha idea de lo que estoy haciendo por lo que estoy trancado.
    pongo mi salida del make donde se tranca como machi para ver si alguien me puede ayudar.

    santiago@laptop:~/pam_keyring-0.0.9$ make
    make all-recursive
    make[1]: se ingresa al directorio `/home/santiago/pam_keyring-0.0.9′
    Making all in src
    make[2]: se ingresa al directorio `/home/santiago/pam_keyring-0.0.9/src’
    /bin/bash ../usr/share/gtksourceview-2.0/language-specs/libtool.lang –tag=CC –mode=compile gcc -DHAVE_CONFIG_H -I. -I.. -I./../include -DGNOME_KEYRING_DAEMON=\””/usr/bin/gnome-keyring-daemon”\” -DKILL=\””/bin/kill”\” -DPAM_KEYRING_TOOL=\””/usr/local/libexec/pam-keyring-tool”\” -g -Werror -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/gnome-keyring-1 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -g -O2 -MT pam_keyring.lo -MD -MP -MF .deps/pam_keyring.Tpo -c -o pam_keyring.lo pam_keyring.c
    /bin/bash: ../usr/share/gtksourceview-2.0/language-specs/libtool.lang: No existe el fichero ó directorio
    make[2]: *** [pam_keyring.lo] Error 127
    make[2]: se sale del directorio `/home/santiago/pam_keyring-0.0.9/src’
    make[1]: *** [all-recursive] Error 1
    make[1]: se sale del directorio `/home/santiago/pam_keyring-0.0.9′
    make: *** [all] Error 2
    santiago@laptop:~/pam_keyring-0.0.9$

    Responder

Deja un comentario