LDAP

Directory
Baza danych do wyszukiwania i przegladania zawartosci. Zadaniem jest wyszukanie i podanie wyniku, update w mniejszym stopniu.

Suffix
Entry na “szczycie drzewa”. Zawiera wtedy suffix. Serwer moze miec kilka suffixow (np. Ou=sprzedaz, ou=wsparcie it)

refferal
Serwer ldapa moze przechowywać cale DIT lub tylko jego czesc (np. Organizacje). Wtedy entry zawiera objectclass - referral, ktory zawiera atrybut wskazujacy na inny serwer. Np. ref=11.11.22.22,

Server information
Root zawiera entry “root DSE”, ktore zawiera atrybuty opisujace serwer

Operacje na serwerze ldap:
Query - szukanie i porownanie informacji
Update - dodanie, usuniecie, modyfikacja RDN
Authentication - dostep

Distinguished name of entry
Relative distinguished name of entry


OID
Object identifier, sekwencja liczb całkowitych oddzielonych kropkami (.)

Zabezpieczenia:
SASL, SSL/TLS
Szukanie
Trzeba okreslic parametry
Base - DN okreslajacy punkt poczatkowy, tj. Base object
Scope - jak gleboko ma szukac od base object. Sa to baseObject, singleLevel, and wholeSubtree
Search filter - kryteria, jakie entry musi spelniac
Attributes to return - jezeli entry ma duzo atrybutow, to zwroci tylko wybrane
Alias dereferencing - czy uzywamy aliasu czy nie
Limits - np. Rozmiar

Szukanie - syntax
Operator
DescriptionExample
= Returns entries whose attribute is
equal to the value.
cn=John Smith finds the entry
with common name John Smith
>= Returns entries whose attribute is
greater than or equal to the value.
sn>=smith finds all entries from
smith to z*
<=
Returns entries whose attribute is
less than or equal to the value.
sn<=smith finds all entries from
a*to smith
=* Returns entries that have a value
set for that attribute.
sn=* finds all entries that have the
sn attribute
~= Returns entries whose attribute
value approximately matches the
specified value. Typically, this is an
algorithm that matches words that
sound alike.
sn~= smit might find the entry
“sn=smith




Boolean Operator Description
& Returns entries matching all specified filter criteria
|< td>Returns entries matching one or more of the filter criteria.
! Returns entries for which the filter is not true. This operator can
only be applied to a single filter. (!(filter)) is valid, but
(!(filter1)(filter2)) is not

SASL


Entry
Podstawowa jednostka informacji przechowywanych w bazie. Jest to np. User, serwer, organizacja. Kazde entry ma swoje atrybuty obiektu. Atrybut ma przypisana jedna lub wiele wartosci (values), atrybut moze miec wiele values (np. wiecej niz 1 nr. telefonu)

Object -

Przyklad
Entry atrybuty z values syntax-typ value
marek kraj=Polska
Wzrost=175 cm
Hobby=motocykle, strzelanie
slowo
liczba
slowo

UID (User Identifier) identyfikator użytkownika
RID (Relative Identifier) względny identyfikator użyt.
CN (Common Name) nazwa
SN (Surname) nazwisko
OU (Organizational Unit)jednostka organizacyjna
O (Organization) jednostka
DC (Domain Component) składnik nazwy domenowej
C (Country) państwo


Entry
Attr.1 | attr. 2
Attr. 3 | attr. 4 ----------type: value, value, value

Kazde entry ma specjalny atrybut objectClass. Jego wartosc to 2 lub wiecej schematow
Schematy - okreslaja
Jaki typ obiektu moze byc przechowywany w bazie
Obowiazkowe/opcjonalne atrybuty (np. Sn - surname obowiazkowe, description - opcjonalne)



Naming model - okresla jak entries sa identyfikowane i organizowane
DIT - directory information tree
DN - distinguished name. Unikalna nazwa, tworzona na podstawie sekwencji RDN od leaf do root (przeciwnie do np. Dns)
RDN - relative distinguished name. Na kazdym poziomie “drzewa’,
Czyli entries sa organizowane “na wzor” drzewa, na podstawie DN, ktore tworzone sa na podstawie sekwencji RDN.

DN=RDN0, RDN1, RDN2, RDN3, RDN4


DIT:
C/Country (alias/attribute name)=US (rdn, attribute=value)
O=IBM (rdn, attribute=value)
OU=ldap team (rdn, attribute=value)
CN=John (rdn, attribute=value)

DN: c=US, o=IBM, ou=ldap team, cn=John
Distinguished name
cn=John Smith,o=IBM, c=US

Atrybuty moga miec pelna nazwe lub aliasy:

Przyklady atrybutow i aliasow
CommonName CN
LocalityName L
StateOrProvinceName ST
OrganizationName O
OrganizationalUnitName OU
CountryName C
StreetAddress STREET
domainComponent DC
userid UID


UWAGA NA ZNAKI SPECJALNE:

Attribute Type String

InetOrgPerson Defines entries for a person commonName (cn)
surname (sn)
objectClass

Subclassing - uzyskiwanie obiektow z innych obiektow

przydatne komendy

uruchomienie servera openldap: service slapd status

/etc/openldap/slapd.conf
suffix - domena, dla ktorej usluga ldap udostepnia informacje
rootdn,rootpw - administrator, nie dotycza go ograniczenia
przy rootpw trzeba uzyc komendy slappasswd. to haslo nie jest szyfrowane, wiec trzeba wlaczyc TLS

dodanie wpisu do bazy
1. slapadd - Add entries to a SLAPD database
2. ldif - create LDIF file


obsluga serwera ldap

1. sprawdzenie setup i objects
lokalnie - ldapsearch -x -b 'dc=paloaltonetworks,dc=com' '(objectclass=*)'
na zdalnym serwerze - ldapsearch -x -b 'dc=paloaltonetworks,dc=com' '(objectclass=*)' -h 10.1.2.3

2. modyfikowanie wpisow
ldapmodify

3. sprawdzenie poprawnosci pliku slapd.conf
bez database - slaptest -uv



logrotate

[root@localhost ~]# logrotate -f /etc/logrotate.d/syslog
[root@localhost ~]# logger "HAHAHAHA" -f /var/log/messages
Jan 2 23:45:39 localhost root: HAHAHAHA

[root@localhost ~]# logger -t ALARM "HAHAHAHA" -f /var/log/messages
Jan 2 23:45:51 localhost ALARM: HAHAHAHA

żeby wpisac text do pliku z logiem, ten plik musi istniec
[root@localhost ~]# logger -t ALARM "HAHAHAHA" -f /var/log/messagessssss
logger: /var/log/messagessssss: No such file or directory.

opracowania:
understanding ldap - fajne
http://courses.cs.vt.edu/~cs5204/fall05-kafura/Papers/Naming/PagesFromUnderstandingLDAP.pdf
http://www.kt.agh.edu.pl/~iszczesniak/dydaktyka/pd/szubert.pdf
http://www.redbooks.ibm.com/redbooks/pdfs/sg246193.pdf
http://www.linuxforu.com/2010/02/openldap-part-1-setting-up-directory-server/ - bardzo fajna stronka