Создаем адресную книгу на базе 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г.
Просмотров: 6225
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

02.12.2013г.
Просмотров: 3024
Комментарии: 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