У меня есть определяемая пользователем схема, которую нужно добавить в существующий сервер 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)
)