Адресная книга на LDAP за пять минут.
Эта шпаргалка не претендует на какую либо замену официальной документаци. RTFM – рулез форева, однако сие творение позволит быстро настроить и запустить собственно адресную книгу общего пользования – штуку довольно удобную. Ну а дальше уже можно обвешать все это дело разными спецфигнями, типа авторизации etc.
Итак, Steb-by-step lamers LDAP adresbook guide (шутка)
Качаем с www.openldap.org собственно LDAP сервер. Если хотите в качестве backenda BerkleyDB, тогда качаем и его (www.sleepycat.com) Надоть версию 4. Кого устроит gdbm – берем его. Меня устроило – ибо он у меня уже был :). Итак, считаем, DB установлен. OpenLDAP<version>.tar.gz лежит в /usr/src. Идем туда.
tar -zxvf ./OpenLDAP<version>.tar.gz
cd OpenLDAP<version>
./configure –help > conf.help
читаем получившийся файл, выбираем опции по вкусу
./configure <option>
у меня было:
./configure –with-prefix=/usr/local/openldap –enable-bdb=no –enable-ldbm –with-ldbm-api=gdbm –enable-debug
БерклейДБ запретил (он включен по умолчанию), ldbm разрешил, без последнего демон не будет писать логи.
make depend
make
make test
su - root -c make install
Идем в /usr/local/openldap/etc, редактируем slapd.conf Для адресной книги у меня
подключены три схемы:
include /usr/local/openldap/schema/core.schema
include /usr/local/openldap/schema/cosine.schema
include /usr/local/openldap/schema/inetorgperson.schema
затем обязательно надо сказать:
allow bind_v2 – по умолчанию поддерживается протокол V3, а на сколько я понял , ни мышь, ни мозила по нему работать не умеют. Впрочем это мое имхо, если я не прав – поправьте.
pdfile /var/lock/slapd.pid
argsfile /var/lock/slapd.args
loglevel -1 -в лог пишется ВСЯ отладочная информация.
database ldbm
suffix “o=MyOrganization,c=ru” - вместо MyOrganization поставьте, ну скажем, аббревиатуру своей.
rootdn “cn=admin, o=MyOrganization,c=ru ” - фактически – учетная звпись администратора.
rootpw MyZuperSecretPassword – его пароль.
directory /usr/local/openldap/var/openldap-data - каталог, где буде база храниться.
index default pres, eq
Все, запускаем сервер -
/usr/local/openldap/sbin/slapd
Смотрим лог – в конце должно стоять что-то типа daemon started. Ага, потираем руки, идем пить пиво.
Напимшись, делаем базу: создаем пустой текстовый файл
cd /usr/local/openldap/var/openldap-data
touch mybase.ldif
dn: o:myorganization,c=ru ; Описываем уникальный ключ корневого каталога
objectclass: dcobject ;Указываем, какие классы объектов доступны (т.е атрибуты каких
objectclass: organization ;классов можно описывать для этого каталога
o: myorganization ; Собственно описываем атрибуты
dc: myorganization ;o и c – сокращение атрибутов organization и country
dn: ou=users,o=sngi,c=ru
ou: users
objectclass: top ;указывает на родительские объекты (?)
objectclass: organizationalunit ;дочерний объект от organization
dn: cn=John S Doe,ou=users,o=myorganization,c=ru
objectclass:top
objectclass: organizationalperson
objectclass: inetorgperson
cn: John Doe ;Общее имя – их может быть несколько, тогда для кажлого – новая строка
mail: john@foo.com
gn: John ; givenname - Имя
sn: Doe ; surname - Фамилия
Таким образом мы будем иметь следующую структуру каталогов:
корневой: myorganization.ru (/)
в корневом пока один: users.myorganization.ru (/users)
в users один пользователь: djohn doe.users.myorganization.ru (/users/john doe)
если вы не хотите пихать всех в одну структурную единицу – создайте для каждого отдела свою:
dn: ou=cooladmin,o=sngi,c=ru
ou: cooladmin
objectclass: top ;указывает на родительские объекты (?)
objectclass: organizationalunit ;дочерний объект от organization
Теперь собственно создадим базу:
slapadd -f ./mybase.ldif -D “cn=admin.o=myorganization,c=ru” -W
-ппосле ключа -D идет УЗ админа, которую вы прописали в конфе
-W – запрос пароля, указанного там-же
Проверим:
ldapsearch -x -b “o=sngi,c=ru” “(objectclass=*)” -P 2
последнеий ключ -указываем протокол v2 (иначе Bat, например, не работает)
Можно проверить Bat – создаем новую книгу, на вкладке LDAP прописываем имя или адрес LDAP сервера, в базе поиска указываем o=myorganization,c=ru
Жмем Ок и F7. Вводим в поле e-mail @. После некоторого раздумья получим адын результат.
Все. Готово.
PS. Русские символы хранятся в базе в base64 кодировке:
givenName::0JTQvNC40YLRgNC40Lk= -Например в таком виде надо указывать в ldif-файле имя Дмитрий.
!обратите внимание на двойное двоеточие после наименование аттрибута – оно указывает как раз на то, что он base64 закодирован.
WBR, DebosH.
Статья взята с сайта OpenNet