Автор Тема: Совмещение класса simpleSecurityObject и атрибута mail  (Прочитано 8916 раз)

manik207

  • Новичок
  • *
  • Сообщений: 12
    • Просмотр профиля
Добрый день, Егор!

Есть сервер openLDAP, на нем такая структура:
dc=ldap,dc=centos
|\ou=Group
   |\cn=redmine
   |\cn=moodle
   |\ ...
|\ou=People
   |\ou=System
      |\uid=redmine
      |\uid=moodle
      |\...
   |\uid=user1
   |\uid=user2
   |\...

Системные юзеры нужны для авторизации указанных сервисов в лдапе.
Атрибуты такие:
dn: uid=redmine,ou=System,ou=People,dc=ldap,dc=centos
objectClass: account
objectClass: simpleSecurityObject
objectClass: top
uid: redmine
userPassword:: e0NSWVBUfSQ2JEZldFhWUmJIJE9ghNalBqSE5veVo3TnlZV3BONEJ4UFlSa
 nJJS2RRak5dfsgdf5VT2piM0VZdborkedsha512hashnlQaWlCYWxXcTZYL2YzakdkUC93Q2MyOHlJZWFLMEVxcEVz
 ZzEw

Если этот вариант не верный - поправьте, создавала копипастом. Его задача - подключаться от имени сервиса и читать пароли.

Подключаю еще один сервис к лдапу (phpbb). Сервис требует, чтобы было поле mail у пользователя. И если оставить его пустым - выдает ошибку и не авторизует. Добавляю атрибут mail
dn: uid=redmine,ou=System,ou=People,dc=ldap,dc=centos
changetype: modify
add: objectclass
objectclass: iNetOrgPerson
-
add: mail
mail: moodle@domen.ru

При добавлении лдап ругается, что класс account и inetOrgPerson несовместимы.
ldap_modify: Object class violation (65)
        additional info: invalid structural object class chain (account/inetOrgPerson)

Какой другой объектный класс, совместимый с inetOrgPerson, можно использовать для системного пользователя, чтобы пользователь оставался системным и мог читать пароли (но при этом имел атрибут mail)?

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 486
    • Просмотр профиля
Здравствуйте, Анна!
При добавлении лдап ругается, что класс account и inetOrgPerson несовместимы.
ldap_modify: Object class violation (65)
        additional info: invalid structural object class chain (account/inetOrgPerson)
Вы пытаетесь добавить в запись второй структурный (STRUCTURAL) объектный класс -- это нарушение структуры записи, о чём Вам и говорит slapd.

Какой другой объектный класс, совместимый с inetOrgPerson, можно использовать для системного пользователя, чтобы пользователь оставался системным и мог читать пароли (но при этом имел атрибут mail)?

Вам либо надо пересоздать запись по новой с другим структурным объектным классом (например, inetOrgPerson), либо добавить класс extensibleObject, тогда можно будет использовать любые доступные в схеме данных атрибуты:
dn: uid=redmine,ou=System,ou=People,dc=ldap,dc=centos
changetype: modify
add: objectclass
objectclass: extensibleObject
-
add: mail
mail: moodle@domen.ru

Класс simpleSecurityObject является вспомогательным (AUXILIARY), таких классов в записи может быть сколько угодно.
Кстати, ничего "системного" в записи с классами account и simpleSecurityObject нет -- привилегии даются на уровне ACL, а не объектных классов.

Егор
« Последнее редактирование: 24 Апрель 2017, 22:24:35 от egor »