4. Interfaces de programmation

4.1. Pour une application

4.1.1. pam_start

Initialisation de la pile PAM.

Tableau 2. Arguments pam_start

const char *service_nameNom du service
const char *userNom de l'utilisateur
const struct pam_conv *pam_conversationPointeur vers une structure contenant un pointeur vers une fonction (callback) pour la saisie du nom de l'utilisateur et du mot de passe
pam_handle_t **pamhHandler permettant à l'application de dialoguer avec les modules pam via les fonctions pam_get_item et pam_set_item

4.1.2. pam_end

Cette fonction libère la mémoire de la pile PAM elle même et éventuellement des modules.

4.2. Pour un module

4.3. Fonctions communes

4.3.1. pam_set_item

Permet de définir la valeur d'un objet

4.3.2. pam_get_item

Obtenir

4.4. Les constantes

Les fonctions que doivent implémentées un module PAM doivent retourner un entier. C'est pourquoi il existe un certain nombre de macro prédéfinies.

4.4.1. Constantes de retour

Tableau 3. Les constantes

PAM_SUCCESSOpération effectuée avec succès
PAM_SYSTEM_ERRVariable pam_handle_t invalide
PAM_PERM_DENIEDErreur lié à l'identification
PAM_BUF_ERRErreur lié à la mémoire (malloc, etc..)
PAM_BAD_ITEML'application tente d'accéder à un objet (item) inexistant

4.4.2. Les types d'objets

Tableau 4. Les types d'objets

PAM_SERVICENom du service
PAM_USERNom de l'utilisateur
PAM_USER_PROMPTMessage à afficher lors de la demande du nom d'utilisateur (par défaut : « Please enter username: »
PAM_TTYNom du terminal (ou pseudo terminal) préfixé par /dev pour un fichier, pour une connexion basé sur X, cet élément est défini à $DISPLAY
PAM_RUSERUtilisateur distant (utilisateur au niveau client)
PAM_RHOSTHôte du client
PAM_CONVPointeur vers la structure
PAM_FAIL_DELAYNombre de secondes mise en attente si l'authentification échoue