Kowersja schematu LDAP do LDIF
Potęgą usługi katalogowej LDAP jest możliwość definiowania własnych atrybutów, klas obiektów, reguł itp. i grupowania ich w tzw. schematy, które można dodawać do konfiguracji.
Na dzień dzisiejszy jednak większość schematów, które znajdziecie w sieci jest zorganizowana w bloki zawierające definicje atrybutów i klas obiektów, wygląda to mniej więcej tak:
definicja typu atrybutu:
attributetype ( 1.3.6.1.4.1.32349.1.2.2.9 NAME 'accountStatus'
DESC 'The status of a user account: active, disabled'
EQUALITY caseIgnoreIA5Match
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
SINGLE-VALUE )
definicja klasy obiektu:
objectclass ( 1.3.6.1.4.1.32349.1.2.4.2 NAME 'mailAdmin'
DESC 'Mail Domain Admin' SUP top STRUCTURAL
MUST ( mail )
MAY ( domainGlobalAdmin $ description $ enabledService $
userPassword $ accountStatus $ cn $ sn $ givenName $
preferredLanguage $ givenName $ expiredDate $
mailHost $ lastLoginDate $ accountSetting ))
definicje te pochodzą ze schematu iredmail.schema, który wykorzystam tu jako przykład (umieszczę go też w załączniku).
Jeśli byśmy używali konfiguracji w pliku slapd.conf, to wystarczyłoby skopiować plik schematu do /etc/ldap/schema, wskazać w konfiguracji ścieżkę do tego pliku i zrestartować serwer, ale zakładam, że korzystamy z dynamicznej konfiguracji, więc musimy przekonwertować schemat do formatu LDIF.
Do tego celu polecam użyć skryptu perlowego, który także umieściłem w załączniku, a pobrałem go ze strony: http://directory.fedoraproject.org/download/ol-schema-migrate.pl. Pobieramy więc co trzeba i dokonujemy konwersji, sekwencja poleceń wygląda mniej więcej tak:
/usr/bin/sudo -i
cd /etc/ldap/schema
wget http://iredmail.googlecode.com/hg/iRedMail/samples/iredmail.schema
wget http://directory.fedoraproject.org/download/ol-schema-migrate.pl
UWAGA: skrypt jest nieco przestarzały i generuje LDIFa, który wyrzuci błąd przy próbie importu. Pomimo mojej słabej znajomości perla zrobiłem patcha na skrypt, który to poprawia, zamieszczę go w załączniku. Trzeba go nałożyć przed konwersją:
wget http://www.drfugazi.eu.org/?q=system/files/drf-ol-schema-migrate.patch
patch -p0 < drf-ol-schema-migrate.patch
perl ol-schema-migrate.pl -b iredmail.schema > iredmail.ldif
Konwersja gotowa, mamy schemat w pliku LDIF, czas dodać go do naszej konfiguracji:
ldapadd -Y EXTERNAL -H ldapi:/// -f iredmail.ldif
Jest też inny sposób na przeniesienie schematów a właściwie całej konfiguracji z pliku slapd.conf
do postaci dynamicznej przy użyciu narzędzia slaptest
, ale o tym może w następnym odcinku 🙂