Obsah
Abstrakt
Linux používá PAM (Pluggable Authentication Modules – připojovatelné autentizační moduly) při procesu autentizace jako zprostředkující vrstvu mezi uživatelem a aplikací. PAM moduly jsou dostupné v celém systému, takže mohou být použity libovolnou aplikací. Tato kapitola se věnuje popisu funkce modulárního autentizačního mechanismu a jeho konfiguraci.
Systémoví administrátoři a programátoři často potřebují omezit přístup k určitým částem systému nebo použití určitých funkcí aplikace. Bez využití PAM by aplikace musely být upraveny, kdykoliv je zaveden nový autentizační mechanismus (jako LDAP nebo SAMBA). To je však časově náročný a k chybám náchylný proces. Problémům se lze vyhnout oddělením aplikací od autentizačního procesu a převedením autentizační funkce na centrálně spravované moduly. Kdykoliv je pak potřeba zavést nový autentizační mechanismus, stačí upravit nebo napsat příslušné PAM moduly.
Každý program závislý na mechanismu PAM má svůj vlastní konfigurační soubor
v adresáři /etc/pam.d/<jmenoprogramu>.
Tyto soubory určují, jaké PAM moduly mají být použity při autentizaci.
Navíc pro většinu PAM modulů existují globální konfigurační soubory uložené
v adresáři /etc/security (např.
pam_env.conf, pam_pwcheck.conf,
pam_unix2.conf, time.conf).
Ty určují přesné chování modulů. Každá aplikace používající PAM modul ve
skutečnosti volá sadu PAM funkcí, které následně zpracují údaje v různých
konfiguračních souborech a vrátí výsledek volající aplikaci.
Každý řádek PAM konfiguračního souboru obsahuje nejvýše čtyři sloupce:
<Typ modulu> <Kontrolní příznak> <Jméno modulu> <Parametry>
Moduly PAM jsou zpracovávány postupně za sebou. Různé moduly mají různé účely. Jeden modul například kontroluje správnost hesla, jiný ověřuje umístění, z kterého je k systému přistupováno, a další načítá uživatelsky specifická nastavení. PAM obsahuje čtyři různé typy modulů:
authÚčelem modulu tohoto typu je autentizovat uživatele. Obvykle se tak činí ověřením hesla, ale lze toho dosáhnout i s pomocí čipových karet nebo biometriky (otisků prstů či rozpoznání oční duhovky).
accountModuly tohoto typu ověřují, zda má uživatel obecné oprávnění využít příslušnou službu. Například lze s jejich pomocí zajistit, aby se k systému nemohl přihlásit nikdo pod uživatelským jménem, jehož účet vypršel.
passwordSmyslem tohoto typu modulu je umožnit změnu autentizačního tokenu. Tímto tokenem je ve většině případů heslo.
sessionModuly tohoto typu jsou zodpovědné za správu a konfiguraci uživatelských relací. Jsou spuštěny před a po autentizaci, aby zaznamenaly pokusy o přihlášení do systémových logů a nakonfigurovaly uživatelsky specifické prostředí (poštovní účty, domovský adresář, systémová omezení atd.).
Druhý sloupec obsahuje kontrolní příznaky, které ovlivňují chování spuštěných modulů:
required
Modul s tímto příznakem musí být úspěšně zpracován dříve, než proběhne
autentizace. Selže-li modul s příznakem required,
musí být zpracovány všechny ostatní moduly se stejným příznakem dříve,
než je uživatel informován o neúspěšnosti pokusu o autentizaci.
requisite
Moduly s tímto příznakem musí být, stejně jako moduly s příznakem
required, úspěšně zpracovány. Nicméně v případě
selhání modulu s příznakem requisite je uživatel
okamžitě informován a nejsou zpracovávány žádné další moduly.
Pokud je zpracování úspěšné, jsou zpracovávány i další moduly, stejně
jako v případě modulů s příznakem required.
Příznak requisite lze použít jako základní filtr
pro ověření podmínek nezbytných pro korektní autentizaci.
sufficient
Pokud je úspěšně zpracován modul s tímto příznakem, dostane volající
aplikace okamžitou zprávu o úspěšnosti autentizace a žádné další
moduly nejsou zpracovávány. Platí to však jen tehdy, pokud již
dříve nedošlo k selhání modulu s příznakem required.
Selhání modulu s příznakem sufficient nemá žádné
přímé důsledky, všechny další moduly jsou zpracovávány v běžném pořadí.
optionalÚspěch ani selhání modulu s tímto příznakem nemá žádné přímé důsledky. Toho se využívá v případě modulů, jejichž jediným účelem je zobrazit zprávu (například oznámení o příchozí poště).
Tento příznak slouží ke vložení souboru udaného jako argument.
Pokud se modul nachází v implicitním adresáři
/lib/security (/lib64/security
na 64-bitových platformách se systémem SUSE Linux), nemusí být cesta
explicitně stanovena. Čtvrtý sloupec může obsahovat parametry předávané
modulu, jako např. debug (umožňuje ladění programu)
nebo nullok (dovoluje použití prázdných hesel).