25.4. LDAP 目錄中的資料處理

OpenLDAP 提供一系列的工具,用來管理 LDAP 目錄中的資料。以下說明四種最重要的工具,分別用來新增、刪除、搜尋和修改資料集。

25.4.1. 將資料加入 LDAP 目錄

一旦您 LDAP 伺服器 /etc/openldap/lsapd.conf 中的組態正確並且就緒 (即擁有正確的 suffixdirectoryrootdnrootpwindex) 項目,請接著輸入記錄。OpenLDAP 提供這項工作所需的 ldapadd 指令。可能的話,將多個物件一次加入資料庫是較實際的作法。LDAP可處理此處的 LDIF 格式 (LDAP 資料交換格式)。LDIF 是一個簡單的文字檔,可包含任意的屬性及數值組合。有關可用的物件類別和屬性的資料,請參閱 slapd.conf 中宣告的綱要檔。在 圖形 25.1, "LDAP 目錄結構" 中用來建立概略架構的 LDIF 檔會和 範例 25.7, "LDIF 檔案範例" 中的檔案相似。

範例 25.7. LDIF 檔案範例

# The SUSE Organization
dn: dc=suse,dc=de
objectClass: dcObject
objectClass: organization
o: SUSE AG dc: suse

# The organizational unit development (devel)
dn: ou=devel,dc=suse,dc=de
objectClass: organizationalUnit
ou: devel

# The organizational unit documentation (doc)
dn: ou=doc,dc=suse,dc=de
objectClass: organizationalUnit
ou: doc

# The organizational unit internal IT (it)
dn: ou=it,dc=suse,dc=de
objectClass: organizationalUnit
ou: it
[Important]LDIF 檔的編碼

LDAP 可使用 UTF-8 (Unicode)。母音字元的編碼必須正確。使用支援 UTF-8 的編輯器,例如 Kate 或最新版的 Emacs。否則,應避免母音字元和其它特殊字元,或使用 recode 將輸入重新編碼為 UTF-8。

儲存字尾為 .ldif 的檔案,然後用下列指令傳送給伺服器。

ldapadd -x -D <dn of the administrator> -W -f <file>.ldif

-x 在此例中會關閉 SASL 的驗證。-D 會宣告呼叫操作的使用者。此處輸入管理員的有效 DN,如同 slapd.conf 中的設定一樣。在此範例中,有效 DN為 cn=admin,dc=suse,dc=de.-W 可避免將密碼輸入指令行 (以非加密文字) 並啟動一個密碼提示。此密碼是先前在 slapd.conf 中使用 rootpw 決定的。-f 傳送檔案名稱。請參閱 範例 25.8, "ldapadd 和 example.ldif" 中執行 ldapadd 的詳細內容。

範例 25.8. ldapadd 和 example.ldif

ldapadd -x -D cn=admin,dc=suse,dc=de -W -f example.ldif 

Enter LDAP password: 
adding new entry "dc=suse,dc=de" 
adding new entry "ou=devel,dc=suse,dc=de" 
adding new entry "ou=doc,dc=suse,dc=de" 
adding new entry "ou=it,dc=suse,dc=de"

個別的使用者資料可建立在不同的 LDIF 檔。範例 25.9, "Tux 的LDIF 資料" 會新增 Tux 至新的 LDAP 目錄。

範例 25.9. Tux 的LDIF 資料

# coworker Tux
dn: cn=Tux Linux,ou=devel,dc=suse,dc=de
objectClass: inetOrgPerson
cn: Tux Linux
givenName: Tux
sn: Linux
mail: tux@suse.de
uid: tux
telephoneNumber: +49 1234 567-8

LDIF 檔可包含任意數量的物件。可以將整個目錄分支一起傳給伺服器,也可只傳送一部份,如個別物件範例所示。如果需要經常修改某些資料,建議使用單一物件的細分。

25.4.2. 修改 LDAP 目錄中的資料

工具 ldapmodify 可用來修改資料集。最簡單的作法是先修改對應的 LDIF 檔,然後將修改過的檔案傳送給 LDAP 伺服器。如果要將同事 Tux 的電話號碼從 +49 1234 567-8 改為 +49 1234 567-10,則必須依照 範例 25.10, "修改過的 LDIF 檔 tux.ldif" 中的方式來編輯 LDIF 檔案。

範例 25.10. 修改過的 LDIF 檔 tux.ldif

# coworker Tux
dn: cn=Tux Linux,ou=devel,dc=suse,dc=de 
changetype: modify
replace: telephoneNumber 
telephoneNumber: +49 1234 567-10

使用下列指令將修改過的檔案輸入 LDAP 目錄:

ldapmodify -x -D cn=admin,dc=suse,dc=de -W -f tux.ldif

或者,也可以直接將要修改的屬性傳送給ldapmodify。此項作業程序描述如下:

  1. 啟動 ldapmodify 並輸入您的密碼:

    ldapmodify -x -D cn=admin,dc=suse,dc=de -W 
    Enter LDAP password:
    
  2. 輸入變更並注意是否符合下列語法順序:

    dn: cn=Tux Linux,ou=devel,dc=suse,dc=de
    changetype: modify
    replace: telephoneNumber
    telephoneNumber: +49 1234 567-10

請在 ldapmodify(1) man 頁面中,尋找有關 ldapmodify 及其語法的詳細資訊。

25.4.3. 搜尋或讀取 LDAP 目錄中的資料

OpenLDAP 透過 ldapsearch 提供一個指令行工具,用來搜尋和讀取 LDAP 目錄中的資料。下列為簡易查詢的語法:

ldapsearch -x -b dc=suse,dc=de "(objectClass=*)"

選項 -b 決定搜尋基礎 — 用來執行搜尋的目錄樹區段。在目前這個範例中,此搜尋基礎為 dc=suse,dc=de。如果要在 LDAP 目錄的次區段中執行更詳細的搜尋 (例如,只在 devel 部門搜尋) 可使用 -b 將此區段傳送至 ldapsearch-x 會要求啟動簡單的驗證。(objectClass=*) 會宣告目錄中的所有物件都應該讀取。在建立一個新的目錄樹後,可使用本指令來確認所有項目都已正確記錄,而且伺服器的回覆也符合需要。更多有關使用 ldapsearch 的資訊,可在對應的 man 頁面 (ldapsearch(1)) 找到。

25.4.4. 刪除 LDAP 目錄中的資料

使用 ldapdelete 來刪除不要的資料。其語法和前述指令相似。例如,要刪除 Tux Linux 的整個項目:可發出下列指令:

ldapdelete -x -D cn=admin,dc=suse,dc=de -W cn=Tux \
Linux,ou=devel,dc=suse,dc=de