Создаем адресную книгу на базе OpenLDAP::Журнал СА 10.2006
www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Подписка
Архив номеров
Где купить
Наука и технологии
Авторам
Рекламодателям
Контакты
   

  Опросы
  Статьи

Событие  

В банке рассола ждет сисадмина с полей фрактал-кукумбер

Читайте впечатления о слете ДСА 2024, рассказанные волонтером и участником слета

 Читать далее...

Организация бесперебойной работы  

Бесперебойная работа ИТ-инфраструктуры в режиме 24/7 Как обеспечить ее в нынешних условиях?

Год назад ИТ-компания «Крок» провела исследование «Ключевые тренды сервисного рынка 2023». Результаты

 Читать далее...

Книжная полка  

Читайте и познавайте мир технологий!

Издательство «БХВ» продолжает радовать выпуском интересных и полезных, к тому же прекрасно

 Читать далее...

СУБД PostgreSQL  

СУБД Postgres Pro

Сертификация по новым требованиям ФСТЭК и роль администратора без доступа к данным

 Читать далее...

Критическая инфраструктура  

КИИ для оператора связи. Готовы ли компании к повышению уровня кибербезопасности?

Похоже, что провайдеры и операторы связи начали забывать о требованиях законодательства

 Читать далее...

Архитектура ПО  

Архитектурные метрики. Качество архитектуры и способность системы к эволюционированию

Обычно соответствие программного продукта требованиям мы проверяем через скоуп вполне себе понятных

 Читать далее...

Как хорошо вы это знаете  

Что вам известно о разработках компании ARinteg?

Компания ARinteg (ООО «АРинтег») – системный интегратор на российском рынке ИБ –

 Читать далее...

Графические редакторы  

Рисование абстрактных гор в стиле Paper Cut

Векторный графический редактор Inkscape – яркий представитель той прослойки open source, с

 Читать далее...

День сисадмина  

Учите матчасть! Или как стать системным администратором

Лето – время не только отпусков, но и хорошая возможность определиться с профессией

 Читать далее...

День сисадмина  

Живой айтишник – это всегда движение. Остановка смерти подобна

Наши авторы рассказывают о своем опыте и дают советы начинающим системным администраторам.

 Читать далее...

Виртуализация  

Рынок решений для виртуализации

По данным «Обзора российского рынка инфраструктурного ПО и перспектив его развития», сделанного

 Читать далее...

Книжная полка  

Как стать креативным и востребованным

Издательский дом «Питер» предлагает новинки компьютерной литературы, а также книги по бизнесу

 Читать далее...

Книжная полка  

От создания сайтов до разработки и реализации API

В издательстве «БХВ» недавно вышли книги, которые будут интересны системным администраторам, создателям

 Читать далее...

Разбор полетов  

Ошибок опыт трудный

Как часто мы легко повторяем, что не надо бояться совершать ошибки, мол,

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 6142
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 6854
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

12.03.2018г.
Просмотров: 4137
Комментарии: 0
Глубокое обучение с точки зрения практика

 Читать далее...

12.03.2018г.
Просмотров: 2976
Комментарии: 0
Изучаем pandas

 Читать далее...

12.03.2018г.
Просмотров: 3781
Комментарии: 0
Программирование на языке Rust (Цветное издание)

 Читать далее...

19.12.2017г.
Просмотров: 3789
Комментарии: 0
Глубокое обучение

 Читать далее...

19.12.2017г.
Просмотров: 6282
Комментарии: 0
Анализ социальных медиа на Python

 Читать далее...

19.12.2017г.
Просмотров: 3134
Комментарии: 0
Основы блокчейна

 Читать далее...

19.12.2017г.
Просмотров: 3433
Комментарии: 0
Java 9. Полный обзор нововведений

 Читать далее...

16.02.2017г.
Просмотров: 7246
Комментарии: 0
Опоздавших не бывает, или книга о стеке

 Читать далее...

17.05.2016г.
Просмотров: 10616
Комментарии: 0
Теория вычислений для программистов

 Читать далее...

30.03.2015г.
Просмотров: 12335
Комментарии: 0
От математики к обобщенному программированию

 Читать далее...

18.02.2014г.
Просмотров: 13966
Комментарии: 0
Рецензия на книгу «Читаем Тьюринга»

 Читать далее...

13.02.2014г.
Просмотров: 9098
Комментарии: 0
Читайте, размышляйте, действуйте

 Читать далее...

12.02.2014г.
Просмотров: 7052
Комментарии: 0
Рисуем наши мысли

 Читать далее...

10.02.2014г.
Просмотров: 5361
Комментарии: 3
Страна в цифрах

 Читать далее...

18.12.2013г.
Просмотров: 4593
Комментарии: 0
Большие данные меняют нашу жизнь

 Читать далее...

18.12.2013г.
Просмотров: 3400
Комментарии: 0
Компьютерные технологии – корень зла для точки роста

 Читать далее...

04.12.2013г.
Просмотров: 3127
Комментарии: 0
Паутина в облаках

 Читать далее...

03.12.2013г.
Просмотров: 3378
Комментарии: 0
Рецензия на книгу «MongoDB в действии»

 Читать далее...

02.12.2013г.
Просмотров: 2999
Комментарии: 0
Не думай о минутах свысока

 Читать далее...

Друзья сайта  

 Создаем адресную книгу на базе OpenLDAP

Архив номеров / 2006 / Выпуск №10 (47) / Создаем адресную книгу на базе OpenLDAP

Рубрика: Администрирование /  Продукты и решения   | Дополнительные материалы

СЕРГЕЙ АПАЕВ

Создаем адресную книгу на базе OpenLDAP

Надоела пустая трата времени на ведение адресных книг в текстовом формате? Возможно, использование сервера каталогов будет лучшим решением проблемы.

Почему OpenLDAP?

OpenLDAP – бесплатный сервер каталогов, который содержится в большинстве дистрибутивов Linux и FreeBSD. Он обладает достаточной функциональностью и полностью совместим с Outlook Express, Mozilla и Mozilla Thunderbird.

Почему PostgreSQL?

PostgreSQL – достаточно известный сервер баз данных. Обладает хорошим быстродействием, надёжностью и многофункционален. В отличие от MySQL он поддерживает спецификацию ANSI SQL 92, что без особых усилий позволяет перенести базы данных, написанные на PostgreSQL, в такие коммерческие продукты, как Oracle и MSSQL, а также обладает широким набором дополнительных возможностей (правила, триггеры, встроенные языки). Продукт 1С Бухгалтерия v. 8.1 был полностью реализован на PostgreSQL. Использование PostgreSQL в данном примере ярко иллюстрирует часть его возможностей.

Остальные подробности

Для управления содержимым сущностей будет использоваться веб-интерфейс PHPLdapAdmin. Это мощный веб-интерфейс для работы с OpenLDAP. Он содержит большое количество встроенных шаблонов, что упрощает работу с каталогами.

Структура адресной книги

Наименование поля

Имя

Фамилия

ФИО (полностью)

Электронная почта

Домашний телефон

Рабочий телефон

Мобильный телефон

Должность

Название отдела

Название организации (частная компания)

Факс

Пейджер (ICQ, Yahoo и т. д.)

Домашний адрес

Рабочий адрес

Почтовый индекс

OpenLDAP осуществляет взаимодействие с PostgreSQL через источники данных UnixODBC, что позволяет использовать другие серверы баз данных (MySQL, MSSQL, Oracle и т. д.). Все поля из таблицы будут отображаться в таких почтовых клиентах, как Outlook Express, Mozilla Thunderbird и просто Mozilla. Итак, приступим.

Установка и настройка OpenLDAP

Для успешной сборки OpenLDAP установим unixODBC-2.2.11.

Собираем из портов:

# cd /usr/ports/databases/unixODBC

# make && make install

Приступаем к установке самого пакета OpenLDAP:

# cd /usr/ports/databases/openldap23-client

# make && make install

# cd ../openldap23-server

# make WITH_ODBC=YES WITH_ODBC_TYPE=unixodbc

# make install

Приступаем к настройке сервера.

Убедитесь, что после установки на главный конфигурационный файл стоят права владельца на пользователя ldap. В противном случае задайте права на главный конфигурационный файл:

# chown ldap:ldap /usr/local/etc/openldap/slapd.conf

Правим главный конфигурационный файл:

# mcedit /usr/local/etc/openldap/slapd.conf

# Подключаем необходимые схемы

include          /usr/local/etc/openldap/schema/core.schema

include          /usr/local/etc/openldap/schema/cosine.schema

include          /usr/local/etc/openldap/schema/inetorgperson.schema

# Указываем путь для файлов pid и args

pidfile          /var/run/openldap/slapd.pid

argsfile         /var/run/openldap/slapd.args

# Определяем порядок доступа к сущностям

# Разрешаем доступ к службе каталогов LDAP только авторизированным пользователям

access to *

    by users read

    by self read

    by anonymous auth

# Путь к модулю sql

modulepath       /usr/local/libexec/openldap

moduleload       back_sql.so

#########################################################

# sql database definitions

#########################################################

# Определяем настройки для соединения с PostgreSQL-сервером

database         sql

suffix           "o=myorg"

rootdn           "cn=root,o=myorg"

rootpw           {MD5}Xr4ilOzQ4PCOq3aQ0qbuaQ==

# Имя источника данных

dbname           PostgreSQL

# Имя пользователя для соединения с PostgreSQL

dbuser           ldap

# Пароль для данного пользователя

dbpasswd         {MD5}4QrcOUm6Wau+VuBX8g+IPg==

insentry_stmt    "insert into ldap_entries (id,dn,oc_map_id,parent,keyval) values ((select nextval('ldap_entries_id_seq')),?,?,?,?)"

upper_func        "upper"

strcast_func     "text"

concat_pattern   "?||?"

has_ldapinfo_dn_ru      no

# При использовании модуля sql-индексы указывать не нужно

# Поиск автоматически можно вести по всем атрибутам, используемым в LDAP-дереве

Для более безопасного хранения пароля его необходимо зашифровать, поэтому для шифрования паролей выполните команду:

  • для администратора ldap-каталогов:

# slappasswd –h {MD5} –s secret

  • Для доступа к PostgreSQL:

# slappasswd –h {MD5} –s 123456

Для того чтобы не переписывать длинный кодированный пароль, в конце данных команд можно поставить перенаправление вывода на конфиг в конец файла (>>/usr/local/openldap/etc/slapd.conf), а потом отредактировать.

Для запуска, остановки, перезапуска, проверки статуса используем команду:

# /usr/local/etc/rc.d/slapd.sh start stop restart status

Запускаем сервер после установки PostreSQL.

Для автоматического запуска OpenLDAP при загрузке правим rc.conf:

# mcedit /etc/rc.conf

slapd_enable="YES"

slapd_flags="-u ldap –g ldap –h ldap://192.168.7.1"

Базовая настройка сервера каталогов закончена.

Установка и настройка PostgreSQL

PostgreSQL – мощный сервер баз данных, предназначенный для бесплатного использования в рамках лицензии BSD. Он входит в состав большинства дистрибутивов Linux и FreeBSD.

Собираем PostgreSQL из портов:

# cd /usr/ports/databases/postgresql80-client

# make && make install

# cd /usr/ports/databases/postgresql80-server

# make && make install

Создадим каталог для размещения баз данных с правами на pgsql:

# cd /var/db

# mkdir pgsql

# chmod 700 pgsql && chown pgsql:pgsql pgsql

# /usr/local/bin/sudo –u pgsql /usr/local/bin/initdb –-username=pgsql –-pgdata=/var/db/pgsql

Возможно, вам придётся установить утилиту sudo в разделе security общего дерева портов. После установки не забудьте разрешить root запускать команды для пользователя pgsql. Для этого необходимо отредактировать sudoers:

# mcedit /usr/local/etc/sudoers

root             ALL=(pgsql) ALL

Данная строка разрешает root запускать команды для пользователя pgsql. После создания первичных баз в целях безопасности данную строку можно закомментировать или удалить.

Для автоматического запуска сервера при загрузке системы правим rc.conf:

# mcedit /etc/rc.conf

postgresql_enable="YES"

postgresql_user="pgsql"

postgresql_data="/var/db/pgsql"

Далее правим главный конфигурационный файл, где указываем IP, на котором будет работать сервер:

# mcedit /var/db/pgsql/postgresql.conf

listen_addresses='localhost'

Для версии 7.x необходимо указать:

tcpip_socket = true

virtual_host = '127.0.0.1'

Для запуска PostgreSQL выполните команду:

# /usr/local/etc/rc.d/010.pgsql.sh start

Настройка UnixODBC

Для настройки UnixODBC необходимо создать два файла следующего содержания:

# mcedit /usr/local/etc/odbcinst.ini

[PostgreSQL]

Description         = PostgreSQL driver for Linux & Win32

Driver              = /usr/local/lib/libodbcpsql.so

Setup               = /usr/local/lib/libodbcpsqlS.so

FileUsage           = 1

В данном файле мы указываем путь к библиотеке, которая отвечает за работу с PostgreSQL-сервером.

# mcedit /usr/local/etc/odbc.ini

[PostgreSQL]

Description         = Test to Postgres

Driver              = PostgreSQL

Trace               = Yes

TraceFile           = sql.log

Database            = ldap

Servername          = 127.0.0.1

UserName            =

Password            =

Port                = 5432

Protocol            = 6.4

ReadOnly            = No

RowVersioning       = No

ShowSystemTables    = No

ShowOidColumn       = No

FakeOidIndex        = No

ConnSettings        =

Здесь содержится информация, используемая для доступа к PosgreSQL. Имя пользователя и пароль мы указали в главном конфигурационном файле slapd.conf, поэтому здесь эти данные можно не указывать

Создание базы данных PostgreSQL хранения сущностей LDAP

Прежде всего необходимо определиться со структурой LDAP-дерева. В корне каталогов будет находиться контейнер o=myorg, в котором будут содержаться два контейнера. В первом ou=users,o=myorg будет храниться информация о пользователях, которые будут иметь доступ к серверу каталогов(например, cn=ivan ivanov,ou=users,o=myorg). Во втором ou=myaddressbook,o=myorg будут храниться записи о сотрудниках.

Приступаем к созданию баз данных:

# psql –h 127.0.0.1 -d template1 -U pgsql

Далее создаём пользователя ldap:

template1=# CREATE USER ldap WITH SYSID 100 PASSWORD '123456'

  NOCREATEDB NOCREATEUSER;

Теперь создадим базу данных для данной адресной книги:

template1=# CREATE DATABASE ldap WITH OWNER = ldap ENCODING = 'UNICODE';

В данном случае очень важно использовать кодировку UNICODE, т.к. OpenLDAP будет добавлять данные, содержащие русские символы в юникодной кодировке, а не SQL-ASCII. Использование данной кодировки в базе данных позволит корректно отображать символы на русском при непосредственном доступе к таблицам PostgreSQL. Отсоединяемся и создаем таблицы под новым пользователем ldap к вновь созданной базе ldap:

# psql –h 127.0.0.1 –d ldap –U ldap –p 5432 –W < /usr/local/scripts/main.sql

Данный SQL-скрипт автоматически создаст таблицы для хранения сущностей.

Перезапускаем систему. После авторизации выполняем:

# sockstat -4

На что он должен выдать список всех сервисов, которые слушают на IPv.4, среди которых должны быть PostgreSQL и slapd, что свидетельствует об успешно выполненных настройках.

Установка и настройка PHPLdapAdmin

Доступ к нему осуществляется через сервер Apache. Для нормальной работы phpldapadmin никаких особых настроек PHP не требуется, нужна только поддержка OpenLDAP, поэтому если уже имеется настроенный PHP, то просто добавьте модуль ldap, и этого будет достаточно. Собираем PHPLdapAdmin из портов:

# cd /usr/ports/net/phpldapadmin

# make && make install

Для запуска Apache выполняем:

# apachectl start

Переходим к настройке PHPLdapAdmin:

# cd /usr/local/www/phpldapadmin/config

# mv config.php.example config.php

Для подключения к LDAP-серверу имя пользователя и пароль мы будем вводить в самом интерфейсе. Хост необходимо указать в данном файле.

# mcedit config.php

$ldapservers->SetValue($i,'server','host','192.168.7.1');

В браузере заходим на http://192.168.7.1/phpldapadmin/.

Создание адресной книги

Приступаем к созданию адресной книги. Для авторизации нажимаем «ВХОД». В качестве логина вводим cn=root,o=myorg, в качестве пароля – secret. Для создания главного контейнера выбираем «IMPORT», и далее в текстовом поле «Paste your LDIF here» введите следующее:

dn: o=myorg

objectclass: organization

o: myorg

Переходим к созданию контейнера, содержащего информацию о пользователях, которым разрешено пользоваться сервером каталогов. Выделите контейнер o=myorg и кликните «Создать потомка». В качестве шаблона выберите «Organisational Unit» и введите название контейнера -users. Создадим учётную запись для доступа к серверу каталогов. В контейнере ou=users,o=myorg кликните «Создать потомка» и в качестве шаблона укажите «User Account», и заполните данные. В качестве uid можно вводить порядковый номер пользователя (рис. 1).

Рисунок 1. Пример добавления пользователя

Рисунок 1. Пример добавления пользователя

Создадим контейнер для хранения записей о сотрудниках. Для этого в контейнере o=myorg создайте контейнер ou=address_book по тому же принципу, что и ou=users. Для добавления записей о сотрудниках создайте в контейнере ou=addressbook,o=myorg потомка, указав в качестве шаблона Address Book Entry (mozillaOrgPerson). И далее заполняйте данные на русском (рис. 2). После чего нажмите «proceed» для создания объекта. Вот таким образом добавляются данные. OpenLDAP автоматически размещает их в SQL-таблицах. С помощью интерактивного клиента pgadmin вы можете посмотреть данные в таблицах.

Рисунок 2. Пример добавления данных о сотруднике

Рисунок 2. Пример добавления данных о сотруднике

Настройка Outlook Express на использование адресной книги

Переходим к настройке Outlook Express. Для добавления сервера каталогов в меню «Сервис –> Учётные записи» выбираем «Добавить –> Служба каталогов». В качестве имени укажите 192.168.7.1.

Потом зайдите в свойства и на вкладке «Общие» в поле «Учётная запись» введите «Моя адресная книга». Установите галку «Требуется вход на сервер» в состояние включено.

В качестве учётной записи введите cn=ivan ivanov,ou=users,o=myorg и укажите пароль, который вы вводили при создании данного пользователя.

Переходим на вкладку «Дополнительно» и в поле «Основа поиска» укажите ou=myaddressbook,o=myorg.

Теперь можно выполнять поиск в адресной книге по любым критериям. Кликните кнопку «Адреса», далее «Поиск людей» и введите критерии поиска.

Пример поиска показан на рис. 3.

Рисунок 3. Пример поиска контактной информации сотрудника в адресной книге

Рисунок 3. Пример поиска контактной информации сотрудника в адресной книге

Вот и всё в принципе.

Удачи!


Комментарии
 
  21.03.2008 - 02:59 |  илья

а скажите пожалуйста, а к кому обращаться за файлом /usr/local/scripts/main.sql ?
или хотя бы его краткое содержание... в смысле, что там лежит!

  09.04.2008 - 01:34 |  anonymous

http://www.samag.ru/source/files10-31.zip

  18.06.2008 - 12:34 |  Alex

Сделал все точно по статье.
OU users создался нормально, а при создании пользователя пишет:

LDAP said: Object class violation
Error number: 0x41 (LDAP_OBJECT_CLASS_VIOLATION)
Описание: You tried to perform an operation that would cause an undefined attribute to exist or that would remove a required attribute, given the current list of ObjectClasses. This can also occur if you do not specify a structural objectClass when creating an entry, or if you specify more than one structural objectClass.

В LDAP я особо не силен, подскажите, пожалуйста, как избавиться от этой ошибки.

  18.06.2008 - 01:05 |  Alex

Сделал все точно по статье.
OU users создался нормально, а при создании пользователя пишет:

LDAP said: Object class violation
Error number: 0x41 (LDAP_OBJECT_CLASS_VIOLATION)
Описание: You tried to perform an operation that would cause an undefined attribute to exist or that would remove a required attribute, given the current list of ObjectClasses. This can also occur if you do not specify a structural objectClass when creating an entry, or if you specify more than one structural objectClass.

В LDAP я особо не силен, подскажите, пожалуйста, как избавиться от этой ошибки.

  10.10.2008 - 09:01 |  dorz

Такая же проблема
LDAP said: Object class violation
Error number: 0x41 (LDAP_OBJECT_CLASS_VIOLATION)

  05.11.2008 - 05:24 |  Bumaga

Собрал все с горем пополам. Но не фига не удается подключиться к серверу LDAP через phpldapadmin

Такое ощущение, что не воспринимается имя пользователя и пароль.

В чем может быть причина? Логи все перепроверены сто раз.

  11.11.2008 - 01:14 |  бумаге

а ты имя указываешь в виде cn=user,dc=domain,dc=ru ?

  17.11.2008 - 11:02 |  hidden251

Сделал всё как указано, но не хочет соединяться с указанным именем и паролем через phpldapadmin
имя пользователя:cn=root,o=myorg
пароль: secret
и никуда....

  18.11.2008 - 02:24 |  Hidden251

Сменил версия phpldapadmin теперь заработало..
Но при попытке создания пользователя требуется GID, там выпадающее меню и оно пустое....А без GID запись не создаётся

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-45
E-mail: sa@samag.ru