Я собираюсь создать каталог LDAP. Он используется как инструмент для передачи разрешений пользователей из веб-приложения для доступа к файловой системе WebDav, например добавление пользователя на веб-платформу позволит войти в файловую систему с теми же учетными данными. Никакого другого использования не предполагается. Следующий этот немецкий учебник который поощряет использование атрибутов c
, o
, ou
и т.д. dc
, Я настроил следующий суффикс и корень:
suffix "ou=webtool,o=myOrg,c=de"
rootdn "cn=ldapadmin,ou=webtool,o=myOrg,c=de"
Сервер запускается, и я могу подключиться к нему Администратор LDAP, который сообщает «Ошибка LDAP: отсутствует объект». Ну, объектов пока нет.
Теперь я хочу создать элементы root и admin из оболочки. Я создал init.ldif
файл:
dn: ou=webtool,o=myOrg,c=de
objectclass: dcObject
objectclass: organization
dc: webtool
o: webtool
dn: cn=ldapadmin,ou=webtool,o=myOrg,c=de
objectclass: organizationalRole
cn: ldapadmin
Попытка загрузить файл приводит к ошибке, сообщающей мне, что ou
не допускается:
server:~ # ldapadd -x -D "cn=ldapadmin,ou=webtool,o=myOrg,c=de" -W -f init.ldif
Enter LDAP Password:
adding new entry "ou=webtool,o=myOrg,c=de"
ldap_add: Object class violation (65)
additional info: attribute 'ou' not allowed
Я не использую ou
где угодно, кроме суффикса, поэтому вопрос: здесь это не разрешено? какой является разрешено здесь?
Существует множество зависимостей для создания элементов, и сообщения об ошибках могут сбивать с толку, если вы не знакомы с концепцией. В objectclass
не обязательно dcObject
для корневого узла базы данных, как можно догадаться, когда вы прочитаете несколько туториалов. Вместо этого он должен соответствовать типу объекта: здесь для имени, начинающегося с ou=
, Это должно быть organizationalUnit
. Я нашел эту информацию в эти таблицы. Далее, класс объекта определяет, какие свойства должны и могут быть добавлены в запись. Вот, organizationalUnit
должен иметь ou:
вход и не должен иметь ни dc:
ни o:
записи. Таким образом, здоровый init.ldif
файл выглядит так:
dn: ou=webtool,o=myOrg,c=de
objectclass: organizationalUnit
ou: LDAP server for my webtool
dn: cn=ldapadmin,ou=webtool,o=myOrg,c=de
objectclass: organizationalRole
cn: ldapadmin
Примечание. На странице также говорится: «Хотя многие объектные классы не показывают ОБЯЗАТЕЛЬНЫХ атрибутов, вы должны (ой) следовать любой иерархии […], чтобы определить, так ли это на самом деле». Я думал, что это будет означать, что моя корневая запись должна содержать обязательные поля для c=
и o=
(c:
и o:
соответственно), но это не дело.