PAM Fingerprint

PAM Fingerprint ist ein Linux PAM Modul, womit sich ein Benutzer mit seinem Fingerabdruck an seinem Rechner anmelden kann. PAM Fingerprint benutzt dazu Hardware-seitig den ZFM-20 von Zhaintec (auch bekannt als "Arduino Fingerprint Sensor"), der mittels USB-TTL Adapter an den Rechner angeschlossen wird. Der Sensor sieht wie folgt aus:

Fingerprint Sensor

Der USB auf TTL Adapter so:
USB-TTL Adapter

Mit ein wenig handwerklichem Geschick, kann der Sensor in einem kleinen Universalgehäuse untergebracht werden:
Pam Fingerprint

Wie genau der Adapter mit dem Sensor angeschlossen wird, kann hier nachgelesen werden.

Hardware

PAM Fingerprint benötigt also zusammengefasst folgende Hardware:

 

Software

PAM Fingerprint besteht zum einen aus dem Linux PAM Modul selbst und zwei Programmen, die zur Einrichtung dienen:

  • Dem Konfigurationsprogramm pamfingerprint-conf
  • und dem Programm zur Prüfung der Konfiguration pamfingerprint-check.

Um einem bestehenden Benutzer einen Fingerabdruck zuzuweisen wird das Konfigurationsprogramm benutzt. Folgender Befehl liest einen Fingerabdruck ein und weist beispielsweise diesen dem Benutzer "bob" zu:

~# pamfingerprint-conf --add-user bob

Um zu überprüfen, ob sich der Benutzer "bob" mit seinem Fingerabdruck an seinem PC anmelden könnte, wird das Prüfungsprogramm benutzt. Folgender Befehl liest einen Fingerabdruck ein und überprüft, ob dieser zu einem vorhandenen passt und gibt demnach eine Erfolgs- oder Misserfolgs-Meldung zurück:

~$ pamfingerprint-check --check-user bob

Weitere Befehle können in der Manpage mittels folgendem Befehl nachgelesen werden:

~$ man pamfingerprint-conf

Gespeichert werden die Anmeldedaten der Benutzer in der Datei /etc/pamfingerprint.conf in der Sektion [users]. Der Aufbau eines Eintrags ist dabei:

Benutzername = Fingerabdruck-ID, SHA256(Fingerabdruck)

Niemals sollten Einträge dieser Sektion manuell bearbeitet werden! Dafür ist das Konfigurationsprogramm da. In der anderen Sektion [PyFingerprint] können Einstellungen des Fingerprint-Sensors geändert werden.

Da PAM Fingerprint komplett in Python implementiert wurde, ist es auf jeder Architektur verwendbar, für die eine Python Implementierung vorhanden ist. Somit kann auch der Raspberry Pi mit der ARM-HF Architektur unter Verwendung von Raspbian, mit PAM Fingerprint betrieben werden. Für den Fingerprint-Sensor ZFM-20 wurde eine Bibliothek in Python implementiert, die als eigenes Projekt namens PyFingerprint wird. Die Bibliothek wird unbedingt für PAM Fingerprint benötigt und automatisch bei der Installation mitinstalliert.

Installation

Falls das Repository von PM Code Works im Paketmanager eingebunden ist genügt es diesem die Installation des Pakets "libpam-fingerprint" mit folgendem Befehl anzuordnen (dabei wird die benötigte Bibliothek PyFingerprint installiert):

~# apt-get install libpam-fingerprint

Alternativ kann die Installation selbstverständlich auch mit einem grafischen Paketmanager, wie z.B. synaptic, durchgeführt werden.

Falls das Repository von PM Code Works noch nicht von einem Paketmanager eingebunden wurde, gibt es eine Anleitung unter Linux Repository.

USB

Da PAM Fingerprint über USB kommuniziert und dies standardmäßig nur "root" vorbehalten ist, muss jedem Benutzer, der PAM Fingerprint benutzen will, dies erlaubt werden: ~# usermod -a -G dialout <username>

Ein Neustart ist hier zwingend notwendig! Anschließend können, wie oben beschrieben, Benutzer zu PAM Fingerprint hinzugefügt werden.

Lizenz

PAM Fingerprint wurde unter der D-FSL-Lizenz veröffentlicht und ist somit Open-Source. Der Quelltext kann entweder über das Repository oder als Zip-Archiv heruntergeladen werden. PAM Fingerprint existiert nun übrigens auf GitHub.

Eigenes PAM Modul

Wie genau PAM funktioniert und wie eigene PAM Module implementiert und in Linux integriert werden können, gibt es eine Anleitung unter Linux PAM.

Aktueller Entwicklungsstand

Wer einen Blick auf den aktuellsten Entwicklungsstand werfen oder gar mitarbeiten will, kann das Repository auf GitHub besuchen.