[[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