Do tej pory skonfigurowaliśmy i uruchomiliśmy serwer OpenLDAP. Przyszedł czas na dodanie kilku rekordów. W tym celu przygotujemy sobie plik (tekstowy) w formacie LDIF (ang. LDAP Data Interchange Format). Zawartość pliku prezentuje poniżej:
# base.ldif
# Wpis 1: dc=firma,dc=bogus
dn: dc=firma,dc=bogus
dc: firma
o: firma
objectclass: dcObject
objectclass: organization
objectclass: top
# Wpis 2: ou=people,dc=firma,dc=bogus
dn: ou=people,dc=firma,dc=bogus
ou: people
objectclass: organizationalUnit
objectclass: top
# Wpis 3: ou=groups,dc=firma,dc=bogus
dn: ou=groups,dc=firma,dc=bogus
ou: groups
objectclass: organizationalUnit
objectclass: top
Składnia takiego pliku jest jak widać dosyć prosta. Plik zawiera listę rekordów, gdzie każdy z nich jest wpisem w drzewie katalogowym. Kolejne rekordy oddzielone sa od siebie pustą linią. Rekord musi posiadać swój ‘dn’, listę klas obiektowych (które określają typ obiektu) oraz listę atrybutów (tych wymaganych i dodatkowych).
Podczas dodawania wpisów plik LDIF jest przetwarzany rekord po rekordzie, dlatego ważne jest, aby wpisy rodziców były w dodane w pierwszej kolejności. W przeciwnym wypadku otrzymamy komunikat błędu.
Ponieważ nasza baza jest pusta, musimy zacząć od stworzenia korzenia całego drzewa katalogowego (ang. base DN). Zacznijmy od klas obiektowych. Nasz rekord posiada 3 klasy – ‘top’, ‘dcObject’ oraz ‘organization’. Klasa ‘top’ jest klasą nadrzędną dla wszystkich klas i jest klasą abstrakcyjną. Klasa ‘dcObject jest klasą pomocniczą. Aby można było dodać wpis musi ona zawierać klasę strukturalną a taka właśnie klasą jest klasa ‘organization’. A ponieważ najczęściej korzeń opisany jest jako organizacja – ta klasa pasuje tutaj najbardziej. Oczywiście moglibyśmy ją zastąpić dowolną inną klasą strukturalną. Kolejnymi elementami naszego rekordu są atrybuty wymagane (MUST) przez nasze klasy. Dla ‘dcObject’ jest to atrybut ‘dc’, dla ‘organization’ atrybut ‘o’.
Pozostałe dwa rekordy tworzą kolejna strukturę w naszym drzewie. Sa one potomkami dla naszego wpisu dc=firma,dc=bogus. Obydwa rekordy sa należą do klasy ‘organizationalUnit’, której jedynym wymaganym atrybutem jest ‘ou’.
W ten sposób rozpoczęliśmy budowę struktury naszego drzewa LDAP. Każdy może zbudować taką strukturę dowolnie, wedle swoich potrzeb i uznania. Model który tu pokazałem (a właściwie jego początek), i którego używam na co dzień, doskonale nadaje się do wykorzystania w firmie – do obsługi usług IT. Wewnątrz jednostki organizacyjnej ‘people’ (można ją nazwać np. ‘users’) przechowuję informację na temat swoich użytkowników. Wewnątrz ‘groups’ informację o grupach. Na potrzeby serwera Samba posiadam jednostkę organizacyjną ‘hosts’ przechowującą informację o komputerach w sieci.
Innym sposobem reprezentacji może być struktura organizacyjna firmy. Czyli tworzymy jednostki organizacyjne – Księgowość, Kadry, Dział sprzedaży – a w nich kolejne wpisy reprezentujące np. pracowników.
No dobrze. Stworzyliśmy bardzo krótki i prosty plik LDIF. Czas na sam koniec dodać te rekordy do bazy. Do tego celu użyjemy programu ldapadd:
$/> ldapadd –f base.ldif –D “cn=admin,dc=firma,dc=bogus” –W
Zostaniemy poproszeni o hasło do serwera i voila! Pierwsze wpisy znalazły się w bazie (o ile gdzieś po drodze, w pliku nie było błędu).