Форум проекта Pro-LDAP.ru
Общие вопросы по LDAP => Схема данных, наборы Schema, объектные классы, атрибуты и другое => Тема начата: d06pbiu от 27 Сентябрь 2012, 21:03:49
-
Всем привет!
Как сделать так чтобы можно было использовать два структурных класса account и person в определении записи?
В инете нагуглил что можно просто в схеме поменять тип класса на вспомогательный - попробовал сделать account - AUXILIARY - вроде работает, но чем это черевато? Какие могут быть плачевные последствия?
Может можно еще как то это реализовать?
-
Здравствуйте! Сами ведь понимаете, что нарушать целостность схемы данных -- не самое удачное решение. Последствий может и не быть, если у Вас отдельностоящий сервер с узкой задачей. Но при репликации на сторонние сервера (или свои с нормальной схемой) проблемы возникнут, да и некоторые приложения могут проверять целостность схемы данных и у Вас будут возникать "непонятные" ошибки. Словом, я бы так не поступал =).
Варианты реализации зависят от задачи, которую Ваш каталог решает, точнее от того, какой набор атрибутов в записи нужен. Можно поступить по-разному:
- Общепринятая практика: person (или его потомки) + posixAccount (AUXILIARY), но у второго объектного класса много обязательных атрибутов.
- Если нужен только атрибут uid, можно сделать person + uidObject (AUXILIARY).
- Можно взять класс inetOrgPerson (STRUCTURAL, потомок person) -- там есть все атрибуты из класса account, кроме host. Если атрибут host нужен обязательно, можно добавить к inetOrgPerson еще класс hostObject (AUXILIARY).
- В крайнем случае можно сделать свой объектный класс (или унаследовать от person) с нужным набором атрибутов, но это для гурманов, к тому же все те проблемы, о которых я писал в начале, тоже придётся решать.
Егор
-
Спосибо за оперативность Егор!)
Вообще задача такая: был ldap-сервер с openldap 2.2.1 - использовался для аутентификации, решено перейти на более новую версию (2.4.23); со старого сервера был экспортирован ldif с вот такими классами:
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
objectClass: person
objectClass: inetOrgPerson
objectClass: organizationalPerson
И все атрибуты этих классов использовались ( !особенно атрибут host! ), и кстати, было всего 3 сервера с настроенной репликацией (настраивались не мной --- я смотрел схемы - они не модифицированы - как ldap мог принять такой ldif, интересно?), вот и хотелось бы вносить минимум в ldif перед импортом.
Думаю второй вариант подойдет лучше всего!
Еще раз огромное спасибо!
-
hostObject & device описаны в ldapns.schema. а никто не поделится случаем? а то в комплекте с 2.4.40_2 под freebsd почему то нет. и гугл так же не спасает.
извините за глупую просьбу. все нашел сам. /usr/local/share/pam_ldap/ldapns.schema