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.