Ldap

現有 LDAP 伺服器中的 LDAP Schema 實現

  • October 7, 2014

我有一個使用者定義的模式,將被添加到現有的 LDAP 伺服器中。其 ldif 格式為:

dn: cn=userControl,cn=schema,cn=config
對像類:olcSchemaConfig
cn: 使用者控制項
olcAttributeTypes:(1.3.6.1.4.1.xxxxx.1.1.1
名稱'genderAttr'
DESC“性別”
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
語法 1.3.6.1.4.1.1466.115.121.1.15 )

olcAttributeTypes:(1.3.6.1.4.1.xxxxx.1.1.2
名稱'dobAttr'
DESC '出生日期'
EQUALITY 廣義時間匹配
ORDERING generalizedTimeOrderingMatch
語法 1.3.6.1.4.1.1466.115.121.1.24)

olcAttributeTypes:(1.3.6.1.4.1.xxxxx.1.1.3
名稱'languageAttr'
DESC '已知語言'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
語法 1.3.6.1.4.1.1466.115.121.1.15
單值)

olcAttributeTypes:(1.3.6.1.4.1.xxxxx.1.1.4
名稱'mTongueAttr'
DESC '母語'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
語法 1.3.6.1.4.1.1466.115.121.1.15
單值)


olcAttributeTypes:(1.3.6.1.4.1.xxxxx.1.1.5
NAME'nationalityAttr
DESC“國籍”
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
語法 1.3.6.1.4.1.1466.115.121.1.15 )

olcAttributeTypes:(1.3.6.1.4.1.xxxxx.1.1.6
名稱'worksAtAttr'
DESC 'worksAt'
語法 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 '資格'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
語法 1.3.6.1.4.1.1466.115.121.1.15 )

olcAttributeTypes:(1.3.6.1.4.1.xxxxx.1.1.8
名稱'schoolAttr'
DESC“學校”
語法 1.3.6.1.4.1.1466.115.121.1.15 )

olcAttributeTypes:(1.3.6.1.4.1.xxxxx.1.1.9
名稱'collegeAttr'
DESC '大學'
語法 1.3.6.1.4.1.1466.115.121.1.15 )


olcAttributeTypes:(1.3.6.1.4.1.xxxxx.1.1.10
名稱'addressAttr'
DESC '地址'
語法 1.3.6.1.4.1.1466.115.121.1.15 )


olcAttributeTypes:(1.3.6.1.4.1.xxxxx.1.1.11
名稱'zipAttr'
DESC '密​​碼'
語法 1.3.6.1.4.1.1466.115.121.1.27 )

對像類(1.3.6.1.4.1.xxxxx.1.2.1
名稱'使用者控制'
DESC 'RFC2798:新的自定義架構'
SUP 組織人
結構
可能 (
性別 $ dateOfBirth $ 語言已知 $ momTongue $ 國籍 $ 工作地點 $ 資格 $ 學校 $ 大學 $ 地址 $ pinCode $ contactNumber $ InterestIn)
)

.schema 格式是

# userControl.schema
屬性類型(1.3.6.1.4.1.xxxxx.1.1.1
名稱'genderAttr'
DESC“性別”
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
語法 1.3.6.1.4.1.1466.115.121.1.15 )

屬性類型(1.3.6.1.4.1.xxxxx.1.1.2
名稱'dobAttr'
DESC '出生日期'
EQUALITY 廣義時間匹配
ORDERING generalizedTimeOrderingMatch
語法 1.3.6.1.4.1.1466.115.121.1.24)

屬性類型(1.3.6.1.4.1.xxxxx.1.1.3
名稱'languageAttr'
DESC '已知語言'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
語法 1.3.6.1.4.1.1466.115.121.1.15
單值)

屬性類型(1.3.6.1.4.1.xxxxx.1.1.4
名稱'mTongueAttr'
DESC '母語'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
語法 1.3.6.1.4.1.1466.115.121.1.15
單值)


屬性類型(1.3.6.1.4.1.xxxxx.1.1.5
NAME'nationalityAttr
DESC“國籍”
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
語法 1.3.6.1.4.1.1466.115.121.1.15 )

屬性類型(1.3.6.1.4.1.xxxxx.1.1.6
名稱'worksAtAttr'
DESC 'worksAt'
語法 1.3.6.1.4.1.1466.115.121.1.15 )

屬性類型(1.3.6.1.4.1.xxxxx.1.1.7
NAME 'qualificationAttr'
DESC '資格'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
語法 1.3.6.1.4.1.1466.115.121.1.15 )

屬性類型(1.3.6.1.4.1.xxxxx.1.1.8
名稱'schoolAttr'
DESC“學校”
語法 1.3.6.1.4.1.1466.115.121.1.15 )

屬性類型(1.3.6.1.4.1.xxxxx.1.1.9
名稱'collegeAttr'
DESC '大學'
語法 1.3.6.1.4.1.1466.115.121.1.15 )


屬性類型(1.3.6.1.4.1.xxxxx.1.1.10
名稱'addressAttr'
DESC '地址'
語法 1.3.6.1.4.1.1466.115.121.1.15 )


屬性類型(1.3.6.1.4.1.xxxxx.1.1.11
名稱'zipAttr'
DESC '密​​碼'
語法 1.3.6.1.4.1.1466.115.121.1.27 )

對像類(1.3.6.1.4.1.xxxxx.1.2.1
名稱'使用者控制'
DESC 'RFC2798:新的自定義架構'
SUP 組織人
結構
可能 (
性別 $ dateOfBirth $ 語言已知 $ momTongue $ 國籍 $ 工作地點 $ 資格 $ 學校 $ 大學 $ 地址 $ pinCode $ contactNumber $ InterestIn)
)

我嘗試使用程式碼將 ldif 文件添加到 LDAP

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

但我收到一個錯誤

ldapadd:無效格式(第 5 行)條目:“cn=userControl,cn=schema,cn=config”

我已經檢查了解決方案並應用了它,但是沒有用。我仍然遇到錯誤。我已經將我的架構與其他架構和 ldif 文件與其他 ldif 文件進行了比較,我找不到任何錯誤。任何人都請幫我解決這個問題。

我的作業系統是 Ubuntu 12.04 LTS。有沒有必要補充

# 全域配置設置
dn:cn=配置
對像類:olcGlobal
cn: 配置

在 ldif 文件中。我試過了。但後來我也遇到了同樣的錯誤。

坦率地說,您的整個架構是一團糟。

  • 要在您的架構中定義 an objectClass,您需要olcObjectClasses:一行,:最後是 the。
  • 屬性列表必須是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)
   )

引用自:https://serverfault.com/questions/633492