openldap schema
什么是schema
在openldap的目錄樹中,schema用來指定一個條目所包含的對象類(objectClass)以及每個對象類所包含的屬性值(attribute),其中屬性值又包含必要屬性和可選屬性。
schema是一個數據模型,定義對象類,對象類包含屬性的定義,對象類和屬性組合成條目,在添加數據條目時,會檢查是否符合對象類(objectClass)及屬性,通過則添加成功,否則打印錯誤信息。
如何理解schema
不管是在學習OpenLDAP時還是學習數據庫時,都會遇到一個很迷糊的Schema的概念。
在數據庫中,對數據庫的設計可以稱之為schema。即schema約束了數據庫的設計結構,并提供了整個數據庫的描述。schema僅展示數據庫的設計,如表字段的類型,表與表之間的關聯。
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-CRWnj0Wj-1634640367316)(…/…/images/schema/image-20210226195759348.png)]
在ldap中schema與database中的schema一樣,如列出的schema中,這些代表了對應的ldap結構的設計。
what-is-a-schema
schema overview
olcObjectClasses: ( 0.9.2342.19200300.100.4.19 NAME 'simpleSecurityObject'DESC 'RFC1274: simple security object'SUP top AUXILIARYMUST userPassword ) # 必須包含的屬性 # # RFC 1274 + RFC 2247 olcAttributeTypes: ( 0.9.2342.19200300.100.1.25NAME ( 'dc' 'domainComponent' ) # 表示屬性名稱DESC 'RFC1274/2247: domain component'EQUALITY caseIgnoreIA5Match # 相等性匹配SUBSTR caseIgnoreIA5SubstringsMatch # 字符串匹配SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) # 表示數據類型schema包含什么
在openldap的schema中,有四個重要的元素:
Objectclass
Objectclass定義了一個類別,這個類別會被不同的目錄(在LDAP中就是一個Entry)用到,它說明了該目錄應該有哪些屬性,哪些屬性是必須的,哪些又是可選的。一個objectclass的定義包括名稱(NAME),說明(DESC),類型(STRUCTURAL或AUXILARY),表示是結構型的還是輔助型的),必須屬性(MUST),可選屬性(MAY)等信息。
Attribute
Attribute就是一個上面Objectclass中可能包含的屬性,對其的定義包括名稱,數據類型,單值還是多值以及匹配規則等。后面用具體的例子來說明。
Syntax
syntax是LDAP中的“語法”,其實就是LDAP中會用到的數據類型和數據約束,這個語法是遵從X.500中數據約束的定義的。其定義需要有一個ID(遵從X.500)以及說明(DESP)
Matching Rules
是用來指定某屬性的匹配規則,實際上就是定義一個特殊的Syntax的別名,讓LDAP服務器可以識別,并對定義的屬性進行匹配。
Schema Files
OpenLDAP隨附了一些schema,在/usr/local/etc/openldap/ chema目錄中
| core.schema | OpenLDAP core (required) |
| cosine.schema | Cosine 和 Internet X.500 |
| inetorgperson.schema | 在添加賬號時,額外的objectClass. |
| misc.schema | |
| nis.schema | 網絡信息服務(FYI),也是一種集中賬號管理實現. |
| openldap.schema | OpenLDAP Project(experimental) |
| dyngroup.schema | 定義組時使用的schema,包括要使用sudo.schema時,也需要它 |
| ppolicy.schema | 需要做密碼策略時,需要導入此schema |
| sudo.schema | 定義sudo規則 |
總結
以上是生活随笔為你收集整理的openldap schema的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mondrian mysql 实例,wi
- 下一篇: C ++ 编程思想(卷二) 笔记