Debian / Ubuntu LDAP kliens hitelesítés

Sok LDAP kliens beállítás érhető el a neten, nálam valahogy nem akartak működni. Ezért készítem ezt a leírást, hogy mások is rátalálhassanak egy ilyen konfigurációra. Abból indulok ki, hogy létezik valahol egy már beállított és működő LDAP szerver, amit a kliensem elér és a hitelesítést azon keresztül kívánom elvégezni. A kliens jelen cikk írásakor egy frissen telepített Debian 6.0.6 Squeeze / Ubuntu 12.04.1 LTS Precise Pangolin gép lesz.   Telepítsük fel a szükséges eszközöket a kliensre és adjuk meg a már működő LDAP szerver adatait:
apt-get install libnss-ldap libpam-ldap nscd
  LDAP server Uniform Resource Identifier: ldap://ldap.weblappark.hu/ Distinguished name of the search base: dc=ldap,dc=weblappark,dc=hu LDAP version to use: 3 Make local root database admin: yes Does the LDAP database require login? No LDAP Account for root: cn=adminuser,dc=ldap,dc=weblappark,dc=hu LDAP root account password: ******** Most a libnss-ldap lehetővé teszi, hogy az LDAP szolgáltatáson keresztül feloldja a távoli szerver adatbázisában lévő neveket, a libpam-ldap pedig a távoli felhasználók hitelesítését segíti a pam szolgáltatáson keresztül. Az nscd pedig egy névszolgáltatás cachelő démon, ami tárolja a szerverről már lekért információkat így nem kell a kliensnek minden lekérdezéskor az LDAP szerverhez fordulni. Az /etc/nsswitch.conf  fájlban módosítsuk az alábbi sorokat, hogy az LDAPban is keresse a szükséges információkat:
auth-client-config -t nss -p lac_ldap
vagy
passwd:         files ldap
group:          files ldap
shadow:         files ldap
Ha ezekkel megvagyunk, akkor már sikeresen le tudjuk kérdezni a távoli szerveren lévő LDAP felhasználó adatait:
getent passwd teszt
teszt:x:10002:10002:teszt:/home/teszt:/bin/bash
Nem marad más hátra, mint hogy a PAM rendszerrel is tudassuk, hogy az LDAP felhasználók hitelesíthetőek a rendszerben: Adjuk hozzá az /etc/pam.d/common-account  fájl elejéhez a következő sorokat:
account sufficient pam_ldap.so
account sufficient pam_unix.so
session required pam_mkhomedir.so
  Adjuk hozzá az  /etc/pam.d/common-auth fájl elejéhez a következő sorokat:
auth sufficient pam_ldap.so
auth sufficient pam_unix.so nullok_secure use_first_pass
  Adjuk hozzá az  /etc/pam.d/common-password  fájl elejéhez a következő sorokat:
password sufficient pam_ldap.so
password sufficient pam_unix.so nullok obscure min=4 max=8 md5
  Adjuk hozzá az  /etc/pam.d/common-session  fájl elejéhez a következő sorokat:
session sufficient pam_ldap.so
session sufficient pam_unix.so
  Ha ezeket a módosításokat felvettük, frissítsük le a PAM adatbázist
pam-auth-update
Végezetül indítsuk újra az nscd démont, hogy friss információkkal lássa el az LDAP szerver.
/etc/init.d/nscd restart
Azután sikeresen beléphetünk az újonnan telepített gépre a távoli LDAP szerveren kezelt felhasználókkal:
ssh teszt@vps312
teszt@vps312's password:
Creating directory '/home/teszt'.
teszt@vps312:~$
A frissen telepített gép ssh logja:
vps312 sshd: Accepted password for teszt
Ha valamelyik beállítást az elején elrontottuk, akkor az /etc/ldap.conf  fájlban utólag tudjuk módosítani, vagy a
dpkg-reconfigure ldap-auth-config
parancs futtatásával.   Jelszó váltás:
teszt@vps312:~$ passwd
Enter login(LDAP) password: jelenlegi LDAP jelszó
New password: új jelszó
Re-enter new password: új jelszó megint
LDAP password information changed for teszt
passwd: password updated successfully
teszt@vps312:~$
A következő belépésnél már a megváltoztatott LDAP jelszóval tudunk belépni. LDAP jelszó változtatása helyi root felhasználóval:
root@vps312:~# passwd teszt
New password:
Re-enter new password:
LDAP password information changed for teszt
passwd: password updated successfully
root@vps312:~#