Instalá pamusb
sudo apt-get install libpam-usb pamusb-tools
Añadí tu pendrive como token de autenticación:
Conectá el pendrive en el puerto USB y ejecutá:
sudo pamusb-conf --add-device llaveusb
Donde llaveusb es un nombre identificativo para el token, pero puede ser cualquier otro.
Añadí usuarios a pam-usb:
Es muy fácil añadir usuarios como se puede ver en el siguiente ejemplo en el que añadiremos a earendil para autenticar con pam-usb:
sudo pamusb-conf --add-user earendil
Probá si funciona la autenticación:
Con el pendrive conectado, reemplazando earendil por el nombre de usuario que hayas elegido:
sudo pamusb-check earendil
Si dice: Access granted es porque todo va sobre ruedas.
Pam-usb como sistema de login:
Editá el archivo /etc/pam.d/common-auth y añadí la siguiente línea al principio:
sudo auth sufficient pam_usb.so
Para hacer todo esto se puede utilizar cualquier pendrive sin que sufra ninguna modificación, ya que el pam mira los datos del dispositivo hardware, como el fabricante, uuid y número de serie. Lo interesante es que aunque hiciésemos una copia completa del dispositivo, por ejemplo con dd, no obtendríamos una llave correcta para el token configurado.
Por último, cabe mencionar que pamusb permite la ejecución automática de comandos al conectar el pendrive, así que podríamos crear un sistema para hacer copias de seguridad al conectar la llave usb, o un sistema de fichajes y muchas otras cosas, pero esto ya lo dejo para que lo investiguen uds.
Fuente: Trucolinux