Tartalomjegyzék
Kivonat
A Linux a PAM (Pluggable Authentication Modules, cserélhető hitelesítési modulok) rendszert használja a hitelesítési folyamatban a felhasználó és az alkalmazás közötti rétegként. A PAM-modulok rendszerszinten állnak rendelkezésre, így akármelyik alkalmazás kérheti őket. Ez a fejezet leírja a moduláris hitelesítési mechanizmus működését és beállításának módját.
A rendszergazdák és a programozók gyakran kívánják korlátozni a hozzáférést a rendszer egyes részeihez, illetve korlátozni az alkalmazások bizonyos funkcióinak használatát. PAM nélkül az alkalmazásokat minden egyes új hitelesítési mechanizmushoz (például LDAP, Samba vagy Kerberos) hozzá kell igazítani. Ez a folyamat azonban meglehetősen időigényes és a hibázás esélyét rejti. E hátrányok elkerülésének egyik módja az alkalmazások és a hitelesítési mechanizmusok szétválasztása, és az utóbbi központilag felügyelt modulokba irányítása. Így minden egyes alkalommal, ha egy új hitelesítési séma kerül bevezetésre, elegendő a megfelelő PAM-modult elkészíteni vagy adaptálni.
A PAM mechanizmusát használó programok mindegyikének van egy saját konfigurációs fájlja az /etc/pam.d/
könyvtárban. Ezek a fájlok határozzák meg a hitelesítéshez használt PAM-modulokat. Létezik továbbá egy globális konfigurációs fájl a legtöbb PAM-modulhoz az programnév
/etc/security
, könyvtárban, amely meghatározza a modulok pontos viselkedését (ilyen például a pam_env.conf
, a pam_pwcheck.conf
, a pam_unix2.conf
és a time.conf
). A PAM-modulokat használó alkalmazások ténylegesen egy sor PAM-funkciót hívnak meg, amelyek azután feldolgozzák a különféle konfigurációs fájlokban található adatokat és az eredményt visszaadják a hívó alkalmazásnak.
A PAM konfigurációs fájlok minden egyes sora maximum négy oszlopból állhat:
<Type of module> <Control flag> <Module path> <Options>
A PAM-modulok egymásra épülve kerülnek feldolgozásra. A különféle típusú moduloknak különböző feladataik vannak: az egyik modul például ellenőrzi a jelszót, a másik azt a helyet, ahonnan a rendszert elérték, egy harmadik pedig lehet, hogy felhasználóspecifikus beállításokat vizsgál meg. A PAM négyféle modultípust különböztet meg:
auth
Az ilyen típusú modulok feladata a felhasználó azonosságának ellenőrzése. Hagyományosan ez jelszóellenőrzéssel történik, de használhatók például intelligens kártyák, vagy különféle biometriai eszközök (ujjlenyomat- vagy szivárványhártya-ellenőrzés) is.
account
Az ilyen típusú modulok ellenőrzik, hogy a felhasználó rendelkezik-e általános engedéllyel a kért szolgáltatás használatára. Például ilyen ellenőrzésre van szükség ahhoz, hogy senki ne léphessen be egy lejárt felhasználói fiók azonosítójával.
password
Az ilyen típusú modulok feladata, hogy lehetővé tegyék a hitelesítési tokenek cseréjét. A legtöbb esetben ez egy jelszót jelent.
session
Az ilyen típusú modulok felelősek a felhasználói munkamenetek kezeléséért és beállításáért. A hitelesítés előtt és után kerülnek elindításra, hogy feljegyezzék a bejelentkezési kísérleteket a rendszernaplókba, valamint beállítsák a felhasználó egyedi környezetét (postafiókok, saját könyvtár, rendszerkorlátok stb).
A második oszlop az elindított modulok viselkedését befolyásoló vezérlő jelzőket tartalmaz:
required
Az ilyen jelzőjű modulok feldolgozásának sikeresen végbe kell mennie ahhoz, hogy a hitelesítés folytatódjon. Egy required
jelzőjű modul sikertelen futása esetén az ilyen jelzőjű összes többi modul feldolgozásra kerül, mielőtt a felhasználó üzenetet kapna a hitelesítési kísérlet sikertelenségéről.
requisite
Hasonlóan a required
jelzőjű modulokhoz, az ilyen jelzőjű modulok feldolgozásának sikeresen végbe kell mennie. Egy ilyen jelzőjű modul sikertelen futása esetén azonban a felhasználó azonnal üzenetet kap és a rendszer a további modulokat nem dolgozza fel. Sikeres végrehajtás esetén feldolgozásra kerülnek a további modulok, hasonlóan a required
jelzőhöz. A requisite
jelző alapszintű szűrőként használható, amely a helyes hitelesítés alapvető fontosságú feltételeinek meglétét ellenőrzi.
sufficient
Az ilyen jelzőjű modul sikeres feldolgozása esetén a hívó alkalmazás azonnal üzenetet kap a sikerről és a többi modul már nem is kerül feldolgozásra, feltéve, hogy nem volt korábbi required
jelzőjű sikertelen modul. A sufficient
jelzőjű modul sikertelen feldolgozása nem jár közvetlen következményekkel, hiszen minden további modul a megfelelő sorrendben végrehajtásra kerül.
optional
Az ilyen jelzőjű modulok sikertelensége vagy sikere nem jár semmilyen direkt következménnyel. Ez olyan modulok esetén hasznos, amelyeknek csak egy üzenetet kell megjeleníteniük (például jelezni a felhasználónak, hogy levele érkezett), egyéb teendők nélkül.
Ha ez a jelző meg van adva, akkor a paraméterként megadott fájl beszúrásra kerül ezen a helyen.
A modul elérési útját nem kell külön megadni, amennyiben a modul az alapértelmezett könyvtárban található (/lib/security
, a SUSE Linux Enterprise®, által támogatott 64 bites platformokon a könyvtár neve /lib64/security
). A negyedik oszlop az adott modul esetleges paramétereit tartalmazza. Ilyen lehet például a debug
(a hibakeresés engedélyezése) vagy a nullok
(üres jelszavak használatának engedélyezése).