Skip to content

Instantly share code, notes, and snippets.

@Guitsou
Last active August 7, 2020 07:53
Show Gist options
  • Save Guitsou/5866986 to your computer and use it in GitHub Desktop.
Save Guitsou/5866986 to your computer and use it in GitHub Desktop.
Authentification avec le PAM USB : se connecter avec une clé USB, et verrouiller la session automatiquement... Tutorial Ubuntu 13.04 / LXDE Sources : http://doc.ubuntu-fr.org/tutoriel/pam-usb /

Installation des paquets

sudo apt-get update && sudo apt-get install libpam-usb pamusb-tools

Il est possible de compiler le paquet pour les distributions n'ayant pas de paquet...

Ajout de clés et utilisateurs

Ajouter une nouvelle clé USB

Insérer la clé USB désirée (fonctionne avec une carte de type SD). Vérifier :

  • qu'il n'y a pas d'autres clés (évite les confusions !)
  • que cette clé est bien accessible (/media...)
sudo pamusb-conf --add-device nom_de_ma_clé

avec nom_de_ma_clé correspond à un nom descriptif... PamUSB propose les clés dispo

Please select the device you wish to add.
* Using "SanDisk Corp. Cruzer Titanium (SNDKXXXXXXXXXXXXXXXX)" (only option)
Which volume would you like to use for storing data ?
* Using "/dev/sda1 (UUID: <6F6B-42FC>)" (only option)
Name            : MyDevice
Vendor          : SanDisk Corp.
Model           : Cruzer Titanium
Serial          : SNDKXXXXXXXXXXXXXXXX
Volume UUID     : 6F6B-42FC (/dev/sda1)
Save to /etc/pamusb.conf ?
[Y/n] y
Done.

Valider en tapant "y" si c'est bien le bon périphérique...

Ajouter un utilisateur

Choisir le compte système à associer et taper :

sudo pamusb-conf --add-user nom_d_utilisateur

On obtient

Which device would you like to use for authentication ?
  * Using "MyDevice" (only option)
  User            : nom_d_utilisateur
  Device          : MyDevice
  Save to /etc/pamusb.conf ?
  [Y/n]

Saisir Y.

Vérification

Pour vérifier que le processus mis en place fonctionne (association clé usb / user) :

$ pamusb-check nom_d_utilisateur

* Authentication request for user "nom_d_utilisateur" (sudo)
* Device "MyDevice" is connected (good).
* Performing one time pad verification...
* Access granted.

Troubleshoot

Si à ce stade ça ne marche pas, faire un truc du genre :

sudo apt-get remove --purge libpam-usb pamusb-tools && sudo apt-get autoremove && sudo apt-get install libpam-usb pamusb-tools

Oui, je sais que c'est pas original et que ce n'est pas du troubleshoot !

Maintenant qu'on a déclaré une clé et un user, on configure PAM...

Et PAM le chien...

Sauvegarder l'ancienne conf (si si, quand même !!!)

sudo cp /etc/pam.d/common-auth /etc/pam.d/common-auth.back

et éditer le fichier common-auth...

Deux modes : soit clé nécessaire (clé + mot de passe) soit clé suffisante (clé ou mot de passe).

Rechercher donc la ligne contenant auth *** pam_usb.so et remplacer soit par :

auth    required    pam_usb.so

soit

auth    sufficient    pam_usb.so

A ce stade, on peut déjà tester le login avec la clé :

  • Fermer la session
  • Mettre la clé USB et cliquer sur le user défini plus tôt : il ne demandera plus de mot de passe mais vous loggera directement...

Etape suivante : le verrouillage / déverrouillage de session automatique...

Mise en place du PamUSB-agent

Le PamUSB-agent scrute en permanence le plug-deplug des périphériques pour appliquer si nécessaire des actions.

Configuration

Editer /etc/pamusb.conf. Sous la section de votre utilisateur rajouter :

<agent event="lock">gnome-screensaver-command --lock</agent>
<agent event="unlock">gnome-screensaver-command --deactivate</agent>

Remplacer gnome-screensaver-command par votre économiseur préféré ! La section ressemblera à quelque-chose comme :

...
<user id="vincent">
<device>
  transcend_vincent
</device>
<agent event="lock">gnome-screensaver-command --lock</agent>
<agent event="unlock">gnome-screensaver-command --deactivate</agent>
</user>
...

Lancement au démarrage du PamUSB-agent

Sous LXDE, le plus propre c'est de créer un fichier .desktop dans ~/.config/autostart.

Voici le mien : pamusb-agent.desktop

[Desktop Entry]
Type=Application
Exec=/usr/bin/pamusb-agent --daemon
Hidden=true
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name[fr_FR]=DpB
Name=PamUSB-Agent
Comment[fr_FR]=
Comment=
== Fin de la procédure ==
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment