PAM Pluggable Authentication Modules est un mécanisme d’authentification centralisé (au niveau de l’OS) disponible sur les distributions Linux et il permet de fournir :
- une interface unifiée aux différents programmes (applications ou services) ayant besoin d’une authentification d’utilisateurs (login, ssh, postfix etc.)
- un système de modules, chacun spécialisé dans une méthode d’authentification

Configuration
Les fichiers de configuration de PAM se trouvent dans /etc/pam.d
(et un fichier /etc/pam.conf
en cas d’absence du dossier pam.d).
Chaque application cliente du service PAM y a son propre fichier:

Ces fichiers de configuration sont composés d’une liste de directives, chaque directive est composée de:
- une interface (il existe 4 types d’interfaces: auth, session, account, password)
- un flag de contrôle
- simple (required, requisiste, sufficient, optional, include)
- complexe composés d’un ensemble d’attibuts/valeurs par ex: [success=ok ignore=ignore module_unknown=ignore default=bad]
- du nom du module (pam_xxx.so)
- et d’un certain nombres d’arguments propre au module

Ces directives sont exécutées séquentiellement (sauf en cas de flag complexe), et chacune retourne success ou failure
Bonus
Aide man pages
- man pam.d : aide générale sur PAM
- man pam_unix : nom du module souhaité sans l’extension .so (pour shared object)
- man pam-auth-update : outil de configuration de la configuration de PAM
Liste des modules PAM
voici une liste non exhaustive des modules PAM disponible dans une distribution raspbian:
pam_access.so
pam_chksshpwd.so
pam_cifscreds.so
pam_debug.so
pam_deny.so
pam_echo.so
pam_env.so
pam_exec.so
pam_faildelay.so
pam_filter.so
pam_ftp.so
pam_group.so
pam_issue.so
pam_keyinit.so
pam_lastlog.so
pam_limits.so
pam_listfile.so
pam_localuser.so
pam_loginuid.so
pam_mail.so
pam_mkhomedir.so
pam_motd.so
pam_namespace.so
pam_nologin.so
pam_permit.so
pam_pwhistory.so
pam_rhosts.so
pam_rootok.so
pam_securetty.so
pam_selinux.so
pam_sepermit.so
pam_shells.so
pam_stress.so
pam_succeed_if.so
pam_systemd.so
pam_tally2.so
pam_tally.so
pam_time.so
pam_timestamp.so
pam_tty_audit.so
pam_umask.so
pam_unix.so
pam_userdb.so
pam_warn.so
pam_wheel.so
pam_xauth.so