Мы — долго запрягаем, быстро ездим, и сильно тормозим.
|
|||||||||||||||||
www.lissyara.su
—> статьи
—> FreeBSD
|
|
Немного теории.
Cлужба каталогов LDAP (Light Weight Directory Access Protocol), является упрощенным вариантом DAP X.500, разработанного еще в 1988 году для нужд телекоммуникаций. В основе модели директории LDAP лежит идея размещения объектов в вершинах древовидной структуры. Группировка же объектов происходит по принципу размещения их в вершине одного поддерева, причем группироваться могут совершенно разные объекты. Для поиска некоторого объекта необходимо указать идентификатор корня соответствующего поддерева. Данные размещаются в директории в виде объектов. Каждый объект имеет несколько атрибутов, последний в свою очередь имеет название и значение фиксированного в LDAP типа. Тип определяет формат значения, вид его представления, способы сопоставления и упорядочивания.
Объекту присваивается класс (или классы) к которому он принадлежит с помощью обязательного аттрибута objectClass, значением которого является имя класса. Классы объектов объявлены в схеме директории (directory schema), где задаются имя класса, атрибуты, тип атрибутов а также указывается их обязательность или опциональность. Также могут быть указаны и родительские классы, определения которых будут наследоваться. Естественно, атрибут, который упоминался в родительском классе, как обязательный, для дочернего класса также будет обязательным. Аналогично и с опциональными атрибутами. На этой радостной ноте, предлагаю перейти к практике.
Установка LDAP-сервера.
Главный сервер slapd входит в состав пакета openldap(www.openldap.org). Ставить будем из портов:
|
Я решил установить openldap-2.3.25, так как openldap-server-2.2.30 устаревшая версия, а openldap-server-2.4.2.a_1 только alpha.
Сначала ставим openldap-client:
|
Теперь сервер:
|
В данном случае я собирал со следующими опциями:
- С поддержкой tcp wrappers
- С поддержкой Berkeley DB
- С поддержкой динамических бэкендов(ldbm и тд.)
- С поддержкой демона репликаций slurpd <br>
Теперь собираем и устанавливаем:
|
Установка сервера закончена, теперь переходим к его настройке.
Настройка slapd.
Главный конфигурационный файл сервера slapd находится по адресу: /usr/local/etc/openldap/slapd.conf. Его и будем редактировать:
/usr/local/etc/openldap/slapd.conf:
|
Добавляем в rc.conf строки, для запуска slapd и собственно запускаем:
|
Добавление, удаление, редактирование и посик объектов.
Теперь нужно создать корневой объект нашего дерева. Создадим файл base.ldif с таким содержанием:
|
Теперь добавим эту запись в ldap:
|
Все прошло без ошибок, значит у нас есть корневой объект. Давайте создадим контейнер test:
|
Давайте добавим пользователя lucky:
|
Параметры запуска:
-x : не использовать sasl
-D "dn" : под каким пользователем подключаться
-W : запросить ввод пароля
-f file : имя файла из которого брать информацию о добовляемом объекте.<br><br>
Добавили. Теперь давайте поищем информацию:
|
Используемые параметры:
-x : не импользовать sasl
-LLL : уменьшить кол-во выводимой информации, может быть -L или -LL
-b 'dn' : искать, начиная с конкретного объекта dn
'filter' : последний параметр указывает фильтр для поиска, в филтре могут использовать шаблоны и логические выражения.
Теперь можно попробовать отредактировать нашего пользователя, например изменив ему homeDirectory, uidNumber и добавив loginShell, а так же удалив gecos. Создаем файл modify.ldif и изменяем информацию в ldap дереве.
|
Теперь посмотрим на изменения:
|
Как видите, все успешно изменилось.
Если Вы хотите удалить объект, то нужно воспользоваться утилитой ldapdelete:
|
Последний параметр - dn имя объекта, который Вы хотите удалить.
Заключение.
Очень важно понять основы работы ldap, иначе в будущем Вы не сможете грамотно управлять им.
размещено: 2006-11-08,
последнее обновление: 2006-11-14,
автор: fr33man
rav, 2006-12-16 в 9:12:36
ldapadd -x -D "cn=root,dc=unix" -W -f base.ldif
правильно будет:
ldapadd -x -D "cn=root,dc=l1523,dc=ru" -W -f base.ldif
0m3r, 2007-02-28 в 10:40:30
также мну приходтса юзать опц. -h && -H
без них
ldap_bind: Can't contact LDAP server (-1)
KaMa-CyTpA, 2007-06-04 в 16:59:18
А чтобы он брал с АД все эти "навороты" - можно так сделать? ну то есть типа получится копии LDAP сервера на 2003 с АД
akvazar, 2007-10-12 в 12:41:29
Статье не повредит маленькая доводка и исправление ачепяток, а так, в общем, гуд. От себя хочу добавить маленькую ссылочку на програмулю для ковыряния OpenLdap-а из гуи интерфейса, под виндами(для тех кому сложно сходу после виндузовой актив-директори делать руками). Фриварь :)
LdapAdmin
dikens3, 2008-02-08 в 17:29:28
У меня slapd долго запускался/перезапускался. Опытным путём выяснил, что это влияет запись в /etc/nssswitch.conf
group: files ldap
А точнее поиск группы в ldap. Решение получилось такое:
nss_ldap.conf
host ldap://127.0.0.1
т.е. host исправляем.
Marina, 2008-07-12 в 11:48:07
В добавление к предыдущей утилите могу сказать, что существует плагин для эклипса - Apache Directory Studio.
Если использовать эклипс с поддержкой C/C++, то работать с LDAP будет ещё приятнее.
P.S. Огромное спасибо Автору за эту статью, прочитала её и наконец-то поняла, как примерно устроен LDAP :)
Constantine, 2008-07-13 в 14:39:03
to Dikens3
огромное тебе спасибо за замечание про исправление "host", всю голову сломал себе почему не работает!!!
Потемкин, 2008-07-31 в 12:54:45
В openldap-2.3.42 немного изменили core.schema, поэтому не выйдет добавить пользователя согласно приведенному в статье lucky.ldif. objectClass должны распологаться по-другому(в другой последовательности)
objectClass: person
objectClass: posixAccount
objectClass: shadowAccount
objectClass: top
Так работает.
Либо, если принципиально, внести соотвествующие изменения в core.shema, там всё прописано, только раскоментировать.
Ну и правильное замечание про ключ -h ко всем командам.. в моем случае все записи в rc.conf были добавлены как рекомендовано по умолчанию, то есть для хоста 0.0.0.0, поэтому отрабатывала команда ldapadd -h 0.0.0.0 дальше как в статье. Иначе Can't conect to LDAP Server (-1).
И ОЧЕНЬ важное замечание о котором не подумал автор, логи смотреть в /var/log/debug.log не зря ведь loglevel 256 ставили =)
Не совсем понятно зачем было ставить BDB и SLURPD.. В общем статья на 4 с минусом, но определенную пользу для новичков несет, хоть и вместе с гемороем))
turbo, 2008-08-04 в 17:23:08
а может быть, автор попробует на чистой системе поставить ldap и подкорректирует статейку с учетом коментов и форума? :)
Sergey, 2008-08-13 в 13:41:06
Дополняю ответы по граблям для поднятия версии:
openldap-2.4.11
cp /usr/local/etc/openldap/DB_CONFIG.example /var/db/openldap-data
/DB_CONFIG
slapd.conf - подправить теми же данными что и ldap.conf
Лучая админка http://www.ldapadministrator.com
Пользователей вводил для попробовать так:
dn: cn=lucky,ou=test,dc=l1523,dc=ru
objectClass: top
objectClass: person
sn: lucky
Sergey, 2008-08-15 в 12:29:45
Ещё добавочка. Если нужно настроить 2 зеркальных сервера собирайте со строчкой:
[X] SYNCPROV With Syncrepl Provider overlay
Sergey, 2008-08-15 в 12:33:53
Строчку через пост выше
> slapd.conf - подправить теми же данными что и ldap.conf
не читать, потому что запарился и написал чуш
Чукот, 2008-09-19 в 2:23:01
Вот - еще раз 3 дня мучений, пока не приходит счастливая мысль отключить ipv6 ( просто -4 не помогло). И openldap24 запустился.
Выдавал до этого упрямую ошибку bi_db_open_filed (-1)
я и с правами мутил, и в трассировщике отлаживал - нет результата - несно почему не может открыть базу данных bdb46... в логах - ничего путного...
После отключения ipv6 в Ядре - все поперло как надо. Сразу.
Чукот, 2008-09-19 в 2:27:33
Это все делалось в
7.1-PRERELEASE FreeBSD 7.1-PRERELEASE #0:
Kacnep, 2008-10-07 в 12:20:04
to dikens3
Спасибо большое !!!!
sEr..., 2008-12-20 в 4:32:57
Не знаю почему, но я не понял в какой директории нужно создать фаил base.ldif???
SaveMeGood, 2009-04-01 в 12:46:59
Потемкин: objectClass должны распологаться по-другому(в другой последовательности)
Какая разница как они расположены?
Alex, 2009-04-16 в 17:34:39
товарисчи, при добавлении записи base.ldif в ldap
не хавает пароль- говорит ldap_bind: Can't contact LDAP server (-1)
кто сталкивался ? че делать?
(первые два комента читал, пробовал - не помогает)[b]
Artem, 2009-08-12 в 23:34:45
to Alex: Скорее всего потому, что ты прописал пароль в slapd.conf, a slapd читает конфигурацию не из него, а из slapd.d/
Это его поведение по-умолчанию
savio, 2010-01-14 в 16:49:38
я так и не понял в чем "фишка" этого ldap'а...
xanf, 2010-02-01 в 15:02:55
не смог найти ссылки на обсуждение, спрошу тут.
уже расшиб себе лоб, пробовал ставить на двух разных машинах (7.2 и 8.0), slapd просто отказывается стартовать, перерыл все, перепробовал все советы. дебаг поразительно немногословен -
Feb 1 11:43:14 www slapd[53705]: @(#) $OpenLDAP: slapd 2.4.21 (Feb 1 2010 11:14:57) $ root@www.main.aricol.com:/usr/ports/net/openldap24-server/work/openldap-2.4.21/servers/slapd
Feb 1 11:43:14 www slapd[53705]: slapd stopped.
Feb 1 11:43:14 www slapd[53705]: connections_destroy: nothing to destroy.
где могут быть грабли, подскажите ньюбу...
xanf, 2010-02-01 в 15:15:07
отзываю просьбу, сам дурак оказался. у меня в конфиге закралась лажа... оччень помогла команда
slaptest -u
сразу мне на эти грабли и показала, и все заработало :)
спасибо за статью :)
Ivan Mironov, 2010-03-07 в 10:15:11
# Доступ к остальной информации: себе — писать, анонимам читать, остальным ничего.
access to *
by self write
С такой настройкой любой пользователь сможет сам себе выставить uidNumber == 0 и получить права root'а (если конечно системные пользователи берутся из LDAP'а) =).
Klop, 2010-12-06 в 3:31:51
# ldapadd -x -D "cn=root,dc=unix" -f base.ldif -w secret
ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)
# ldapadd -x -h 127.0.0.1 -D "cn=root,dc=unix" -f base.ldif -w\ secret
ldap_bind: Invalid credentials (49)
# ldapadd -x -h 127.0.0.1 -D "cn=root,dc=l1523,dc=ru" -f \base.ldif -w secret
adding new entry "dc=l1523,dc=ru"
Этот информационный блок появился по той простой причине,
что многие считают нормальным, брать чужую информацию не уведомляя автора
(что не так страшно), и не оставляя линк на оригинал и автора — что более существенно.
Я не против распространения информации — только за. Только условие простое — извольте
подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой,
незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
Если соизволите поставить автора в известность — то вообще почёт вам и уважение.
© lissyara 2006-10-24 08:47 MSK
Комментарии пользователей [24 шт.]