 informations et configuration de pam pluggable authentification modules  but de ce document ce document me sert de mémo pour la compréhension et la configuration de pam pluggable authentification modules sous debian  je le diffuse en espérant qu il serve à d autres personnes pam c est quoi  le système pam est un ensemble de modules permettant de gérer l authentification sur un système linux cela permet de rendre les différents programmes nécessitant une authentification login su ssh kdm indépendants de la base de données gérant les comptes utilisateurs passwd ldap mysql domaine windows avec winbind de plus avec pam l authentification ne se limite pas à la gestion d un login password mais va beaucoup plus loin comme nous le verrons dans ce document attention une erreur dans la modification des fichiers de configuration de pam peut entraîner l impossibilité de se connecter même sous root avant de modifier la configuration il est fortement recommandé de se connecter sous une autre console en root pour pouvoir corriger le problème les 4 groupes de modules dans un fichier de configuration de pam nous allons retrouver les différents modules répartis en 4 groupes un module ex pamunixso pouvant être utilisé dans plusieurs groupes groupe fonction auth authentification établit en général la correspondance entre l utilisateur et le mot de passe mais toutes les authentifications ne sont pas de ce type il existe par exemple des schémas d authentification basés sur le matériel account vérification du compte utilisateur estce que le mot de passe est encore valide cet utilisateur a til le droit d accéder au service demandé l utilisateur a til le droit de se connecter à cette date et à cette heure password habituellement les services sont fortement couplés avec un des groupes auth ce groupe permet par exemple d autoriser le changement de mot de passe session ce groupe est utilisé après l authentification pour ouvrir la session monter les répertoires personnels activer sa boite mail  présentation des différents fichiers de configurations de pam les fichiers de configurations de pam sont disponibles dans   etc pamd   dans ce dossier nous retrouverons un fichier de configuration pour chaque service programme ayant besoin d une authentification su login ssh ftp nous trouverons également des fichiers communs common permettant de simplifier la configuration ces fichiers communs seront inclus dans les fichiers des services à l aide de la directive include common présentation de quelques fichiers disponibles dans etc pamd  fichier commentaire commonaccount fichier commun pour les modules du groupe account commonauth fichier commun pour les modules du groupe auth commonpassword fichier commun pour les modules du groupe password commonsession fichier commun pour les modules du groupe session kdm utilisé pour l authentification de kdm kscreensaver utilisé pour l authentification pour la sortie de l écran de veille avec un mot de passe ou pour le déverrouillage de la session login utilisé pour l authentification sur une console ex alt f1 ssh utilisé pour l authentification de ssh su utilisé pour l authentification de su changement d utilisateur sudo utilisé par sudo les indicateurs de contrôle de pam lors d une vérification chaque module retourne un résultat et en fonction de celuici et de l indicateur de contrôle indiqué avant pam sait ce qu il doit faire il existe plusieurs indicateurs de contrôle  indicateur description required si le résultat du test échoue les autres modules sont quand même analysés avant de prendre une décision finale sufficient si le résultat est positif le résultat global sera positif même si les modules précédents de type required étaient en échec requisite si le résultat du test échoue l analyse est interrompue et l utilisateur est immédiatement averti de l échec optional que le résultat soit positif ou négatif cela n aura aucune importance dans l authentification globale sauf si ce module est le seul testé les arguments passés en options chaque module peut utiliser des arguments ceuxci sont écrits à la fin du nom du module par exemple voici les arguments que le l on peut trouver pour le module pamunix  arguments description debug augmente les logs dans syslog usefirstpass reprend le mot de passe fourni par le module précédent pour éviter à l utilisateur de le saisir plusieurs fois nullok autorise les mots de passe vides exemple de fichier de configuration dans un fichier nous retrouverons un ou plusieurs modules avec un indicateur de contrôle required sufficient avant le nom du module et éventuellement des options de configuration après debug nullok usefirstpass  attention  l ordre des modules dans un fichier de configuration de pam est important un fichier de configuration pam ressemble à ceci pam10 auth required pamsecurettyso auth required pamunixso shadow nullok auth required pamnologinso account required pamunixso password required pamcracklibso password required pamunixso shadow nullok useauthtok session required pamunixso la première ligne est un commentaire car elle commence par un auth required pamsecurettyso cette ligne sert à s assurer que si l utilisateur essaie de se connecter en tant qu utilisateur root le terminal sur lequel il se connecte fait partie de la liste se trouvant dans le fichier etc securetty si ce fichier existe auth required pamunixso shadow nullok cette ligne fait en sorte que le mot de passe de l utilisateur soit demandé et vérifié auth required pamnologinso cette ligne vérifie si le fichier etc nologin existe si c est le cas et que l utilisateur n est pas un utilisateur root l authentification échoue account required pamunixso cette ligne active la vérification des comptes si nécessaire par exemple si des mots de passe masqués ont été activés le module pamunixso vérifie si le compte est périmé ou si l utilisateur a changé son mot de passe pendant le délai de grâce alloué password required pamcracklibso cette ligne teste les mots de passe récemment modifiés afin de déterminer s ils peuvent être détectés facilement par un programme de détermination de mots de passe utilisant un dictionnaire password required pamunixso shadow nullok useauthtok cette ligne spécifie que le module pamunixso doit être utilisé si le programme login change le mot de passe de l utilisateur cela ne se produit que lorsqu un module auth détermine que le mot de passe doit être changé quand un mot de passe masqué est périmé par exemple session required pamunixso cette ligne indique que le module pamunixso doit être utilisé pour gérer la session en ce moment ce module ne fait rien du tout il pourrait être remplacé par tout autre module nécessaire ou complété par la superposition de modules autres sources de documentation  page de man en français  http wwwdelafondorg traducmanfr man man8 pam8html la bible sur pam en anglais  http wwwkernelorg pub linux libs pam  référence des modules  http wwwkernelorg pub linux libs pam linuxpamhtml pam6html historique des modifications version date commentaire 01 130706 création par tony galmiche 02 150806 mise en ligne informations et configuration de pam pluggable authentification la traduction du comportement de sufficient est erronée comme on peut le lire sur la page http wwwkernelorg pub linux libs pam linuxpamhtml sagconfigurationfilehtml  citée en référence sufficient est suffisant au sens mathématique du terme si un module marqué sufficient réussi les autres modules ne sont pas testés s ilrate cela n a aucune influence sur les autres précédents ou suivants dans le cas d une combinaison required totososufficient tatasorequired titiso si tata reussi le resultat est celui de toto et titi n est même pas essayé si tata rate le résultat dépend de toto et titi voilà le texte de la page de référence sufficient success of such a module is enough to satisfy the authentication requirements of the stack of modules  if a prior required module has failed the success of this one is ignored  a failure of this module is not deemed as fatal to satisfying the application that this type has succeeded if the module succeeds the pam framework returns success to the application immediately without trying any other modules  système  