Назад | Перейти на главную страницу

Реализация схемы LDAP на существующем сервере LDAP

У меня есть определяемая пользователем схема, которую нужно добавить в существующий сервер LDAP. Его формат ldif:

dn: cn=userControl,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: userControl
olcAttributeTypes: ( 1.3.6.1.4.1.xxxxx.1.1.1 
    NAME 'genderAttr'
    DESC 'gender'
    EQUALITY caseIgnoreMatch
    SUBSTR caseIgnoreSubstringsMatch
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )

olcAttributeTypes: ( 1.3.6.1.4.1.xxxxx.1.1.2
    NAME 'dobAttr'
    DESC 'dateOfBirth'
    EQUALITY generalizedTimeMatch
    ORDERING generalizedTimeOrderingMatch
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 )

olcAttributeTypes: (1.3.6.1.4.1.xxxxx.1.1.3
    NAME 'languageAttr'
    DESC 'languages known'
    EQUALITY caseIgnoreMatch
    SUBSTR caseIgnoreSubstringsMatch
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
    SINGLE-VALUE )

olcAttributeTypes: (  1.3.6.1.4.1.xxxxx.1.1.4
    NAME 'mTongueAttr'
    DESC 'motherTongue'
    EQUALITY caseIgnoreMatch
    SUBSTR caseIgnoreSubstringsMatch
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
    SINGLE-VALUE )


olcAttributeTypes: ( 1.3.6.1.4.1.xxxxx.1.1.5
    NAME 'nationalityAttr
    DESC 'nationality'
    EQUALITY caseIgnoreMatch
    SUBSTR caseIgnoreSubstringsMatch
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )

olcAttributeTypes: ( 1.3.6.1.4.1.xxxxx.1.1.6
    NAME 'worksAtAttr'
    DESC 'worksAt'
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )

olcAttributeTypes: ( 1.3.6.1.4.1.xxxxx.1.1.7
    NAME 'qualificationAttr'
    DESC 'qualification'
    EQUALITY caseIgnoreMatch
    SUBSTR caseIgnoreSubstringsMatch
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )

olcAttributeTypes: ( 1.3.6.1.4.1.xxxxx.1.1.8
    NAME 'schoolAttr'
    DESC 'school'
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )

olcAttributeTypes: ( 1.3.6.1.4.1.xxxxx.1.1.9
    NAME 'collegeAttr'
    DESC 'college'
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )


olcAttributeTypes: ( 1.3.6.1.4.1.xxxxx.1.1.10
    NAME 'addressAttr'
    DESC 'address'
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )


olcAttributeTypes: ( 1.3.6.1.4.1.xxxxx.1.1.11
    NAME 'zipAttr'
    DESC 'pinCode'
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )

objectclass ( 1.3.6.1.4.1.xxxxx.1.2.1
    NAME 'userControl'
    DESC 'RFC2798: New Customized Schema'
    SUP organizationalPerson
    STRUCTURAL
    MAY (
        gender $ dateOfBirth $ languagesKnown $ motherTongue $ nationality $ worksAt $ qualification $ school $ college $ address $ pinCode $ contactNumber $ interestedIn )
    )

и формат .schema

# userControl.schema
attributetype ( 1.3.6.1.4.1.xxxxx.1.1.1 
    NAME 'genderAttr'
    DESC 'gender'
    EQUALITY caseIgnoreMatch
    SUBSTR caseIgnoreSubstringsMatch
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )

attributetype ( 1.3.6.1.4.1.xxxxx.1.1.2
    NAME 'dobAttr'
    DESC 'dateOfBirth'
    EQUALITY generalizedTimeMatch
    ORDERING generalizedTimeOrderingMatch
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 )

attributetype (1.3.6.1.4.1.xxxxx.1.1.3
    NAME 'languageAttr'
    DESC 'languages known'
    EQUALITY caseIgnoreMatch
    SUBSTR caseIgnoreSubstringsMatch
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
    SINGLE-VALUE )

attributetype (  1.3.6.1.4.1.xxxxx.1.1.4
    NAME 'mTongueAttr'
    DESC 'motherTongue'
    EQUALITY caseIgnoreMatch
    SUBSTR caseIgnoreSubstringsMatch
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
    SINGLE-VALUE )


attributetype ( 1.3.6.1.4.1.xxxxx.1.1.5
    NAME 'nationalityAttr
    DESC 'nationality'
    EQUALITY caseIgnoreMatch
    SUBSTR caseIgnoreSubstringsMatch
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )

attributetype ( 1.3.6.1.4.1.xxxxx.1.1.6
    NAME 'worksAtAttr'
    DESC 'worksAt'
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )

attributetype ( 1.3.6.1.4.1.xxxxx.1.1.7
    NAME 'qualificationAttr'
    DESC 'qualification'
    EQUALITY caseIgnoreMatch
    SUBSTR caseIgnoreSubstringsMatch
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )

attributetype ( 1.3.6.1.4.1.xxxxx.1.1.8
    NAME 'schoolAttr'
    DESC 'school'
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )

attributetype ( 1.3.6.1.4.1.xxxxx.1.1.9
    NAME 'collegeAttr'
    DESC 'college'
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )


attributetype ( 1.3.6.1.4.1.xxxxx.1.1.10
    NAME 'addressAttr'
    DESC 'address'
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )


attributetype ( 1.3.6.1.4.1.xxxxx.1.1.11
    NAME 'zipAttr'
    DESC 'pinCode'
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )

objectclass ( 1.3.6.1.4.1.xxxxx.1.2.1
    NAME 'userControl'
    DESC 'RFC2798: New Customized Schema'
    SUP organizationalPerson
    STRUCTURAL
    MAY (
        gender $ dateOfBirth $ languagesKnown $ motherTongue $ nationality $ worksAt $ qualification $ school $ college $ address $ pinCode $ contactNumber $ interestedIn )
    )

Я попытался добавить файл ldif в LDAP, используя код

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/userControl.ldif

Но я получаю сообщение об ошибке

ldapadd: invalid format (line 5) entry: "cn=userControl,cn=schema,cn=config"

Я проверил решения и применил их, но все было бесполезно. Я все еще получаю ошибки. Я сравнил свою схему с другой схемой и файл ldif с другими файлами ldif, я не нашел никаких ошибок. Кто-нибудь, пожалуйста, помогите мне решить эту проблему.

Моя ОС - Ubuntu 12.04 LTS. Есть ли необходимость добавлять

# global configuration settings
        dn: cn=config
        objectClass: olcGlobal
        cn: config

в файле ldif. Я пробовал. Но потом я получил ту же ошибку.

Откровенно говоря, вся ваша схема - это беспорядок.

  • Чтобы определить objectClass в вашей схеме вам понадобится olcObjectClasses: линия, с : в конце.
  • Список атрибутов должен быть списком NAME записи, а не DESC, так что это должно быть MAY ( genderAttr $ dobAttr и т.п.
  • NAME 'nationalityAttr пропускает закрытие '
  • Является zipAttr почтовый индекс или PIN-код?
  • contactNumber и interestedIn вообще не определены, но указаны в olcObjectClasses линия.
  • то Attr постфикс после любого атрибута бесполезен. Понятно, что это атрибут, а что еще должно быть?
  • пустые строки между записями недействительны.

Если вы все это исправите, у вас будет что-то вроде файла ниже (все еще отсутствуют контакты и интересы), который легко импортировать (заменить 88888 с вашим личным номером OID).

dn: cn=userControl,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: userControl
olcAttributeTypes: ( 1.3.6.1.4.1.88888.1.1.1 
    NAME 'genderAttr'
    DESC 'gender'
    EQUALITY caseIgnoreMatch
    SUBSTR caseIgnoreSubstringsMatch
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
olcAttributeTypes: ( 1.3.6.1.4.1.88888.1.1.2
    NAME 'dobAttr'
    DESC 'dateOfBirth'
    EQUALITY generalizedTimeMatch
    ORDERING generalizedTimeOrderingMatch
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 )
olcAttributeTypes: (1.3.6.1.4.1.88888.1.1.3
    NAME 'languageAttr'
    DESC 'languages known'
    EQUALITY caseIgnoreMatch
    SUBSTR caseIgnoreSubstringsMatch
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
    SINGLE-VALUE )
olcAttributeTypes: (  1.3.6.1.4.1.88888.1.1.4
    NAME 'mTongueAttr'
    DESC 'motherTongue'
    EQUALITY caseIgnoreMatch
    SUBSTR caseIgnoreSubstringsMatch
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
    SINGLE-VALUE )
olcAttributeTypes: ( 1.3.6.1.4.1.88888.1.1.5
    NAME 'nationalityAttr'
    DESC 'nationality'
    EQUALITY caseIgnoreMatch
    SUBSTR caseIgnoreSubstringsMatch
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
olcAttributeTypes: ( 1.3.6.1.4.1.88888.1.1.6
    NAME 'worksAtAttr'
    DESC 'worksAt'
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
olcAttributeTypes: ( 1.3.6.1.4.1.88888.1.1.7
    NAME 'qualificationAttr'
    DESC 'qualification'
    EQUALITY caseIgnoreMatch
    SUBSTR caseIgnoreSubstringsMatch
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
olcAttributeTypes: ( 1.3.6.1.4.1.88888.1.1.8
    NAME 'schoolAttr'
    DESC 'school'
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
olcAttributeTypes: ( 1.3.6.1.4.1.88888.1.1.9
    NAME 'collegeAttr'
    DESC 'college'
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
olcAttributeTypes: ( 1.3.6.1.4.1.88888.1.1.10
    NAME 'addressAttr'
    DESC 'address'
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
olcAttributeTypes: ( 1.3.6.1.4.1.88888.1.1.11
    NAME 'zipAttr'
    DESC 'pinCode'
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )
olcObjectClasses: ( 1.3.6.1.4.1.88888.1.2.1
    NAME 'userControl'
    DESC 'RFC2798: New Customized Schema'
    SUP organizationalPerson
    STRUCTURAL
    MAY (
        genderAttr $ dobAttr $ languageAttr $ mTongueAttr $ nationalityAttr $ worksAtAttr $ qualificationAttr $ schoolAttr $ collegeAttr $  addressAttr $ zipAttr)
    )