PAM
System PAM (pluggable authentication modules) je nastroj pro
vyuzivani ruznych autentizacnich mechanismu v UNIXovych programech.
Tradicni pristup - vyhodnocovani databaze uzivatelu na zaklade
souboru /etc/passwd a hesel na zaklade /etc/shadow
je zde nahrazen zpetne kompatibilnim ale znacne variabilnejsim systemem.
PAM umoznuje evidovat autentizacni informace napriklad v SQL databazi,
umoznuje pro autentizaci pouzivat jinou metodu nez staticke heslo
(treba jednorazova hesla, ctecky cipovych karet, biometricke informace,
atd.).
Pokud chce program vyuzivat sluzeb PAM, musi zmenit standardni autentizacni
metodu (getpw*(), getsp*()) za konverzaci s knihovnou
libpam. Tato knihovna dale inicializuje podle sve konfigurace
ruzne plug-iny pro konkretni metody autentizace.
Faze prace PAM
Prace s PAM probiha ve ctyrech fazich: Autentizace uzivatele, overeni
existence uctu v systemu (autorizace), informace o sezeni (session),
a pripadne zmena hesla.
- Autentizace (v konfiguracnim souboru slovo auth) je overeni
totoznosti uzivatele pomoci hesla nebo jine metody.
- Autorizace (account) overuje, jestli uzivatel ma v systemu
ucet, jestli v danou dobu pro danou sluzbu ma pravo se prihlasit,
atd.
- Sprava sezeni (session) muze delat veci jako nastavovani limitu
na spotrebovany cas, nastavovani promennych prostredi, nebo dokonce
zmenu korenoveho adresare (chroot()).
- Zmena hesla (password) je oblast ktera ma za ukol upravit
autentizacni informace, pokud si to uzivatel preje. Tady muze byt
nastaveni politiky zmeny hesla (jak casto si uzivatel smi menit
heslo, jake pozadavky musi heslo splnovat, atd).
Vyznamy modulu
V kazde z techto fazi lze aplikovat ruzne moduly (plug-iny) s tim, jaky vyznam
ma prislusny modul mit. Mozne vyznamy jsou required, requisite
(totez, ale chyba je aplikaci sdelena hned), sufficient a optional.
Je mozne pro kazdou fazi pouzivat vice nez jeden modul (napriklad nejprve
kontrolovat jestli jsem root, pokud ne, zeptat se na heslo a overit
proti shadow, a pokud tohle neuspeje, zkusit heslo v Kerberovi.
Priklady
Priklad nastaveni knihovny PAM pro konkretni program (v tomto pripade su - jde o soubor /etc/pam.d/su):
#%PAM-1.0
auth sufficient /lib/security/pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth sufficient /lib/security/pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
#auth required /lib/security/pam_wheel.so use_uid
auth required /lib/security/pam_stack.so service=system-auth
account required /lib/security/pam_stack.so service=system-auth
password required /lib/security/pam_stack.so service=system-auth
session required /lib/security/pam_stack.so service=system-auth
session optional /lib/security/pam_xauth.so
Jednotlive moduly lze retezit pomoci modulu pam_stack. V tom pripade
je treba v prislusnem souboru (zde /etc/pam.d/system-auth) nastavit
podrobnosti:
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth required /lib/security/pam_env.so
auth sufficient /lib/security/pam_krb5.so
auth sufficient /lib/security/pam_unix.so likeauth nullok
auth required /lib/security/pam_deny.so
account required /lib/security/pam_unix.so
password required /lib/security/pam_cracklib.so retry=3
password sufficient /lib/security/pam_unix.so nullok use_authtok shadow
password required /lib/security/pam_deny.so
session required /lib/security/pam_limits.so
session required /lib/security/pam_unix.so
Dokumentace
V distribuci PAM jsou tri hlavni dokumentacni soubory:
- pam.txt obsahuje uvodni uzivatelske informace, dale referenci
konfiguracnich souboru a jednotlivych modulu.
- pam_appl.txt je dokumentace pro autory aplikaci, ktere maji
vyuzivat knihovnu PAM a autentizovat uzivatele. Jde o popis
programatorskeho API k PAMu ze strany aplikace.
- pam_modules.txt je navod pro autory PAM modulu. Je zde popisovano
API pro PAM ze strany PAM modulu.
Dale zde najdeme soubory README k jednotlivym PAM modulum.
Odkazy