Tomáš "Tomyk" Ruprich
tomyk at uikt.mendelu.cz
Na novějších verzích redhat-based systémů jsem narazil na problém v oblasti instalace LDAPu a jeho následného využití jako backendu pro identifikaci uživatelů a skupin. [root@server ~]# uname -a Linux server 2.6.9-67.0.7.ELsmp #1 SMP Sat Mar 15 06:33:45 EDT 2008 x86_64 x86_64 x86_64 GNU/Linux [root@server ~]# cat /etc/redhat-release CentOS release 4.6 (Final) Standardní postup - tedy jednoduché nastavení /etc/nsswitch.conf: vim /etc/nsswitch.conf passwd: files ldap group: files ldap vede k problémům se startováním LDAPu a server nenaběhne. V logu se objevuje: May 16 13:32:41 server runuser: nss_ldap: could not soft reconnect to LDAP server - Server is unavailable May 16 13:32:41 server slapd[22563]: nss_ldap: failed to bind to LDAP server 127.0.0.1: Can't contact LDAP server LDAP se při startu snaží najít uživatele v ldap backendu, což samozřejmě vede k vytimeoutování. Google prozradil, že v tomto případě se NSS dá nastavit tak, aby v případě, že první iterace vyhledání selže se nesnažil o další pokusy, ale rovnou skončil. vim /etc/nsswitch.conf passwd: files [!NOTFOUND=return] ldap group: files [!NOTFOUND=return] ldap To bylo sice mazané řešení a pomohlo, start LDAPu se podaří. Nicméně časem jsem si všiml, že to znamená také to, že systém do údajů uvedených v LDAPu nevidí a nepoužije je. Což je následně po zamyšlení nad uvedeným řešením evidentní. Takže tudy cesta nevede. Druhé kolo porad s panem googlem už ale odhaluje správné řešení. vim /etc/ldap.conf # Reconnect policy: hard (default) will retry connecting to # the software with exponential backoff, soft will fail # immediately. #bind_policy hard bind_policy soft Při nastavení bind_policy na hard se LDAP snaží i v případě neúspěšného vyhledání ve všech backendech hledat znovu, a to s exponenciálně se zvyšujícími odstupy. Nastavení na soft tuto vlastnost potlačí a po prvním pokusu o vyhledání uživatele (ldap) v LDAPu skončí a použije data, která získal z passwd.