Pr�kladom Directory Service je WHOIS, DNS alebo X.500. Protokol X.500 vznikol ako pokus o zov�eobecnen�, decentralizovan� a distribuovan� model adres�rovej slu�by. Ked�e sa v�ak uk�zalo, �e tak ako je navrhnut� je obtia�ne implementovate�n�, vznikol LDAP (Lightweight Directory Access Protocol) [ RFC3377] od�ah�en� protokol na pr�stup k X.500.
Pr�kladom triedy je napr. trieda posixAccount a trieda shadowAccount. Obe boli definovan� na to aby bolo mo�n� autentizova� u�iva�elov presne tak ako funguje autentiz�cia pomocou s�borov /etc/passwd a /etc/shadow, teda aj atrib�ty t�chto tried odpovedaj� z�znamom v pr�slu�n�ch s�boroch. Triedy posixAccount a shadowAccount vyzeraj� nasledovne (pod�a Ldap Schema Viewer):
posixAccount | shadowAccount |
---|---|
Atrib�ty vy�adovan�:cn: Common Name uid: Uniq ID uidNumber: unixov� uid gidNumber: unixov� gid homeDirectory: domovsk� adres�r objectClass: hodnota je posixAccount a pr�padne �al�ie Atrib�ty povolen�:userPassword: heslo loginShell: shell gecos: GECOS z�znam odpovedaj�ci z�znamu z /etc/passwd description: popis objektu |
Atrib�ty vy�adovan�:uid: Uniq ID objectClass: hodnota je shadowAccount a pr�padne �al�ie Atrib�ty povolen�:userPassword: heslo shadowLastChange: shadowMin: shadowMax: shadowWarning: shadowInactive: shadowExpire: shadowFlag: description: popis objektu |
Aj ke� je LDAP st�le pou��van� ako gateway pre X.500, LDAP je �astej�ie priamo imlementovan� v X.500 serveroch. Najpou��vanej�ia implement�cia LDAPu je OpenLDAP. Pou��va dva d�mony slapd a pr�padne slurpd. slapd(8) je vlastne od�ah�en� X.500 server. Neimplementuje DAP, ale iba podmno�inu jeho funkcionality pomocou LDAP. slurpd je replika�n� server, zodpovedn� za distrib�ciu zmien spraven�ch v master slapd datab�ze na in� (z�lo�n�) servery.
OpenLDAP implementuje LDAPv3, slapd podporuje LDAP nad IPv4 aj IPv6, autentiz�ciu pomocou SASL (konkr�tne Cyrus SASL), TLS a SSL pomocou OpenSSL, UNICODE alebo pr�stup z najpopul�rnej��ch skriptovac�ch jazykov (Perl, Shell, SQL a Tcl).
V uvedenom konfigura�nom s�bore mus�me definovat kde m� LDAP pri �tarte h�ada� sch�mu svojho stromu - teda ako bud� vyzera� inform�cie v datab�ze. �alej je mo�n� definova� DN spr�vcu datab�zy a jeho heslo. Heslo sa vo svete LDAPu zapisuje obvykle vo forme {typ}hash, teda napr. {MD5}Md5_HaSh_HeSlA, takto ho n�jdeme ulo�en� aj v datab�ze a� na to, �e cel� tento re�azec je naviac zakodovan� Base64 (pre n� re�azec to bude: e01ENX1NZDVfSGFTaF9IZVNsQQ==). Nakoniec zmienim mo�nos� definova� pr�stupov� pr�va na dan� objekt datab�zy direkt�vou access, kde na dan� objekt (napr. dn=".*ou=group,dc=organizacia,dc=korporacia,dc=com") definujeme napr�klad pr�vo ��tania pre dn="cn=backup,ou=admins,dc=organizacia,dc=korporacia,dc=com" a pre domain=.* (teda pre objekt v datab�ze s dan�m DN a pre pr�stup z akejko�vek dom�ny). Detaily vi� slapd.conf(5).include /etc/openldap/schema/core.schema include /etc/openldap/schema/cosine.schema include /etc/openldap/schema/inetorgperson.schema include /etc/openldap/schema/nis.schema include /etc/openldap/schema/redhat/rfc822-MailMember.schema include /etc/openldap/schema/redhat/autofs.schema include /etc/openldap/schema/redhat/kerberosobject.schema TLSCertificateFile /usr/share/ssl/certs/slapd.pem TLSCertificateKeyFile /usr/share/ssl/certs/slapd.pem TLSCACertificateFile /usr/share/ssl/certs/slapd.pem database ldbm suffix "dc=organizacia, dc=korporacia, dc=com" rootdn "cn=admin, dc=organizacia, dc=korporacia, dc=com" rootpw {MD5}HESLO directory /var/lib/ldap index objectClass,uid,uidNumber,gidNumber eq index cn,mail,surname,givenname eq,subinitial defaultaccess none sizelimit 100000 replica host=ldap.organizacia.korporacia.com binddn="cn=replicator,dc=organizacia,dc=korporacia,dc=com" bindmethod=simple credentials=""XXXXXXX" replogfile /var/lib/ldap/ldap.replog access to dn=".*ou=group,dc=organizacia,dc=korporacia,dc=com" by dn="cn=backup,ou=admins,dc=organizacia,dc=korporacia,dc=com" read by domain=.* read access to dn=".*ou=people,dc=organizacia,dc=korporacia,dc=com" by dn="cn=backup,ou=admins,dc=organizacia,dc=korporacia,dc=com" read by domain=.* read access to "dn=.*ou=admins,dc=organizacia,dc=korporacia,dc=com" by dn="cn=backup,ou=admins,dc=organizacia,dc=korporacia,dc=com" read by * compare access to "dn=.*" by dn="cn=backup,ou=admins,dc=organizacia,dc=korporacia,dc=com" read by * read
V s�bore je pre jednu tabu�ku (jeden typ slu�by) ur�en� riadok, tak �e na za�iatku je identifikovan� tabu�ka a potom usporiadan� zoznam pod�a, ktor�ho sa bude napr. preklada� dom�nov� meno. Teda ak riadok obsahuje:passwd: files nisplus shadow: files nisplus group: files nisplus hosts: files nisplus dns ethers: files netmasks: files networks: files protocols: nisplus [NOTFOUND=return] files rpc: files services: files nisplus automount: files nisplus aliases: files nisplus
najprv sa meno bude h�ada� v lok�lnych konf. s�boroch (/etc/hosts) v pr�pade ne�spechu sa bude sk��a� NIS, potom LDAP a nakoniec sa pou�ije DNS dotaz. V pr�pade, �e do zoznamu uvedieme [NOTFOUND=return] h�adanie sa zastav� ak h�adanie v predch�dzaj�cej polo�ke ni� nevr�tilo. Ak v�ak h�adanie skon�ilo ne�spechom, preto�e slu�ba nebola dostupn� pokra�uje sa �alej.hosts: files nisplus ldap dns
Definuje slu�bu pre ak� sa m� cachovanie vykon�va� a rozne parametre pre dan� cache. Je vhodn� cachovanie zapn�� z dovodu zn��enia dotazov napr. na LDAP server.server-user nscd debug-level 0 enable-cache passwd yes positive-time-to-live passwd 600 negative-time-to-live passwd 20 suggested-size passwd 211 check-files passwd yes enable-cache hosts yes positive-time-to-live hosts 3600 negative-time-to-live hosts 20 suggested-size hosts 211 check-files hosts yes
LDIF obsahuje jednu dvojicu atrib�t: hodnota na jednom riadku. Tento v�pis sme z�skali pr�kazom:dn: uid=xkruty,ou=People,dc=fi,dc=muni,dc=cz uid: xkruty cn: xkruty objectClass: account objectClass: posixAccount objectClass: shadowAccount userPassword:: e2NyeXB0fXg= loginShell: /bin/zsh uidNumber: 13644 gidNumber: 10100 homeDirectory: /home/xkruty gecos: Peter Kruty host: aisa host: anxur host: atys host: erigona host: erinys host: nereus host: nymfe host: oreias host: pyrrha
Parametre znamenaj�:$ ldapsearch -h ldap.fi.muni.cz -b 'dc=fi,dc=muni,dc=cz' -x -LLL 'uid=xkruty'
-h | LDAP server, ktor�mu sa polo�� ot�zka |
---|---|
-b | base ot�zky, teda podstrom v ktorom sa m� vyh�ad�vat |
-x | pou�ije sa jednoduch� autentiz�cia namiesto SASL |
-LLL | v�pis bude v LDIFv1 form�te bez koment�rov a verzie LDIFu |
'uid=xkruty' | vyh�ad�vac� filter |
Tento pr�kaz teda n�jde na serveri ldap.fi.muni.cz v podstrome 'dc=fi,dc=muni,dc=cz' v�etky objekty, ktor� maj� hodnotu atrib�tu uid rovn� 'xkruty'. Pr�klad modifik�cie LDAP datab�zy:
dn: uid=xkruty,ou=People,dc=fi,dc=muni,dc=cz changetype: modify add: description description: ahoj -
ldapmodify -H ldaps://ldap.organizacia.korporacia.com -W -x \ -D 'cn=user,ou=organizacia,dc=korporacia,dc=com' -f xkruty.ldif Enter LDAP Password: XXXXXXX