Studuji PAM a nemám ponětí o významu nějaké kombinace kontrolních příznaků. Z dokumentace Red Hatu máme:
požadované
selhání takového PAM nakonec povede k selhání návratu PAM-API
, ale pouze po vyvolání zbývajících modulů (pro tuto službu a typ)nezbytné
jako vyžadováno, avšak v případě, že takový modul vrátí chybu,
je řízení vráceno přímo aplikaci.dostatečný
úspěch takového modulu stačí k uspokojení požadavků na autentizaci
zásobníku modulů (pokud předchozí požadovaný modul selhal
, úspěch tohoto modulu je ignorován). Selhání tohoto modulu se nepovažuje
za kritické pro uspokojení aplikace, že tento typ uspěl. Pokud modul
uspěje, rámec PAM vrátí úspěch aplikaci
okamžitě, aniž by zkoušeli další moduly.
Takže, podle mého chápání, pokud je modul requisite
selže, celý zásobník modulů nebude analyzován a řízení se okamžitě vrátí zpět do aplikace.
Pokud modul sufficient
uspěje, zbytek zásobníku modulů nebude analyzován a řízení se okamžitě vrátí zpět do aplikace.
Pokud je modul required
selže, bude analyzován celý zásobník.
Nyní nechápu, jaké bude chování, když bude určitý modul required
selže a jiný modul sufficient
uspěje.
Přijatá odpověď:
PAM postupuje postupně skrz položky na zásobníku. Uchovává si pouze vzpomínku na to, v jakém stavu se nachází (úspěch nebo zamítnutí, přičemž úspěch znamená dosavadní úspěch), nikoli na to, jak tohoto stavu dosáhl.
Pokud je položka označena jako sufficient
uspěje, knihovna PAM přestane tento zásobník zpracovávat. K tomu dojde bez ohledu na to, zda byly předchozí required
položky nebo ne. V tomto okamžiku PAM vrátí aktuální stav:úspěch, pokud není required
položka selhala, jinak zamítnuta.
Podobně, pokud je položka označena jako requisite
selže, knihovna PAM zastaví zpracování a vrátí chybu. V tomto okamžiku je irelevantní, zda je předchozí required
položka se nezdařila.
Jinými slovy, required
nemusí nutně způsobit zpracování celého zásobníku. Znamená to pouze pokračovat.