A PAM működésének illusztrálására tekintsük át az sshd PAM-konfigurációját gyakorlati példaként:
24.1. példa - Az sshd PAM-konfigurációja
#%PAM-1.0 auth include common-auth auth required pam_nologin.so account include common-account password include common-password session include common-session # Enable the following line to get resmgr support for # ssh sessions (see /usr/share/doc/packages/resmgr/README.SuSE) #session optional pam_resmgr.so fake_ttyname
Egy alkalmazás (a jelen esetben az sshd) tipikus PAM-konfigurációja négy include utasítást tartalmaz, amelyek a négy modultípus konfigurációs fájljaira utalnak: common-auth, common-account, common-password, és common-session. Ez a négy fájl tartalmazza az egyes modultípusok alapértelmezett konfigurációját. Ha beágyazva használja őket az egyes modulok PAM-alkalmazásonkénti külön-külön meghívása helyett, akkor automatikusan frissítésre kerül a PAM-konfiguráció, ha a rendszergazda módosítja az alapértelmezett értékeket. Régebben kézzel kellett módosítani minden alkalmazás konfigurációs fájlját, ha a PAM-ban változások történtek, vagy egy új alkalmazás lett telepítve. Most már a PAM-konfiguráció és az összes módosítása öröklődik az alapértelmezett konfigurációs fájlokon keresztül.
Az első beágyazott fájl (a common-auth) két auth típusú modult hív meg: a pam_env és a pam_unix2 modulokat. Lásd: 24.2. példa - Az auth szakasz alapértelmezett konfigurációja
24.2. példa - Az auth szakasz alapértelmezett konfigurációja
auth required pam_env.so auth required pam_unix2.so
Az első, a pam_env az /etc/security/pam_env.conf fájlt tölti be a fájlban megadott környezeti változók beállításához. Így például beállítható a DISPLAY változó a helyes értékre, mivel a pam_env modul tudja, hogy a bejelentkezés honnan történik. A második, a pam_unix2 összeveti a felhasználó bejelentkezési azonosítóját és jelszavát az /etc/passwd és az /etc/shadow fájlokban tároltakkal.
A common-auth részben megadott fájlok sikeres meghívása után egy harmadik, pam_nologin nevű modul ellenőrzi, hogy az /etc/nologin létezik-e. Ha igen, akkor csak a root felhasználó jelentkezhet be. Az összes auth modul feldolgozásra kerül, mielőtt az sshd bármilyen visszajelzést kapna arról, hogy a bejelentkezés sikerült-e. Figyelembe véve, hogy az összes modul required vezérlő jelzővel rendelkezik, ahhoz, hogy az sshd pozitív eredményt kapjon vissza, mindegyikük feldolgozásának sikeresen végbe kell mennie. Ha a modulok közül csak egy is sikertelen, az összes modul feldolgozásra kerül, majd ezután kap értesítést az sshd a negatív eredményről.
Miután az összes auth típusú modul sikeresen feldolgozásra került, egy újabb beágyazási (include) utasítás következik, amint azt az ábra (24.3. példa - Az account szakasz alapértelmezett konfigurációja) mutatja. A common-account csak egy modult tartalmaz, ez a pam_unix2. Ha a pam_unix2 azt az eredményt adja vissza, hogy a felhasználó létezik, az sshd kap egy üzenetet a sikerről, és a következő modulköteg (password) kerül feldolgozásra: 24.4. példa - A password szakasz alapértelmezett konfigurációja.
24.4. példa - A password szakasz alapértelmezett konfigurációja
password required pam_pwcheck.so nullok password required pam_unix2.so nullok use_first_pass use_authtok #password required pam_make.so /var/yp
Az sshd PAM-konfigurációja megint csupán egy include utasítást tartalmaz, amely a password moduloknak a common-password helyen található alapértelmezett konfigurációjára hivatkozik. Ezeknek a moduloknak sikeresen végbe kell menniük (required vezérlő jelző) minden alkalommal, ha az alkalmazás a hitelesítési token módosítását kéri. A jelszó vagy valamilyen más hitelesítési token megváltoztatása biztonsági ellenőrzést igényel. Ezt a pam_pwcheck modul végzi. Az utána használt pam_unix2 modul áthoz minden régi és új jelszót a pam_pwcheck modulból, így a felhasználónak nem kell újra hitelesítenie magát. Ez továbbá lehetetlenné teszi a pam_pwcheck által végzett ellenőrzések megkerülését is. A password típusú modulokat akkor kell használni, ha az előző, account vagy auth típusok be vannak állítva, hogy jelezzék a lejárt jelszavakat.
24.5. példa - A session szakasz alapértelmezett konfigurációja
session required pam_limits.so session required pam_unix2.so session optional pam_umask.so
Utolsó lépésként a session típusú modulok (ezek a common-session fájlba vannak beágyazva) kerülnek meghívásra a munkamenet beállítására az adott felhasználónak megfelelően. Bár a pam_unix2 modul ismét feldolgozásra kerül, ennek nincs gyakorlati következménye, mivel a modul vonatkozó konfigurációs fájljában (pam_unix2.conf a none paraméter van megadva. A pam_limits modul betölti az /etc/security/limits.conf fájlt, amely korlátokat szabhat meg bizonyos rendszererőforrások használatával kapcsolatban. A session modulok a felhasználó kijelentkezésekor másodszor is meghívódnak.