LDAP 目錄中的資料處理

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

將資料加入 LDAP 目錄

LDAP 伺服器 /etc/openldap/slapd.conf 中的組態正確並且就緒之後 (即擁有正確的 suffixdirectoryrootdnrootpwindex 項目),即可開始輸入記錄。OpenLDAP 為此項任務提供了 ldapadd 指令。如果可能,請以套裝方式將多個物件一次加入資料庫,這是較實用的作法。LDAP 處理 LDIF 格式 (LDAP 資料互換格式) 的能力可在此時發揮作用。LDIF 是一個簡單的文字檔,可包含任意數量的屬性與值的組合。如需可用物件類別和屬性的相關資訊,請參閱 slapd.conf 中宣告的綱要檔。在 圖形 36.1 「LDAP 目錄結構」 中用來建立概略架構的 LDIF 檔會和 範例 36.7 「LDIF 檔案範例」 中的檔案相似。

範例 36.7. LDIF 檔案範例

# The Organization
dn: dc=example,dc=com
objectClass: dcObject
objectClass: organization
o: Example dc: example

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

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

# The organizational unit internal IT (it)
dn: ou=it,dc=example,dc=com
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=Administrator,dc=example,dc=com-W 可避免將密碼輸入指令行 (以純文字) 並啟用單獨的密碼提示。此密碼是先前在 slapd.conf 中使用 rootpw 決定的。-f 會傳送檔案名稱。請參閱 範例 36.8 「ldapadd 和 example.ldif」 中執行 ldapadd 的詳細內容。

範例 36.8. ldapadd 和 example.ldif

ldapadd -x -D cn=Administrator,dc=example,dc=com -W -f example.ldif 

Enter LDAP password: 
adding new entry "dc=example,dc=com" 
adding new entry "ou=devel,dc=example,dc=com" 
adding new entry "ou=doc,dc=example,dc=com" 
adding new entry "ou=it,dc=example,dc=com"

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

範例 36.9. Tux 的LDIF 資料

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

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

修改 LDAP 目錄中的資料

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

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

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

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

ldapmodify -x -D cn=Administrator,dc=example,dc=com -W -f tux.ldif

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

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

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

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

請在 ldapmodify 線上文件中尋找有關 ldapmodify 及其語法的詳細資訊。

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

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

ldapsearch -x -b dc=example,dc=com "(objectClass=*)"

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

刪除 LDAP 目錄中的資料

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

ldapdelete -x -D cn=Administrator,dc=example,dc=com -W cn=Tux \
Linux,ou=devel,dc=example,dc=com