Předpokládejme, že máte nakonfigurovaný systém pro ověřování přihlášení proti LDAP serveru. V případ výpadku LDAP serveru nebo poruchy nějakého síťového prvku po cestě k němu vzniká docela nepříjemný problém s ověřením uživatele. Částečně se dá řešit pomocí PAM modulu pam_ccred, který umožňuje kešovat přihlašovací informace.
Umístění souborů odpovídá distribuci Debian (momentálně mám na testovacím počítači unstable)
/etc/pam.d/common-auth
auth sufficient pam_unix.so auth [authinfo_unavail=ignore success=1 default=die] pam_ldap.so use_first_pass auth [default=done] pam_ccreds.so action=validate use_first_pass auth [default=done] pam_ccreds.so action=store use_first_pass auth [default=done] pam_ccreds.so action=update use_first_pass
/etc/pam.d/common-account
account sufficient pam_unix.so nullok_secure account sufficient pam_ldap.so account required pam_permit.so
Přihlásíme se do systému, když normálně funguje LDAP server a zkontrolujeme jestli se nám uložily informace do cache (/var/cache/.security.db).
vodik:/var/cache# cc_dump Credential Type User Service Cached Credentials ---------------------------------------------------------------------------------- Salted SHA1 tsunami any 80141f0721cf1eeaca6d182db474ed7eeec0925e
Máme také možnost vyzkoušet, jestli cache obsahuje správné údaje zkušebním přihlášením:
vodik:/var/cache# cc_test -validate any tsunami heslo /var/cache/.security.db pam_cc_validate_credentials: Success
Zastavte LDAP server (/etc/init.d/slapd stop) a zkuste se přihlásit
[uzivatel@vodik]$ su - tsunami Password: You have been logged on using cached credentials. tsunami@vodik:~$
Pokud se vám to povede, tak jste správně nastavili pam_ccreds. 🙂
Ověření uživatele (PAM) při výpadku LDAPu není všechno, ještě by to chtělo pořešit NSS (převod uid na username a podobně). Na to používám daemona nscd a libnss-db.
Tento text je vykouslý z ldap.zdenda.com.