[[oktatas:linux|< Linux]] ====== PAM ====== * **Szerző:** Sallai András * Copyright (c) 2011, Sallai András * Szerkesztve: 2011, 2012, 2013 * Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC BY-SA 4.0]] * Web: https://szit.hu ===== Bevezetés ===== A **PAM** a **Pluggable Authentication Modules** rövidítése. 1990-ben a Sun Microsystems' SunSoft fejlesztőcsoportja hozza létre. Egy hozzáférési metódus jelszavak, smartkártyák, biometrikus azonosításhoz, egy egységes felületet nyújtva a programozók számára. ===== Beállítás ===== ==== A szolgáltatások ==== Eredetileg egyetlen konfigurációs állomány volt, melynek tartalma: szolgáltatás-típus module-típusa kontroll modul-útvonal argumentumok A szolgáltatás típusa általában a következő fájlból egy: /etc/services Ilyeneket kell keresni mint:login, su, sshd vagy xdm, stb. A Debian a Lenny óta az alábbi könyvtárat használja: /etc/pam.d/ A könyvtár a szolgáltatás nevével megegyező néven létrehozunk egy szolgáltatást leíró állományt, amelynek a szintaxisa a következő: modul-típusa kontroll modul-útvonal argumentumok ==== Modul-típusa ==== Négy különböző típus adható meg: | auth | Azonosítás, engedély. Azonosítás felhasználónév, jelszóval. \\ Visszatérés sikeres vagy sikertlene. \\ Garantálva csoport tagság és más privilégiumok | | account | Számla (Account) kezelés. Gyakran előfordul korlátozás. \\ Például: a nap bizonyos időszakában, vagy csak bizonyos erőforrásokat használva léphet be, stb. | | password | Jelszókezelés. Szükséges a jelszóazonosító frissítése. Általában kérés válasz alapú hitelesítés | | session | Munkamenet-kezelés. Elvégzi a szükséges feladatokat, például naplózás, csatolás, stb. | Ha egy modul hiányzik, akkor a hiba naplózva lesz, például syslog démon által. Ha a konfigurációs állomány sorát egy kötőjel vezeti be akkor a naplózás elmarad. Például a fingerprint azonosítás nem áll rendelkezésre, de ha lesz ilyen használni akarjuk. -auth sufficient pam_fingerprintd.so ==== Kontroll ==== A kontrollmező megadja, mit történjen, ha az adott PAM modul sikertelenül teljesít. Kétféle szintaktika ismeretes: az egyik amikor magában leírom a direktívát, és amikor érték=akció párost használunk. === Egyszerű direktívák === * required * Az egész sikertelen, ha modul nem teljesít, de csak az egész folyamat végén * requisite * Ugyanaz, kivéve, hogy ha sikertelen modul visszatér az alkalmazásra. Gyakran használják extra biztonsági intézkedésre. * sufficient * Ha sikertelen, a következő szabályra lép * optional * Ez a modul csak akkor fontos, ha ez az egyetlen. === Változó értékpár === Általános alak [érték1=tevékenység1 érték2=tevékenység2 ...] A következő változók a modulok visszatérési kódjai: * abort - Kritikus hiba (a modul sikertelen "fail now"). * acct_expired - A felhasználói hozzáférés lejárt. * auth_err - Azonosítás sikertlen. * authinfo_unavail - Az azonosítás alapjául szolgáló információ elérhetetlen. * authtok_disable_aging - Az azonosító bejegyzés elavult, nincs engedélyezve. * authtok_err - Azonosító bejegyzés manipulációs hiba. * authtok_expired - Az azonosító bejegyzés lejárt. * authtok_lock_busy - Az azonosító bejegyzés foglalt. * authtok_recover_err - Az azonítási információ nem állítható vissza. * bad_item - A pam_*_item() rész rossz. * buf_err - Memória buffer hiba. * conv_again - A párbeszéd funkció esemény vezérelt, és az adatok még nem állnak rendelkezésre. * conv_err - Párbeszéd hiba. * cred_err - Sikertelen a felhasználó megbízás beállítása. * cred_expired - A felhasználó megbízása lejárt. * cred_insufficient - Nem lehet hozzáférni a megbízáshoz, a hitelesítési adatok elégtelensége miatt. * cred_unavail - A felhasználó megbízás nem hozzáférhető; Az alapul szolgáló hitelesítési szolgáltatás nem tudja letölteni. * default - Az összes érték * ignore - Figyelmen kívül hagyja a modult függetlenül attól, hogy a kontroll résznél mi lett beállítva. Például: opcionális, vagy elégséges. * incomplete - Újra próbálkozunk a hitelesítéssel, majd újra ellenőrizzük. * maxtries - Az újrapróbálkozások elérték a maximális lehetőséget. Nincs több lehetőség. * module_unknown - A modul ismeretlen. * new_authtok_reqd - Új azonosítóbejegyzés szükséges. Ez normális, ha megköveteljük a jelszócserét, vagy a jelszó NULL. * no_module_data - Nincs a modulnak megfelelő adat jelen. * open_err - A modult nem tudom betölteni. * perm_denied - Engedély megtagadva. * service_err - Hiba a szolgáltatómodulban. * session_err - Cannot make or remove an entry for the specified session. * success - Sikeres függvényvisszatérés. * symbol_err - A szimbólum nem található. * system_err - Rendszerhiba. * try_again - Előzetes jelszavas ellenőrzés. * user_unknown - A felhasználó ismeretlen az alapazonosító modul számára. Tevékenységek előjel nélküli egészek, amelyek a következők lehetnek: * ignore − A modul nincs hatással más modulokra. * bad − A modul sikertelen. Ha ez az első hiba a többi modul ezt az értéket felhasználja. * die − Ugyanaz, kivéve, hogy nincs több ellenőrzés, a végeredmény sikertelen. * ok − Az előző sikeres visszatérési kód felülírva. * done − Ugyanaz, kivéve, hogy több ellenőrzés nincs. * reset − Törli a memóriát és a verem következő moduljával folytatjuk. Néhány példa required = [ success=ok new_authtok_reqd=ok ignore=ignore default=bad ] requisite = [ success=ok new_authtok_reqd=ok ignore=ignore default=die ] sufficient = [ success=done new_authtok_reqd=done default=ignore ] optional = [ success=ok new_authtok_reqd=ok default=ignore ] ==== Modul útvonal ==== Teljes elérési út a modul fájlnevével, kiterjesztésével együtt. A modulokk a /lib/security/ könyvtárban találhatók a Debian lenny óta. A modulok fájlnevei így épülnek fel: pam_.so A Linux-PAM System Administrator's Guide tartalmazza az alapmodulok leírását. ===== Irodalom ===== ==== Kézikönyv ==== * man pam_unix ==== Linkek ==== * http://www.rjsystems.nl/en/2100-pam-debian.php * http://www.freedesktop.org/software/systemd/man/pam_systemd.html * http://content.hccfl.edu/pollock/AUnix2/PAM-Help.htm * https://unixlinux.tmit.bme.hu/PAM