как изменить схему в openldap

Вопрос или проблема

Итак, у меня свежая установка openldap на машине с debian 9, которая в данный момент выглядит так:

this

Это будет база данных для телефонных номеров, чтобы было проще, я использую этот пример: база данных будет разделена на город – улицы – и людей, которые живут на этих улицах.

Это будет выглядеть так: dc=город -> ou=улица -> cn=имя_человека

Пока все хорошо, я пытаюсь создать первый dc, например, Нью-Йорк так:

root@ldap-test:/etc/ldap/ldif-import# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/ldif-import/createcn.ldif
Аутентификация SASL/EXTERNAL начата
Имя пользователя SASL: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SSF SASL: 0
Добавление новой записи "cn=NewYork"
ldap_add: Сервер не желает выполнять (53)
        дополнительная информация: нет глобального супервизора

А вот как выглядит ldif файл:

dn: cn=NewYork
dc: NewYork
distinguishedName: dc=NewYork
name: NewYork
objectClass: top
objectClass: dcObject

Так как это не сработало, я подумал о другом способе, чтобы поместить улицы в nodomain, просто чтобы проверить, будет ли это работать таким образом, но, похоже, что схема не имеет
distinguishedName и name. Я посмотрел в стандартные схемы и core.ldif имеет эти записи, но они закомментированы.

Поэтому я не могу загрузить этот ldif:

dn: ou=broadway,dc=nodomain
distinguishedName: ou=broadway,dc=nodomain
name: broadway
objectClass: top
objectClass: organizationalUnit
ou: broadway

.

root@ldap-test:/etc/ldap/ldif-import# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/ldif-import/broadway.ldif
Аутентификация SASL/EXTERNAL начата
Имя пользователя SASL: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SSF SASL: 0
Добавление новой записи "ou=broadway,dc=nodomain"
ldap_add: Нарушение класса объекта (65)
        дополнительная информация: атрибут 'distinguishedName' не разрешен

Итак, загрузка distinguishedName в схему, но она показывает добавление новой записи

"cn=core,cn=schema,cn=config"
ldap_add: Другая ошибка (например, специфичная для реализации) (80)
        дополнительная информация: olcAttributeTypes: Дублирующийся attributeType: "2.5.4.49"

Я не понимаю, почему, потому что он даже не загружен в /etc/ldap/slapd.d/cn=config/cn=schema/cn={*}*.ldif

Кто-нибудь знает, что делать?

  • name не является общепринятым атрибутом, хотя cn (commonName) является.
  • Не пытайтесь добавлять distinguishedName. dn уже это обрабатывает. dn и distinguishedName являются псевдонимами для одного и того же атрибута, но только dn следует использовать для операций ldapmodify. Это включает ldapadd.

Ваш первый ldif не удается, потому что:

  1. Ваш сервер ldap не настроен для обработки cn=NewYork namingContext.
  2. Вы пытаетесь добавить атрибут distinguishedName.
  3. objectClass: dcObject не имеет атрибута name

Ваш второй ldif не удается, потому что:

  1. Вы пытаетесь добавить атрибут distinguishedName.
  2. objectClass: organizationalUnit не имеет атрибута name

Краткая заметка: атрибуты ldap, включая части, используемые в rdn, могут содержать пробелы. Используйте кавычки по мере необходимости.

Ответ или решение

Чтобы модифицировать схему в OpenLDAP на Debian 9, нужно учитывать особенности работы LDAP и схему, в которой определяются типы атрибутов и классы объектов. На основе предоставленной информации, мы рассмотрим основные шаги для решения поставленных задач, включая создание записей и модификацию схемы.

Шаг 1: Понимание архитектуры OpenLDAP

Ваша структура LDAP предназначена для хранения телефонных номеров, разбитая на город (dc=city), улицы (ou=street) и людей (cn=name). Стоит отметить, что все записи в LDAP имеют свой Distinguished Name (DN), который указывает путь к объекту в иерархии LDAP.

Шаг 2: Создание домена (dc)

Сначала необходимо создать корневой домен. Он должен быть добавлен в формате, поддерживающем схему dcObject. Возможно, ваш DIT (Directory Information Tree) не настроен на поддержку этого уровня иерархии, и именно это может вызывать ошибку "no global superior knowledge".

Создание LDIF файла для города

Создайте файл create_city.ldif:

dn: dc=newyork,dc=nodomain
objectClass: top
objectClass: domain
dc: newyork

Шаг 3: Добавление записи в OpenLDAP

Для добавления домена выполните следующую команду:

ldapadd -Y EXTERNAL -H ldapi:/// -f create_city.ldif

Важно!

Вам необходимо использовать правильные DN. Например, dc=newyork,dc=nodomain вместо cn=NewYork.

Шаг 4: Создание улицы (ou)

После создания домена перейдем к созданию объектов улиц. Создайте файл create_street.ldif для улицы:

dn: ou=broadway,dc=newyork,dc=nodomain
objectClass: top
objectClass: organizationalUnit
ou: broadway

Для добавления записи выполните:

ldapadd -Y EXTERNAL -H ldapi:/// -f create_street.ldif

Шаг 5: Создание записи для человека (cn)

Для создания записи о человеке создайте файл create_person.ldif:

dn: cn=JohnDoe,ou=broadway,dc=newyork,dc=nodomain
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
cn: John Doe
sn: Doe

Затем выполните команду для добавления:

ldapadd -Y EXTERNAL -H ldapi:/// -f create_person.ldif

Шаг 6: Изменение схемы

Если вы хотите добавить нестандартные атрибуты или классы объектов, вам необходимо внести изменения в схему LDAP. Обычно это делается с помощью файлов конфигурации в каталоге slapd.d. Чтобы включить дополнительные атрибуты, необходимо создать файл с определениями атрибутов (например, custom_schema.ldif):

dn: cn=schema,cn=config
changetype: modify
add: olcAttributeTypes
olcAttributeTypes: ( 1.1.1.1 NAME 'myCustomAttribute' DESC 'My Custom Attribute' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )

Добавьте изменения с помощью команды:

ldapmodify -Y EXTERNAL -H ldapi:/// -f custom_schema.ldif

Заключение

В процессе работы с OpenLDAP важно тщательно следить за структурой DN и поддерживать поддержку используемых классов объектов. Для успешного выполнения операций добавления и модификации вам может потребоваться загрузить и настроить специальные схемы, если они отсутствуют по умолчанию. Убедитесь в том, что вы используете правильные атрибуты и классы объектов согласно вашим требованиям.

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

Капча загружается...