天天看點

ldap

 第14章 目錄伺服器

目錄一般用來包含描述性的、基于屬性的資訊,例如,通訊簿就可使用目錄的形式來儲存。目錄服務是一種特殊的資料庫系統,專門針對資料的讀取、浏覽和搜尋操作進行了特定的優化。目錄伺服器則是提供目錄服務的程式,通常使用LDAP協定提供目錄服務。LDAP(Lightweight Directory Access Protocol,輕量級目錄通路協定)是實作提供目錄服務的網絡協定。

本章将介紹通過OpenLDAP架設目錄伺服器的操作過程,主要包括以下知識點:

了解LDAP協定。

掌握安裝OpenLDAP的方法。

掌握配置OpenLDAP的過程。

掌握向OpenLDAP中添加條目、修改條目、查詢條目的方法。

掌握設定主從OpenLDAP伺服器的方法。

了解OpenLDAP在使用者認證中的應用。

14.1  了解LDAP協定

在進行安裝配置OpenLDAP之前,本節首先對LDAP協定進行簡單的介紹,讓讀者對LDAP的結構有一個認識。

14.1.1  LDAP協定

目錄是一組具有類似屬性、以一定邏輯和層次組合的資訊。常見的例子是通訊簿,由以字母順序排列的名字、位址和電話号碼組成。

目錄服務是一種在分布式環境中發現目标的方法。目錄具有兩個主要組成部分:

第一部分是資料庫,資料庫是分布式的,且擁有一個描述資料的規劃。

第二部分則是通路和處理資料的各種協定。

目錄服務其實也是一種資料庫系統,隻是這種資料庫是一種樹形結構,而不是通常使用的關系資料庫。目錄服務與關系資料庫之間的主要差別在于:二者都允許對存儲資料進行通路,隻是目錄主要用于讀取,其查詢的效率很高,而關系資料庫則是為讀寫而設計的。

提示:目錄服務不适于進行頻繁的更新,屬于典型的分布式結構。

LDAP是一個目錄服務協定,目前存在衆多版本的LDAP,而最常見的則是V2和V3兩個版本,它們分别于1995年和1997年首次釋出。

<b>14.1.2  LDAP</b><b>的基本模型</b>

LDAP的基本模型是建立在"條目"(Entry)的基礎上。一個條目是一個或多個屬性的集合,并且具有一個全局唯一的"可區分名稱"(用dn表示)。與關系型資料(後面簡稱資料庫)進行類比,一個條目相當于資料庫中的一條記錄,而dn相當于資料庫中記錄的關鍵字,屬性相當于資料庫中的字段。

提示:dn必須是全局唯一的。

LDAP中,将資料組織成一個樹形結構,這與現實生活中的很多資料結構可以對應起來,而不像設計關系型資料庫的表,需要進行多種變化。例如,圖14-1所示就是一個樹形結構的資料。

(點選檢視大圖)圖14-1  目錄樹

在圖14-1所示的樹形結構中,樹的根結點是一個組織的域名(wyh.com),其下分為3個部分,分别是managers、people和group,可将這3個組看作組織中的3個部門,如managers用來管理所有管理人員,people用來管理登入系統的使用者,group用來管理系統中的使用者組。當然,在該圖中還可繼續增加其他分支。

對于圖14-1所示的樹形結構,使用關系資料庫來儲存資料的話,需要設定多個表,一層一層分别儲存,當需要查找某個資訊時,再逐層進行查詢,最終得到結果。

若使用目錄來儲存該圖中的資料,則更直覺。圖中每個結點用一個條目來儲存,不同類型的結點需要儲存的資料可能不同,在LDAP中通過一個稱為objectClass的類型來控制不同結點需要的資料(稱為屬性)。

對于目錄中的資料怎樣進行引用呢?前面提到過,每一個條目都有一個dn,因為dn是唯一的,是以就可找到需要結點的資料。dn的構造方式如下:

首先得到條目自己的名稱(rdn,稱為相對dn),然後開始向上逐級查找父結點,一直到根項為止。例如,對于圖14-1中最右下方的結點,其dn為:

1. dn: cn=ldap, ou=group, o=wyh.com 

通過這樣的方式,即可唯一辨別每一個結點。

在現實生活中,有很多這種樹形結構的資料,如計算機檔案系統的目錄結構、Internet中的域名等。這些類型的資料,隻要不需要頻繁的更新,都适合用目錄來儲存。

14.1.3  LDAP的功能

在LDAP的功能模型中定義了一系列利用LDAP協定的操作,主要包含以下4部分:

查詢操作:允許查詢目錄和取得資料,其查詢性能比關系資料庫好。

更新操作:目錄的更新操作沒關系資料庫友善,更新性能較差,但也同樣允許進行添加、删除、修改等操作。

複制操作:前面也提到過,LDAP是一種典型的分布式結構,提供複制操作,可将主伺服器的資料的更新複制到設定的從伺服器中。

認證和管理操作:允許用戶端在目錄中識别自己,并且能夠控制一個會話的性質。

14.1.4  LDAP協定的特點

通過前面的介紹,可總結出LDAP具有以下特點:

LDAP是一種目錄服務,儲存在特殊的資料庫中,資料的讀取速度遠高于寫入速度。

LDAP對查詢做了優化,讀取速度優于普通關系資料庫。

LDAP不支援事務、不能進行復原,需要進行這些操作的應用隻有選擇關系資料庫。

LDAP采用伺服器/用戶端模式,支援分布式結構。

LDAP中的條目以樹形結構組織和存儲。

LDAP基于Internet協定,直接運作在簡單和通用的TCP/IP或其他可靠的傳輸協定層上,使連接配接的建立和包的處理簡單、快捷,對于網際網路和企業網應用都很友善。

LDAP協定簡單,通過使用查找操作實作清單操作和讀操作。

LDAP通過引用機制實作分布式通路,通過用戶端API實作分布式操作(對于應用透明),平衡了負載。

LDAP實作具有低費用、易配置和易管理的特點,并提供了滿足應用程式對目錄服務所需求的特性。

<b>14.2  </b><b>安裝OpenLDAP</b>

在RHEL 5的安裝CD光牒中提供了OpenLDAP 2.3.27軟體包,通過OpenLDAP軟體可實作LDAP服務。OpenLDAP程式包括用戶端、伺服器、開發工具包等軟體包,本節将介紹安裝這些程式包的具體過程。

<b>14.2.1  </b><b>安裝OpenLDAP伺服器程式</b>

可以先通過rpm指令查詢系統中是否已安裝OpenLDAP伺服器程式,若未安裝該伺服器程式,再使用rpm指令從RHELCD光牒中安裝該程式。

【執行個體14-1】從RHEL 5安裝CD光牒中找到OpenLDAP伺服器程式,并安裝到目前系統中。

具體操作步驟如下:

(1)在進行安裝以前,首先使用以下指令建立管理OpenLDAP的使用者群組。

1. # groupadd  ldap  

2. # useradd  -g  ldap ldap  

3. # passwd  ldap 

(2)執行以下指令,查詢系統中是否已安裝openldap-servers程式。

1. # rpm  -qa  openldap-servers 

若無任何輸出,則表示目前系統中未安裝openldap-servers伺服器程式。

(3)使用以下指令将RHEL安裝CD光牒挂載到系統中:

1. # mount  /dev/cdrom  /mnt/cdrom 

(4)執行以下指令安裝openldap-servers程式的依賴程式包libtools-ltdl:

1. #  rpm  -ivh  /mnt/cdrom/Server/libtool-ltdl-1.5.22-6.1.i386.rpm 

若不執行上面的指令,直接執行下一步的安裝指令,将提示有依賴程式未安裝。

(5)執行以下指令安裝openldap-servers程式:

1. #  rpm  -ivh  /mnt/cdrom/Server/openldap-servers-2.3.27-5.i386.rpm 

這樣就将openldap-servers伺服器程式安裝到系統中了。整個安裝過程如圖14-2所示。

(點選檢視大圖)圖14-2  安裝openldap

(6)使用以下指令修改儲存資料的目錄/var/lib/ldap/及其檔案的所有者,并修改權限,隻有ldap使用者才對資料有讀寫權限:

1. #  chown  ldap.ldap  /var/lib/ldap  

2. #  chmod  -R  600  /var/lib/ldap 

在CD光牒中還有以下與openldap有關的軟體包,也可使用類似指令進行安裝,這裡不再逐個介紹。

openldap-clients-2.3.27-5.i386.rpm:用戶端操作的相關程式。

openldap-devel-2.3.27-5.i386.rpm:開發包。

<b>14.2.2  </b><b>測試安裝正确性</b>

安裝完成後,将在/var/lib/目錄中建立一個子目錄ldap來儲存資料,同時在/etc/目錄中也将建立一個子目錄openldap來儲存配置檔案。而openldap的守護程序slapd則儲存在/usr/bin/目錄中。

提示:如果是通過源代碼進行編譯安裝的openldap,這些程式檔案放置的位置可能不同。

<b>1</b><b>.啟動服務程序</b>

要檢查安裝是否正确,可直接運作守護程序,這裡将使用預設的配置。

啟動OpenLDAP伺服器可使用以下指令之一:

1. # server  ldap  start  

2. # /etc/rc.d/init.d/ldap  

3. # /usr/sbin/slapd 

使用第1條指令來啟動ldap服務程序的過程如圖14-3所示。

(點選檢視大圖)圖14-3  啟動服務程式

提示:使用/usr/sbin/slapd指令啟動服務程式是最好的一種方式,如果用前兩條指令啟動openldap服務程式失敗,可使用最後一條指令試一下。

從圖14-3可看出,啟動的是slapd程序,并有一個提示資訊,提示沒有DB_CONFIG檔案。可通過以下指令将DB_CONFIG檔案複制到/var/lib/ldap/目錄中:

1. # cp  /etc/openldap/DB_CONFIG.example  /var/lib/ldap/DB_CONFIG 

另外,由于使用的是預設配置檔案,提示希望使用字尾"dc=my-domain, dc=com"。下節将介紹修改配置檔案的操作。

<b>2</b><b>.檢視監聽端口</b>

OpenLDAP使用的監聽端口是389,通過netstat指令檢視該端口是否處于監聽狀态,可了解slapd程序是否在工作。具體指令如下:

1. # netstat -tnlp | grep 389 

執行結果如圖14-4所示,可以看出,389端口處于監聽狀态,表示slapd程序正在工作。

(點選檢視大圖)圖14-4  檢視監聽端口

<b>3</b><b>.搜尋測試</b>

slapd服務程序啟動後,可使用OpenLDAP用戶端的一個搜尋指令進行一次搜尋,以檢查服務的配置是否正确。

使用以下指令進行搜尋:

1. # ldapsearch -x -b '' -s base '(objectclass=*)' 

注意:-b後面是兩個單引号,用來阻止特殊字元被Shell解析。

由于還未向LDAP伺服器中添加任何資料,是以,系統中應該隻有"根"這個條目,執行以上搜尋的結果如圖14-5所示。

(點選檢視大圖)圖14-5  搜尋測試

從以上測試可看出,OpenLDAP已經正确安裝到系統中,接下來就需要修改配置檔案,設定LDAP的根目錄了。

14.3  配置OpenLDAP

從圖14-5所示的搜尋結果可看出,在配置檔案中是以預設的"dc=my-domain, dc=com"作為字尾,需要對其進行修改,當然也還需要修改其他的一些配置。本節将介紹對配置檔案的修改操作。

14.3.1  slapd.conf

OpenLDAP的配置檔案位于/etc/openldap/目錄中,名稱為slapd.conf。該檔案内容較多,通常隻需要修改幾個地方即可,包括修改字尾、管理者及其密碼。其初始内容如下:

其中各語句的含義如下:

以符号"#"開始的行是注釋行,第1~3行、第8~12行都是。

第5行設定資料庫,可使用ldbm或bdb。

第6行設定字尾。

第7行設定超級管理者的名稱,與Linux系統中的root類似。在配置時用該使用者,配置完成後,建議将其删除。

第11行設定超級管理者的密碼,預設狀态是被注釋了的。這行的密碼是明文狀态。

第12行也是設定超級管理者的密碼,這行是以加密方式設定的(預設狀态也是被注釋了的)。

根據實際情況,修改第6、7、11行即可,具體如下:

以上内容中,第6行将字尾修改為"dc=wyh,dc=com",同時第7行的超級管理者的字尾部分也需要随之修改。将第11行的注釋取消,設定超級管理者的密碼為明文密碼secret。

經過以上修改,儲存後退出,接着使用以下指令重新開機slapd程序:

14.3.2  了解schema

對于LDAP目錄中儲存的資訊,可以使用LDIF(LDAP Interchange Format)格式來儲存。這是一種标準文本檔案格式,使用這種格式儲存得的LDAP伺服器資料庫中的資料可友善讀取和修改,這也是其他大多數服務配置檔案所采取的格式。

LDIF檔案常用來向目錄導入或更改記錄資訊,這些資訊需要按照LDAP中schema的格式進行組織,并會接受schema的檢查,不符合其要求的格式将會出現報錯資訊。有關LDIF檔案的格式和建立将在14.4節進行介紹,這裡簡單介紹一下組織LDAP資料格式的schema檔案。

在LDAP中,schema用來指定一個目錄中所包含的對象(objects)的類型(objectClass),以及每一個類型(objectClass)中必須提供的屬性(Atrribute)和可選的屬性。可将schema了解為面向對象程式設計中的類,通過類定義一個具體的對象。LDIF中的資料條目可了解為是一個具體的對象,是通過schema來規劃建立的。是以,schema是一個資料模型,用來決定資料按什麼方式存儲,并定義存儲在不同的條目(Entry)下的資料之間的關系。schema需要在主配置檔案slapd.conf中指定,以用來決定在目錄中可以使用哪些objectClass。

在/etc/openldap/schema/目錄中提供了許多schema檔案,隻需要在配置檔案slapd.conf中使用include指令将需要使用的schema包含即可。例如,配置檔案預設包含了以下schema檔案:

提示:通常使用系統提供的schema就可解決大部分應用。管理者也可以自己設計制定schema,一般包括屬性定義(AttributeDefinition)、類定義(ClassDefinition)以及文法定義(SyntaxDefinition)等部分。這裡就不介紹具體的設計方法了。

14.4  管理OpenLDAP

啟動OpenLDAP伺服器程式之後,接下來的操作就是通過用戶端程式對目錄進行操作,包括添加、修改、删除和搜尋資料等操作。能對LDAP進行操作的用戶端程式很多,本節簡單介紹在Linux指令方式下進行這些操作的方法。

14.4.1  向目錄資料庫中添加資料(1)

初始狀态下,LDAP是一個空目錄,即沒有任何資料。可通過程式代碼向目錄資料庫中添加資料,也可使用OpenLDAP用戶端工具ldapadd指令來完成添加資料的操作,該指令可将一個LDIF檔案中的條目添加到目錄。是以,需要首先建立一個LDIF檔案,然後再進行添加操作。

1.LDIF文本條目格式

LDIF用文本格式表示目錄資料庫的資訊,以友善使用者建立、閱讀和修改。在LDIF檔案中,一個條目的基本格式如下:

dn行類似于關系資料庫中一條記錄的關鍵字,不能與其他dn重複。一個LDIF檔案中可以包含多個條目,每個條目之間用一個空行分隔。

例如,以下内容組成一個條目:

在以上文本中,各行含義如下:

第1行的dn定義該條目的辨別。

第2~4行定義該條目的objectcCass,可以定義多個屬性,如上面代碼中定義了3個objectClass。條目的屬性根據objectClass的不同而不同,有的objectClass有必須設定的屬性。在2~4行的3個objectClass中,top沒有必須定義的屬性,dcobject必須定義屬性dc,用來表示一個域名的部分,而organization必須定義屬性o,用來表示一個組織的名稱。

根據objectClass的要求,第5、6行分别定義屬性dc和屬性o的值。

2.了解objectClass

LDAP中,一個條目必須包含一個objectClass屬性,且需要賦予至少一個值。每一個值将用作一條LDAP條目進行資料存儲的模闆;模闆中包含了一個條目必須被指派的屬性和可選的屬性。

objectClass有着嚴格的等級之分,最頂層是top和alias。例如,organizationalPerson這個objectClass就隸屬于person,而person又隸屬于top。

objectClass可分為以下3類:

結構型(Structural):如person和organizationUnit;

輔助型(Auxiliary):如extensibeObject;

抽象型(Abstract):如top,抽象型的objectClass不能直接使用。

在OpenLDAP的schema中定義了很多objectClass,下面列出部分常用的objectClass的名稱。

account

alias

dcobject

domain

ipHost

organization

organizationalRole

organizationalUnit

person

organizationalPerson

inetOrgPerson

residentialPerson

posixAccount

posixGroup

<b>14.4.1  </b><b>向目錄資料庫中添加資料(2)</b>

<b>3</b><b>.了解Attribute</b>

屬性(Attribute)類似于程式設計中的變量,可以被指派。在OpenLDAP中聲明了許多常用的Attribute(使用者也可自己定義Attribute)。常見的Attribute含義如下:

c:國家。

cn:common name,指一個對象的名字。如果指人,需要使用其全名。

dc:domain Component,常用來指一個域名的一部分。

givenName:指一個人的名字,不能用來指姓。

l:指一個地名,如一個城市或者其他地理區域的名字。

mail:電子信箱位址。

o:organizationName,指一個組織的名字。

ou:organizationalUnitName,指一個組織單元的名字。

sn:surname,指一個人的姓。

telephoneNumber:電話号碼,應該帶有所在的國家的代碼。

uid:userid,通常指某個使用者的登入名,與Linux系統中使用者的uid不同。

提示:objectClass是一種特殊的Attribute,它包含其他用到的Attribute以及其自身。

對于不同的objectClass,通常具有一些必設屬性值和一些可選屬性值。例如,可使用person這個objectClass來表示系統中一個使用者的條目,對于系統中使用者通常需要有這樣一些資訊:姓名、電話、密碼、描述等。如圖14-6所示,對于person,通過cn和sn設定使用者的名和姓,這是必須設定的,而其他屬性則是可選的。

圖14-6  objectClass屬性

下面列出部分常用objectClass要求必設的屬性。

account:userid。

organization:o。

person:cn和sn。

organizationalPerson:與person相同。

organizationalRole:cn。

organizationUnit:ou。

posixGroup:cn、gidNumber。

posixAccount:cn、gidNumber、homeDirectory、uid、uidNumber。

<b>4</b><b>.建立LDIF檔案</b>

對以上内容有一定了解之後,就可以編寫輸入LDIF檔案,編輯需要向目錄資料庫添加的條目了。

下面根據如圖14-7所示的結構,建立LDIF檔案wyh.com.ldif。

(點選檢視大圖)圖14-7  目錄的樹形結構

對圖14-7進行分析,該目錄結構分為3層,有4個結點。根據圖14-7可建立LDIF檔案如下:

提示:每個結點可用一個dn表示,對于每個結點,又可繼續添加新的結點。如在根結點中可添加其他部門ou,在ou=managers結點也可繼續添加其他管理人員的資訊。

1. 1:  dn: dc=wyh, dc=com 

2. 2:  objectclass: top  

3. 3:  objectclass: dcobject  

4. 4:  objectclass: organization  

5. 5:  dc: wyh  

6. 6:  o: wyh,Inc.  

7. 7:  

8. 8:  dn: ou=managers, dc=wyh, dc=com 

9. 9:  ou: managers  

10.10: objectclass: organizationalUnit  

11.11:  

12.12: dn: cn=wyh, ou=managers, dc=wyh, dc=com 

13.13: cn: wyh  

14.14: sn: wuyunhui  

15.15: objectclass: person  

16.16:  

17.17: dn: cn=test, ou=managers, dc=wyh, dc=com 

18.18: cn: test  

19.19: sn: Test User  

20.20: objectclass: person 

<b>14.4.1  </b><b>向目錄資料庫中添加資料(3)</b>

以上檔案中各行的含義如下:

第1~6行建立根結點,這部分在前面也有介紹,就不再重複了。

第7、11、16行為空行,用來分隔4個dn條目(4個結點)。

第8~10行定義cn=managers結點的條目,該條目的objectClass為organizationalUnit,是以需要用ou屬性定義組織名稱。

第12~15行定義cn=wyh結點的條目,該條目使用的objectClass為person,是以需設定cn和sn兩個屬性值。

第17~20行與第12~15行的意義相同。

在以上LDIF檔案中,第1、8、12、17行以dn開頭,這部分内容必須唯一,并且在向目錄資料庫添加這些資料時,也要確定這些資料不能與目錄資料庫中已有資料相同,否則,添加操作将中斷。

5.從LDIF檔案添加到目錄資料庫

使用OpenLDAP用戶端工具ldapadd指令,可将LDIF檔案中的條目添加到目錄資料庫中,該指令的格式如下:

ldappadd  選項  LDIF檔案

在ldappadd指令中常用的選項如下:

-x:進行簡單認證。

-D:用來綁定伺服器的dn。

-h:目錄服務的位址。

-w:綁定dn的密碼。

-f:使用LDIF檔案進行條目添加的檔案。

【執行個體14-2】将前面編寫的LDIF檔案的條目資料添加到目錄資料庫中。

(1)檢查wyh.com.ldif檔案中的内容,需要注意的是,每個冒号後面都需要空一格,而每行結束處不能留有空格字元。

(2)使用以下指令将wyh.com.ldif檔案中的條目添加到目錄中:

1. #  ldapadd  -x  -D  "cn=Manager, dc=wyh, 

dc=com"  -w  secret  -f  wyh.com.ldif 

執行以上指令,如果添加操作正常完成,将顯示如圖14-8所示的提示資訊,表示添加了4個條目到目錄資料庫中。

(點選檢視大圖)圖14-8  添加初始條目

提示:如果以上指令執行不成功,需要逐個字元檢查wyh.com.ldif檔案中的内容,特别注意空格的問題。

<b>14.4.2  </b><b>查詢</b>

添加到目錄中的條目被儲存在目錄資料庫,在Linux指令界面下,可使用OpenLDAP用戶端工具ldapsearch指令來進行查詢。該指令的格式如下:

ldapsearch  選項 過濾 屬性值

常用的選項有以下幾個。

-b:指定要查詢的根節點。

-H:制定要查詢的伺服器。

使用ldapsearch指令查詢"dc=wyh, dc=com"下的所有條目,可使用以下指令:

1. #  ldapsearch  -x  -b "dc=wyh,dc=com" 

執行結果如圖14-9所示。

(點選檢視大圖)圖14-9  查詢所有條目

而如果使用以下指令,将查詢顯示sn中以字元wu開頭的條目,将得到如圖14-10所示的查詢結果,隻找到一個條目。

1. #  ldapsearch  -x  -b  'dc=wyh,dc=com'  'sn=wu*' 

(點選檢視大圖)圖14-10  查詢單個條目

<b>14.4.3  </b><b>修改條目</b>

使用OpenLDAP用戶端工具ldapmodify指令可對目錄資料庫中的條目進行修改。該指令的格式如下:

ldapmodify  選項

該指令的選項也很多,常用選項與ldapadd類似,這裡就不再列出了。

提示:使用ldapmodify指令不能修改條目的dn,但可以修改其他屬性值。

使用ldapmodify指令修改條目資訊可以有兩種方式:一種是互動式進行修改,另一種是通過檔案進行修改。

<b>1</b><b>.互動式修改</b>

修改前面建立的條目"cn=test, ou=managers, dc=wyh, dc=com",将其sn屬性修改為"Test User Modify",并添加一個description屬性,設定其值為"add Attribute"。

首先輸入以下指令,進行修改狀态:

1. # ldapmodify  -x  -D  "cn=Manager,dc=wyh,dc=com"  -w  secret 

執行以上指令後,終端将等候使用者輸入需要修改條目的dn,輸入以下内容:

1. dn: cn=test, ou=managers, dc=wyh, dc=com 

2. changetype: modify  

3. replace: sn  

4. sn: Test User Modify  

5. -   

6. add: description  

7. description : add Attribute 

以上輸入内容中,第1行查找需要修改的條目,第2行設定修改模式,第3行設定需要替換的屬性sn,第4行給屬性sn重新設定一個值,替換該屬性原有的值,第5行用一個短橫線分隔,第6行添加一個屬性description,第7行設定新添加屬性description的值。

輸入完以上内容之後再按Enter鍵,程式将按以上設定更新資料,然後按Ctrl+C鍵退出修改指令。執行過程如圖14-11所示。

(點選檢視大圖)圖14-11  修改條目

使用以上指令修改條目的資料之後,可使用以下指令檢視是否修改成功:

1. #  ldapsearch  -x  -b  'dc=wyh,dc=com'  'sn=test' 

執行以上指令檢視test條目的資料如圖14-12所示,可以看到sn屬性被修改了,同時添加了一個description屬性。

(點選檢視大圖)圖14-12  檢視修改部分

<b>2</b><b>.通過檔案修改</b>

通過前面的方式對條目進行修改時,很不友善,如果在互動方式時輸錯了某個字元,隻能中斷指令後重新進行修改。是以,更好的修改方法是首先将修改時輸入的文字儲存到一個檔案中,然後以該檔案作為輸入進行修改。用這種方式進行操作,首先需要建立一個臨時檔案,用來儲存需要進行的修改操作,下面示範這種方式的修改過程。

【執行個體14-3】 通過修改指令将前面LDAP資料庫中的資訊還原,即将sn屬性由"Test User Modify"修改為"Test User",并将description屬性删除。

(1)使用vi編輯器建立一個檔案modify,在其中輸入以下内容:

1. dn: cn=test,ou=managers,dc=wyh,dc=com 

4. sn: Test User  

5. -  

6. delete: description  

7. - 

從以上輸入内容可看到,與在互動式時輸入的内容完全相同。

技巧:使用檔案方式修改條目,可友善修改和檢查,若某個地方有輸入錯誤,可修改後再調用ldapmodify進行修改,減少輸入量。

(2)使用以下指令調用modify的内容進行修改:

1. # ldapmodify  -x  -D  "cn=Manager,dc=wyh,

dc=com"  -w  secret  -f  modify 

執行結果如圖14-13所示。

(點選檢視大圖)圖14-13  用檔案修改條目

本文轉自 pk2008 51CTO部落格,原文連結:http://blog.51cto.com/837244/898562