OpenLDAP 提供一系列的工具,用來管理 LDAP 目錄中的資料。以下說明四種最重要的工具,分別用來新增、刪除、搜尋和修改資料集。
一旦您 LDAP 伺服器 /etc/openldap/lsapd.conf 中的組態正確並且就緒 (即擁有正確的 suffix、directory、rootdn、rootpw 和 index) 項目,請接著輸入記錄。OpenLDAP 提供這項工作所需的 ldapadd 指令。可能的話,將多個物件一次加入資料庫是較實際的作法。LDAP可處理此處的 LDIF 格式 (LDAP 資料交換格式)。LDIF 是一個簡單的文字檔,可包含任意的屬性及數值組合。有關可用的物件類別和屬性的資料,請參閱 slapd.conf 中宣告的綱要檔。在 圖形 45.1, "LDAP 目錄結構" 中用來建立概略架構的 LDIF 檔會和 範例 45.7, "LDIF 檔案範例" 中的檔案相似。
範例 45.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
![]() | 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 傳送檔案名稱。請參閱 範例 45.8, "ldapadd 和 example.ldif" 中執行 ldapadd 的詳細內容。
範例 45.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 檔。範例 45.9, "Tux 的LDIF 資料" 會新增 Tux 至新的 LDAP 目錄。
範例 45.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 檔可包含任意數量的物件。可以將整個目錄分支一起傳給伺服器,也可只傳送一部份,如個別物件範例所示。如果需要經常修改某些資料,建議使用單一物件的細分。
工具 ldapmodify 可用來修改資料集。最簡單的作法是先修改對應的 LDIF 檔,然後將修改過的檔案傳送給 LDAP 伺服器。如果要將同事 Tux 的電話號碼從 +49 1234 567-8 改為 +49 1234 567-10,則必須依照 範例 45.10, "修改過的 LDIF 檔 tux.ldif" 中的方式來編輯 LDIF 檔案。
範例 45.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。此項作業程序描述如下:
啟動 ldapmodify 並輸入您的密碼:
ldapmodify -x -D cn=admin,dc=suse,dc=de -W Enter LDAP password:
輸入變更並注意是否符合下列語法順序:
dn: cn=Tux Linux,ou=devel,dc=suse,dc=de changetype: modify replace: telephoneNumber telephoneNumber: +49 1234 567-10
請在 ldapmodify(1) man 頁面中,尋找有關 ldapmodify 及其語法的詳細資訊。
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)) 找到。