一、目錄服務(wù)
目錄是一個為查詢堡赔、瀏覽和搜索而優(yōu)化的專業(yè)分布式數(shù)據(jù)庫侣灶,它呈樹狀結(jié)構(gòu)組織數(shù)據(jù)甸祭,就好象Linux/Unix系統(tǒng)中的文件目錄一樣。目錄數(shù)據(jù)庫和關(guān)系數(shù)據(jù)庫不同褥影,它有優(yōu)異的讀性能池户,但寫性能差,并且沒有事務(wù)處理凡怎、回滾等復(fù)雜功能校焦,不適于存儲修改頻繁的數(shù)據(jù)。所以目錄天生是用來查詢的统倒,就好象它的名字一樣寨典。
目錄服務(wù)是由目錄數(shù)據(jù)庫和一套訪問協(xié)議組成的系統(tǒng)。類似以下的信息適合儲存在目錄中:
企業(yè)員工信息房匆,如姓名凝赛、電話、郵箱等坛缕;
公用證書和安全密鑰瞒滴;
公司的物理設(shè)備信息居暖,如服務(wù)器辜贵,它的IP地址煌恢、存放位置、廠商宠页、購買時間等左胞;
LDAP是輕量目錄訪問協(xié)議(Lightweight Directory Access Protocol)的縮寫寇仓,LDAP是從X.500目錄訪問協(xié)議的基礎(chǔ)上發(fā)展過來的,目前的版本是v3.0烤宙。與LDAP一樣提供類似的目錄服務(wù)軟件還有ApacheDS遍烦、Active Directory、Red Hat Directory Service 躺枕。
二服猪、OpenLDAP 是什么
OpenLDAP 是一款輕量級目錄訪問協(xié)議(Lightweight Directory Access Protocol,LDAP)拐云,屬于開源集中賬號管理架構(gòu)的實(shí)現(xiàn)罢猪,且支持眾多系統(tǒng)版本,被廣大互聯(lián)網(wǎng)公司所采用叉瘩。
LDAP 具有兩個國家標(biāo)準(zhǔn)膳帕,分別是X.500 和LDAP。OpenLDAP 是基于X.500 標(biāo)準(zhǔn)的薇缅,而且去除了X.500 復(fù)雜的功能并且可以根據(jù)自我需求定制額外擴(kuò)展功能危彩,但與X.500 也有不同之處,例如OpenLDAP 支持TCP/IP 協(xié)議等泳桦,目前TCP/IP 是Internet 上訪問互聯(lián)網(wǎng)的協(xié)議汤徽。
OpenLDAP 則直接運(yùn)行在更簡單和更通用的TCP/IP 或其他可靠的傳輸協(xié)議層上,避免了在OSI會話層和表示層的開銷蓬痒,使連接的建立和包的處理更簡單泻骤、更快漆羔,對于互聯(lián)網(wǎng)和企業(yè)網(wǎng)應(yīng)用更理想梧奢。LDAP 提供并實(shí)現(xiàn)目錄服務(wù)的信息服務(wù),目錄服務(wù)是一種特殊的數(shù)據(jù)庫系統(tǒng)演痒,對于數(shù)據(jù)的讀取亲轨、瀏覽、搜索有很好的效果鸟顺。目錄服務(wù)一般用來包含基于屬性的描述性信息并支持精細(xì)復(fù)雜的過濾功能惦蚊,但OpenLDAP 目錄服務(wù)不支持通用數(shù)據(jù)庫的大量更新操作所需要的復(fù)雜的事務(wù)管理或回滾策略等。
OpenLDAP 默認(rèn)以Berkeley DB 作為后端數(shù)據(jù)庫讯嫂,Berkeley DB 數(shù)據(jù)庫主要以散列的數(shù)據(jù)類型進(jìn)行數(shù)據(jù)存儲蹦锋,如以鍵值對的方式進(jìn)行存儲。Berkeley DB 是一類特殊的數(shù)據(jù)庫欧芽,主要用于搜索莉掂、瀏覽、更新查詢操作千扔,一般對于一次寫入數(shù)據(jù)憎妙、多次查詢和搜索有很好的效果库正。Berkeley DB 數(shù)據(jù)庫是面向查詢進(jìn)行優(yōu)化,面向讀取進(jìn)行優(yōu)化的數(shù)據(jù)庫厘唾。Berkeley DB 不支持事務(wù)型數(shù)據(jù)庫(MySQL褥符、MariDB、Oracle 等)所支持的高并發(fā)的吞吐量以及復(fù)雜的事務(wù)操作抚垃。
OpenLDAP 目錄中的信息是按照樹形結(jié)構(gòu)進(jìn)行組織的喷楣,具體信息存儲在條目(entry)中,條目可以看成關(guān)系數(shù)據(jù)庫中的表記錄讯柔,條目是具有區(qū)別名(Distinguished Name抡蛙,DN)的屬性(attribute),DN 是用來引用條目魂迄,DN 相當(dāng)于關(guān)系數(shù)據(jù)庫(Oracle/MySQL)中的主鍵(primary key)粗截,是唯一的。屬性由類型(type)和一個或者多個值(value)組成捣炬,相當(dāng)于關(guān)系數(shù)據(jù)庫中字段的概念熊昌。
三、為什么選擇OpenLDAP 產(chǎn)品
我們知道湿酸,賬號是登錄系統(tǒng)的唯一入口婿屹。要登錄系統(tǒng),首先系統(tǒng)要存在登錄所使用的賬號(/etc/passwd)及密碼信息(/etc/shadow)推溃,然后經(jīng)過系統(tǒng)查找順序(/etc/nsswith.conf)及認(rèn)證模塊(/etc/pam.d/*)驗(yàn)證昂利,得到授權(quán)后方可登錄系統(tǒng)。如果多個用戶登錄系統(tǒng)铁坎,就需要在每個系統(tǒng)上創(chuàng)建用戶名和密碼蜂奸;否則,就無法登錄系統(tǒng)硬萍。
對于賬號管理人員而言扩所,維護(hù)10 臺、100 臺機(jī)器的賬號朴乖,或許勉強(qiáng)可以維護(hù)祖屏、管理。如果機(jī)器數(shù)量達(dá)到1000 以上時买羞,對于賬號的創(chuàng)建袁勺、回收、權(quán)限的分配畜普、密碼策略期丰、賬號安全審計等一系列操作,賬號管理人員就心有余而力不足了。此時OpenLDAP 賬號集中管理軟件就應(yīng)用而生咐汞,它可以實(shí)現(xiàn)賬號集中維護(hù)盖呼、管理,只需要將被管理的機(jī)器加入到服務(wù)器端即可化撕,此后所有與賬號相關(guān)的策略均在服務(wù)端實(shí)現(xiàn)几晤,從而解決了運(yùn)維案例所產(chǎn)生的眾多管理問題。
關(guān)于賬號的添加植阴、刪除蟹瘾、修改、權(quán)限的賦予等一系列操作只需要在服務(wù)端操作即可掠手,無須在客戶端機(jī)器進(jìn)行單獨(dú)操作憾朴。客戶端賬號及密碼均通過OpenLDAP 服務(wù)器進(jìn)行驗(yàn)證喷鸽,從而實(shí)現(xiàn)賬號集中認(rèn)證管理众雷,此時賬號管理員只須維護(hù)OpenLDAP 服務(wù)器條目即可。
OpenLDAP 屬于開源軟件做祝,且OpenLDAP 支持LDAP 最新標(biāo)準(zhǔn)砾省、更多模塊擴(kuò)展功能、自定義schema 滿足需求混槐、權(quán)限管理编兄、密碼策略及審計管理、主機(jī)控制策略管理声登、第三方應(yīng)用平臺管理以及與第三方開源軟件結(jié)合實(shí)現(xiàn)高可用負(fù)載均衡平臺等諸多功能狠鸳,這也是商業(yè)化管理軟件無可比擬的。所以關(guān)于賬號的管理OpenLDAP 是企業(yè)唯一的選擇悯嗓。目前各大著名公司都在使用OpenLDAP實(shí)現(xiàn)賬號的集中管理件舵,如PPTv、金山绅作、Google芦圾、Facebook 等蛾派,這也是選擇OpenLDAP 實(shí)現(xiàn)賬號統(tǒng)一管理的原因之一俄认。
四、OpenLDAP 目錄服務(wù)優(yōu)點(diǎn)
OpenLDAP 目錄服務(wù)有以下10 個優(yōu)點(diǎn)洪乍。
OpenLDAP 是一個跨平臺的標(biāo)準(zhǔn)互聯(lián)網(wǎng)協(xié)議眯杏,它基于X.500 標(biāo)準(zhǔn)協(xié)議。
OpenLDAP 提供靜態(tài)數(shù)據(jù)查詢搜索壳澳,不需要像在關(guān)系數(shù)據(jù)中那樣通過SQL 語句維護(hù)數(shù)據(jù)庫信息岂贩。
OpenLDAP 基于推和拉的機(jī)制實(shí)現(xiàn)節(jié)點(diǎn)間數(shù)據(jù)同步,簡稱復(fù)制(replication)并提供基于TLS巷波、SASL 的安全認(rèn)證機(jī)制萎津,實(shí)現(xiàn)數(shù)據(jù)加密傳輸以及Kerberos 密碼驗(yàn)證功能卸伞。
OpenLDAP 可以基于第三方開源軟件實(shí)現(xiàn)負(fù)載(LVS、HAProxy)及高可用性解決方案锉屈,24 小時提供驗(yàn)證服務(wù)荤傲,如Headbeat、Corosync颈渊、Keepalived 等遂黍。
OpenLDAP 數(shù)據(jù)元素使用簡單的文本字符串(簡稱LDIF 文件)而非一些特殊字符,便于維護(hù)管理目錄樹條目俊嗽。 章
OpenLDAP 可以實(shí)現(xiàn)用戶的集中認(rèn)證管理雾家,所有關(guān)于賬號的變更,只須在OpenLDAP 服務(wù)器端直接操作绍豁,無須到每臺客戶端進(jìn)行操作芯咧,影響范圍為全局。
OpenLDAP 默認(rèn)使用協(xié)議簡單如支持TCP/ZP 協(xié)議傳輸條目數(shù)據(jù)竹揍,通過使用查找操作實(shí)現(xiàn)對目錄樹條目信息的讀寫操作唬党,同樣可以通過加密的方式進(jìn)行獲取目錄樹條目信息。
OpenLDAP 產(chǎn)品應(yīng)用于各大應(yīng)用平臺(Nginx鬼佣、HTTP驶拱、vsftpd、Samba晶衷、SVN蓝纲、Postfix、OpenStack晌纫、Hadoop 等)税迷、服務(wù)器(HP、IBM锹漱、Dell 等)以及存儲(EMC箭养、NetApp 等)控制臺,負(fù)責(zé)管理賬號驗(yàn)證功能哥牍,實(shí)現(xiàn)賬號統(tǒng)一管理毕泌。
OpenLDAP 實(shí)現(xiàn)具有費(fèi)用低、配置簡單嗅辣、功能強(qiáng)大撼泛、管理容易及開源的特點(diǎn)。
OpenLDAP 通過ACL(Access Control List)靈活控制用戶訪問數(shù)據(jù)的權(quán)限澡谭,從而保證數(shù)據(jù)的安全性愿题。
五、OpenLDAP 功能
在LDAP 的功能模型中定義了一系列利用LDAP 協(xié)議的操作,主要包含以下4 部分潘酗。
查詢操作(ldapsearch):允許查詢目錄并取得條目杆兵,其查詢性能比關(guān)系數(shù)據(jù)庫好。
更新操作(ldapupdate):目錄樹條目支持條目的添加仔夺、刪除拧咳、修改等操作。
同步操作:OpenLDAP 是一種典型的分布式結(jié)構(gòu)囚灼,提供復(fù)制同步骆膝,可將主服務(wù)器上的數(shù)據(jù)通過推或拉的機(jī)制實(shí)現(xiàn)在從服務(wù)器上更新,完成數(shù)據(jù)的同步灶体,從而避免OpenLDAP 服務(wù)器出現(xiàn)單點(diǎn)故障阅签,影響用戶驗(yàn)證。
認(rèn)證和管理操作:允許客戶端在目錄中識別自己蝎抽,并且能夠控制一個會話的性質(zhì)政钟。
六、OpenLDAP 目錄架構(gòu)介紹
目前OpenLDAP 目錄架構(gòu)分為兩種:一種為互聯(lián)網(wǎng)命名組織架構(gòu)樟结;另一種為企業(yè)級命名組織架構(gòu)养交。本節(jié)分別為介紹兩種架構(gòu)的用途,但本書主要以企業(yè)級命名組織架構(gòu)為核心進(jìn)行闡述OpenLDAP 內(nèi)部邏輯結(jié)構(gòu)瓢宦、工作原理以及企業(yè)實(shí)踐等相關(guān)知識碎连。
1、互聯(lián)網(wǎng)命名組織架構(gòu)
LDAP 的目錄信息是以樹形結(jié)構(gòu)進(jìn)行存儲的驮履,在樹根一般定義國家(c=CN)或者域名(dc=com)鱼辙,其次往往定義一個或多個組織(organization,o)或組織單元(organization unit玫镐,ou)倒戏。一個組織單元可以包含員工、設(shè)備信息(計算機(jī)/打印機(jī)等)相關(guān)信息恐似。例如uid=babs杜跷,ou=People,dc=example矫夷,dc=com葛闷。
備注:圖片來源http://www.openldap.org/doc/admin24/intro.html#What is LDAP
2、企業(yè)級命名組織架構(gòu)
企業(yè)級命名(傳統(tǒng)命名)組織架構(gòu)的示例
七口四、OpenLDAP schema 概念
1孵运、schema 介紹及用途
schema 是OpenLDAP 軟件的重要組成部分秦陋,主要用于控制目錄樹中各種條目所擁有的對象類以及各種屬性的定義蔓彩,并通過自身內(nèi)部規(guī)范機(jī)制限定目錄樹條目所遵循的邏輯結(jié)構(gòu)以及定義規(guī)范,保證整個目錄樹沒有非法條目數(shù)據(jù),避免不合法的條目存在目錄樹中赤嚼,從而保障整個目錄樹信息的完整性旷赖、唯一性。
在OpenLDAP 目錄樹中更卒,schema 用來指定一個條目所包含的對象類(objectClass)以及每一個對象類所包含的屬性值(attribute value)等孵。其屬性又分為必要屬性和可選屬性兩種,一般必要屬性是指添加條目時必須指定的屬性蹂空,可選屬性是可以選擇或不???擇的俯萌。schema 定義對象類,對象類包含屬性的定義上枕,對象類和屬性組合成條目咐熙。
目錄樹中條目可理解為是一個具體的對象,它們均是通過schema 創(chuàng)建的辨萍,并符合schema 的標(biāo)準(zhǔn)規(guī)范棋恼,如對你所添加的數(shù)據(jù)條目中所包含的對象類級屬性進(jìn)行檢測,檢測通過完成添加锈玉,否則打印錯誤信息爪飘。因此,schema 是一個數(shù)據(jù)模型拉背,數(shù)據(jù)模型可以理解為關(guān)系數(shù)據(jù)庫的存儲引擎师崎,如MyISAM、InnoDB椅棺,主要用來決定數(shù)據(jù)按照什么方式進(jìn)行存儲抡诞,并定義存儲在目錄樹不同條目中數(shù)據(jù)類型之間的關(guān)系。
schema 是一個標(biāo)準(zhǔn)土陪,定義了OpenLDAP 目錄樹對象和屬性存取方式昼汗,這也是OpenLDAP 能夠存儲什么數(shù)據(jù)類型的取決因素。因此數(shù)據(jù)有什么屬性等均根據(jù)schema 來實(shí)現(xiàn)鬼雀。OpenLDAP 默認(rèn)的schema 文件一般存放在/etc/openldap/schema/目錄下顷窒,此目錄下每個文件定義了不同的對象類和屬性。如果想引用額外的schema源哩,只需要在配置文件中通過include 包含所指定的schema 即可鞋吉。
以下代碼可用于獲取當(dāng)前系統(tǒng)OpenLDAP 所使用的schema 規(guī)范,了解當(dāng)前所使用的schema文件励烦,這有助于添加目錄樹中的條目信息谓着,如對象類以及包含哪些屬性及值,減少添加條目提示的各種語法錯誤坛掠。
[root@test schema]# cat /etc/openldap/slapd.conf | grep '^incl*'
include /etc/openldap/schema/corba.schema
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/duaconf.schema
include /etc/openldap/schema/dyngroup.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/java.schema
include /etc/openldap/schema/misc.schema
include /etc/openldap/schema/nis.schema #定義網(wǎng)絡(luò)信息服務(wù)
include /etc/openldap/schema/openldap.schema
include /etc/openldap/schema/ppolicy.schema #定義用戶密碼規(guī)則
include /etc/openldap/schema/collective.schema
include /etc/openldap/schema/sudo.schema #自己添加提權(quán)的
include /etc/openldap/schema/openssh-lpk-openldap.schema
2赊锚、獲取schema 的途徑
默認(rèn)安裝OpenLDAP 組件后治筒,系統(tǒng)的配置定義一組常用的schema 文件,這組文件一般存放在/etc/openldap/schema 目錄內(nèi)舷蒲,可通過include 引用耸袜。當(dāng)所定義的objectClass 不存在時,該如何獲取objectClass牲平?下面就介紹如何獲取schema 來包含objectClass堤框。
通過服務(wù)器自身軟件包的安裝來生成schema 文件,本節(jié)以sudo 為例演示其過程纵柿。
查看軟件包生成的文件列表
[root@test ~]# rpm -ql sudo|grep schema
/usr/share/doc/sudo-1.8.6p3/schema.ActiveDirectory
/usr/share/doc/sudo-1.8.6p3/schema.OpenLDAP
/usr/share/doc/sudo-1.8.6p3/schema.iPlanet
通過配置文件引入schema
cp /usr/share/doc/sudo-1.8.6p3/schema.OpenLDAP /etc/openldap/schema/sudo.schema
echo "include /etc/openldap/schema/sudo.schema" > /etc/openldap/slapd.conf
通過schema 產(chǎn)生ldif 文件
slapcat -f ~/sudo/sudoSchema.conf -F /tmp/ -n0 -s "cn={0}sudo,cn=schema,cn=config" > ~/sudo/sudo.ldif
sed -i "s/{0}sudo/{12}sudo/g" ~/sudo/sudo.ldif
head -n-8 ~/sudo/sudo.ldif > ~/sudo/sudo-config.ldif
通過OpenLDAP 指令導(dǎo)入目錄樹
ldapadd -Y EXTERNAL -H ldapi:/// -f ~/sudo/sudo-config.ldif
此時就可以通過sudo schema 文件定義各種sudo 規(guī)則從而實(shí)現(xiàn)用戶權(quán)限的控制蜈抓。
八、objectClass 詳解
在OpenLDAP 目錄樹中昂儒,每個條目必須包含一個屬于自身?xiàng)l件的對象類资昧,然后再定義其條目屬性及對應(yīng)的值。
OpenLDAP 條目的屬性能否添加取決于條目所繼承的objectClass 是否包含此屬性荆忍。objectClass具有繼承關(guān)系格带,也就是說,條目添加的屬性最終取決于自身所繼承的所有objectClass 的集合刹枉。如果所添加的屬性不在objectClass 范圍內(nèi)叽唱,此時目錄服務(wù)器不允許添加此屬性。如果要添加微宝,就必須添加schema 文件產(chǎn)生objectClass 所對應(yīng)的屬性棺亭。objectClass 和Attribute 由schema 文件來規(guī)定,存放在/etc/openldap/schema 目錄下蟋软,schema 文件規(guī)范objectClass 的構(gòu)成以及屬性和值在目錄樹中的對應(yīng)關(guān)系镶摘。后面章節(jié)會介紹如何通過定義schema 文件來產(chǎn)生objectClass,從而生成所需要的屬性岳守。
每一個屬性和值將用作每個條目在目錄樹中存儲信息的標(biāo)準(zhǔn)凄敢,例如能包含哪些屬性信息。對于objectClass 的理解湿痢,讀者可以將objectClass 的屬性值理解為一種模板涝缝。模板定義哪些信息可以存取,哪些信息不可以存儲在目錄樹中譬重。
1拒逮、objectClass 案例分析
下面給出兩個對象類案例分析示例。
objectClass 案例分析示例1
所有的objectClass 定義都存放在/etc/openldap/schema/*.schema 文件中臀规。例如滩援,person 屬性的定義就存放在core.schema 文件中。
objectclass ( 2.5.6.6 NAME 'person'
DESC 'RFC2256: a person'
SUP top STRUCTURAL
MUST ( sn $ cn ) M
AY ( userPassword $ telephoneNumber $ seeAlso $ description ) )
分析:
如果要定義person 類型塔嬉,需要定義頂級為top玩徊,并且必須定義sn 和cn 兩個屬性租悄,還可以附加userPassword、telephoneNumber佣赖、seeAlso恰矩、description 4 個屬性值记盒。郵件地址憎蛤、國家等屬性不可以定義,除非讀者添加相關(guān)的objectClass 條目纪吮,否則提示相關(guān)屬性不允許添加俩檬。
objectClass 案例分析示例2
objectclass: (2.5.6.0 NAME 'top'
ABSTRACT
MUST (objectClass))
objectclass: ( 2.5.6.6 NAME 'person'
SUP top STRUCTURAL
MUST (sn $ cn )
MAY (userPassword $ telephoneNumber $
seeAlso $ description ))
分析:
對于此案例,如果要定義top 屬性碾盟,必須定義一個objectClass 屬性棚辽。因?yàn)榇税咐羞€定義了person 屬性,所以要必須定義sn 和cn 屬性冰肴,以及可以附加的屬性(userPassword屈藐、telephoneNumber、seeAlso熙尉、description)联逻。此案例中必須要定義的有3 個屬性分別是objectClass、sn 以及cn检痰。通過此案例下一級的objectClass 可以繼承上一級objectClass 的屬性信息包归。
2、屬性概述
屬性(Attribute)在目錄樹中主要用于描述條目相關(guān)信息铅歼,例如用戶條目的用途公壤、聯(lián)系方式、郵件椎椰、uid厦幅、gid、公司地址等輔助信息慨飘。屬性由objectClass 所控制慨削,一個objectClass 的節(jié)點(diǎn)具有一系列Attribute,Attribute 可以理解為Linux 系統(tǒng)當(dāng)中的變量套媚,每個變量都有對應(yīng)的值缚态,OpenLDAPAttribute 也是有對應(yīng)的值。這些屬性的對應(yīng)值表示每個對象的特點(diǎn)堤瘤,但有些屬性在添加時是必須指定的玫芦,有些屬性是非必要的(類似于條目更詳細(xì)的描述)。在目錄樹中常用的Attribute 有uid本辐、sn桥帆、giveName医增、I、objectClass老虫、dc叶骨、ou、cn祈匙、mail忽刽、telephoneNumber、c 等夺欲。
屬性(Attribute)類似于程序設(shè)計中的變量跪帝,可以被賦值。在OpenLDAP中聲明了許多常用的Attribute(用戶也可自己定義Attribute)些阅。常見的Attribute含義如下:
c:國家伞剑。
cn:common name,指一個對象的名字市埋。如果指人黎泣,需要使用其全名。
dc:domain Component缤谎,常用來指一個域名的一部分抒倚。
givenName:指一個人的名字,不能用來指姓弓千。
l:指一個地名衡便,如一個城市或者其他地理區(qū)域的名字。
mail:電子信箱地址洋访。
o:organizationName镣陕,指一個組織的名字。
ou:organizationalUnitName姻政,指一個組織單元的名字呆抑。
sn:surname,指一個人的姓汁展。
telephoneNumber:電話號碼鹊碍,應(yīng)該帶有所在的國家的代碼。
uid:userid食绿,通常指某個用戶的登錄名侈咕,與Linux系統(tǒng)中用戶的uid不同。
九器紧、LDIF 詳解
1耀销、LDIF 用途
LDIF(LDAP Data Interchanged Format)的輕量級目錄訪問協(xié)議數(shù)據(jù)交換格式的簡稱,是存儲LDAP 配置信息及目錄內(nèi)容的標(biāo)準(zhǔn)文本文件格式铲汪,之所以使用文本文件來存儲這些信息是為了方便讀取和修改熊尉,這也是其他大多數(shù)服務(wù)配置文件所采取的格式罐柳。通常用來交換數(shù)據(jù)并在OpenLDAP服務(wù)器之間互相交換數(shù)據(jù),并且可以通過LDIF 實(shí)現(xiàn)數(shù)據(jù)文件的導(dǎo)入狰住、導(dǎo)出以及數(shù)據(jù)文件的添加张吉、修改、重命名等操作催植,這些信息需要按照LDAP 中schema 的規(guī)范進(jìn)行操作肮蛹,并會接受schema 的檢查,如果不符合OpenLDAP schema 規(guī)范要求查邢,則會提示相關(guān)語法錯誤蔗崎。
2酵幕、LDIF 文件特點(diǎn)
LDIF 文件每行的結(jié)尾不允許有空格或者制表符扰藕。
LDIF 文件允許相關(guān)屬性可以重復(fù)賦值并使用。
LDIF 文件以.ldif 結(jié)尾命名芳撒。
LDIF 文件中以#號開頭的一行為注釋邓深,可以作為解釋使用。
LDIF 文件所有的賦值方式為:屬性:[空格]屬性值笔刹。
LDIF 文件通過空行來定義一個條目芥备,空格前為一個條目,空格后為另一個條目的開始舌菜。
3萌壳、LDIF 格式語法
LDIF 文件存取OpenLDAP 條目標(biāo)準(zhǔn)格式:
注釋,用于對條目進(jìn)行解釋
dn:條目名稱
objectClass(對象類): 屬性值
objectClass(對象類): 屬性值 ……
LDIF 格式樣例如下:
dn: uid=water,ou=people,dc=wzlinux,dc=com #DN 描述項(xiàng)日月,在整個目錄樹上為唯一的
objectClass: top
objectClass: posixAccount
objectClass: shadowAccount
objectClass: person
objectClass: inetOrgPerson
objectClass: hostObject
sn: Wang
cn: WangZan
telephoneNumber:xxxxxxxxxxx
mail: xxxx@126.com
注:冒號后面有一個空格袱瓮,然后才是屬性的值,schema 規(guī)范定義要求很嚴(yán)格爱咬。