pam_usb: Ejecutar acciones al conectar o desconectar el pendrive | Algo de Linux

jueves, 27 de marzo de 2014

pam_usb: Ejecutar acciones al conectar o desconectar el pendrive

En un post anterior, os mostraba cómo utilizar un pendrive para iniciar sesión en el sistema sin tener que introducir nuestra contraseña. En este post vamos a ver cómo ejecutar comandos cuando se conecte o se desconecte el pendrive.

El ejemplo que vamos a ver es el más sencillo: Activar el salvapantallas y bloquear la pantalla cuando se desconecte el pendrive y desactivarlo cuando se vuelva a conectar. No obstante, se podría ejecutar cualquier comando. Por ejemplo, podríamos crear y utilizar un script que realice automáticamente una copia de seguridad de los documentos del usuario cuando conecte su pendrive. 

Para realizar la configuración de pamusb debemos entender cómo se encuentra organizado el archivo /etc/pamusb.conf:

<configuration>
    <defaults>
        <!-- default options -->
    </defaults>

    <devices>
        <!-- devices definitions -->
    </devices>

    <users>
        <!-- users definitions -->
    </users>

    <services>
        <!-- services definitions -->
    </services>
</configuration>

Como podéis ver, está dividido en cuatro secciones. Pues bien, en la sección será donde configuremos qué acciones deben realizarse cuando el usuario concreto introduzca el pendrive para el que estamos definiendo las reglas. Para que quede más claro, vamos a verlo con un ejemplo:

Supongamos que, siguiendo con el post anterior, creé un dispositivo al que llamé enavasSandisk y quiero que se active el salvapantallas en modo seguro cuando el usuario enam0000 que definí desconecte el pendrive y lo desactive cuando vuelva a introducirlo.

Para ello, abriré el archivo /etc/pamusb.conf y en la sección <users>  introduciré la siguiente definición:

<user id="enam0000">
    <device>enavasSandisk</device>
          <agent event="lock">mate-screensaver-command --lock</agent>
          <agent event="unlock">mate-screensaver-command --deactivate</agent>
</user>

Creo que la definición se entiende muy bien, ¿verdad?

El comando que estoy ejecutando en esta máquina es mate-screensaver-command porque tengo instalado mate en la máquina que estoy usando para realizar el tutorial. Si utilizáis gnome, el comando se llamará gnome-screen-saver-command.

Si en lugar de activar y desactivar el salvapantallas tan sólo queremos cerrar sesión cuando se desconecte el pendrive, podríamos hacer lo siguiente:

<user id="enam0000">
    <device>enavasSandisk</device>
          <agent event="lock">mate-session-save --logout</agent>
</user>

Una vez hecho ésto, lo único que nos queda es ir al menú Sistema -> Preferencias -> Aplicaciones al inicio y crear un lanzador que inicie pamusb-agent, quien se encargará de monitorizar la conexión o desconexión de dispositivos.

Por otra parte, también podríamos crear el lanzador manualmente desde un terminal:

# cat /home/enam0000/.config/autostart/pamusb-agent.desktop 
[Desktop Entry]
Type=Application
Exec=pamusb-agent
Hidden=false
X-MATE-Autostart-enabled=true
Name[es_ES]=pamusb-agent
Name=pamusb-agent
Comment[es_ES]=Monitorizar pamusb
Comment=Monitorizar pamusb

Publicado por primera vez en http://enavas.blogspot.com.es