Sun Java logo     上一頁      目錄      索引      下一頁     

Sun logo
Sun Java(TM) System Directory Server 5.2 2005Q1 管理指南 

第 3 章
建立樹狀目錄

樹狀目錄包含伺服器的所有項目,並以其辨別名稱 (DN) 作為識別。由於 DN 為串級的架構,架構中會建立分支與分葉,之後便可使用分支與分葉為樹狀目錄中的資料建立結構。為了管理樹狀目錄,樹狀目錄在管理上定義為尾碼、子尾碼、鏈 接尾碼。Directory Server Console 提供用於建立與管理所有這些元素的控制項,此外,您也可以使用指令行工具。

如需關於建立目錄資料建構的概念資訊,以及關於尾碼的一般資訊,請參閱 Directory Server Deployment Planning Guide

本章包含下列章節:


建立尾碼

可以使用 Directory Server Console 或指令行建立根尾碼與子尾碼。

使用主控台建立新的根尾碼

  1. 在 Directory Server Console 最上層的 [配置] 標籤上,以滑鼠右鍵按一下 [資料] 節點,然後在快顯功能表選取 [新增尾碼]。
  2. 或者,可以選取 [資料] 節點,再選取 [物件] 功能表中的 [新增尾碼]。

    顯示 [新增尾碼] 對話方塊。

  3. 在 [尾碼 DN] 欄位中輸入唯一的尾碼名稱。名稱必須使用辨別名稱格式,包含以逗點分隔的一或多個屬性值配對。
  4. 在慣例上,根尾碼使用網域 - 元件 (dc) 命名屬性。例如,您可以輸入 dc=example, dc=org 作為新的尾碼 DN。


    備註

    尾碼名稱包含 DN 格式的屬性值配對,不過視為單一字串。因此,所有的空格都有意義,而且均為尾碼名稱的一部分。


  5. 依預設值,伺服器會自動選擇此尾碼的資料庫檔案位置。此外,依照預設值,尾碼只會維護系統索引,不會對任何屬性加密,而且也不會配置複製。
  6. 若要修改任何預設值,請按一下 [選項] 按鈕,顯示新的尾碼選項:

    1. 資料庫名稱也是包含資料庫檔案的目錄名稱。預設的資料庫名稱是尾碼 DN 中第一個命名屬性的值,為了保持此值的唯一性,可能會附加一個數字。若要使用不同的名稱,請選取 [使用自訂值] 選項按鈕,並輸入新的唯一資料庫名稱。
    2. 資料庫名稱只能包含 ASCII (7 位元) 英數字元、連字號 (-) 和底線符號 (_)。例如,可以將新的資料庫命名為 example_2

    3. 也可以選擇包含資料庫檔案的目錄位置。依預設值,此為下列路徑的子目錄:
    4. ServerRoot/slapd-serverID/db

      請輸入新的路徑,或按一下 [瀏覽] 尋找資料庫目錄的新位置。新路徑在目錄伺服器主機必須是可存取的。

    5. 為加速設定新尾碼的配置,可以選擇複製現有的尾碼。選取 [複製尾碼配置],並選擇想要從下拉式功能表中複製的尾碼。接著,選取下列任一個要複製的配置:
      • 複製索引配置 - 新的尾碼會與複製尾碼相同的屬性上維護相同的索引。
      • 複製屬性加密配置 - 新的尾碼會啟用與複製尾碼中的屬性清單相同及加密結構相同的加密。
      • 複製複製配置 - 新的尾碼會與複製尾碼的複本類型相同,若為提供者,則會複製所有的複製協議,而且將啟用複製。
    6. 當配置完所有新尾碼的選項後,請按一下 [確定]。新增尾碼對話方塊會顯示您選擇的所有選項。
  7. 在 [新增尾碼] 對話方塊中按一下 [確定],以建立新的根尾碼。
  8. 根尾碼會自動出現在 [資料] 分支下。請參閱管理尾碼,以進一步配置新的尾碼。

    新的根尾碼不包含任何項目,連尾碼 DN 的項目都沒有。因此,在將它初始化並提供適當的存取權限之前,它在目錄中是無法存取的,而且在主控台 [目錄] 標籤中也看不見它。

    如果從 LDIF 檔案中初始化尾碼,則可略過其餘步驟。但是,請務必確認 LDIF 檔案中的根項目包含您的部署所需的存取控制指令 (ACI)。

  9. 選取主控台最上層的 [目錄] 標籤。樹狀目錄內尚未顯示新的尾碼。
  10. 只有目錄管理員擁有建立尾碼最上方項目的權限。如果不是以目錄管理員身份登入,則選取 [主控台] > [登入為新使用者] 功能表項目。輸入目錄管理員的 DN 和密碼登入。依預設值,目錄管理員的 DN 為 cn=Directory Manager
  11. 在樹狀目錄的根節點 (包含伺服器主機名稱與連接埠的節點) 上按一下滑鼠右鍵。選取快顯功能表中的 [新增根物件],再選取新根尾碼的 DN。
  12. 或者,選取樹狀目錄的根節點,再選擇 [物件] 功能表中的 [新增根物件] 項目。

  13. 在顯示的 [新增物件] 對話方塊中,為根物件選取一個物件類別。此物件類別將決定可加入根項目的其他屬性內容。
  14. 按照慣例,包含 dc 命名屬性之尾碼 DN 的根物件屬於 domain 物件類別。通常,根物件是簡單物件,而且包含極少的資料。

  15. 選好物件類別後,按一下 [新增物件] 對話方塊中的 [確定]。
  16. 現在主控台會顯示新根物件的標準編輯器,並自動將預設的 ACI 組加入新物件。如需其他資訊,請參閱預設 ACI。加入及編輯拓樸必需的屬性值,包括 ACI 組的所有修改。

  17. 項目編輯完成後,按一下 [標準編輯器] 中的 [確定],以建立新尾碼的根物件。
  18. 現在樹狀目錄內會顯示新尾碼,且可以根據 ACI 所授與的權限透過主控台管理新尾碼。

使用主控台建立新的子尾碼

下列程序描述如何在已存在的根尾碼或子尾碼下建立新的子尾碼:

  1. 在 Directory Server Console 最上層的 [配置] 標籤上,展開 [資料] 節點與任何尾碼節點,以顯示父尾碼。
  2. 在父尾碼節點上按一下滑鼠右鍵,再選取快顯功能表中的 [新增子尾碼]。
  3. 或者,您可以選取父尾碼節點,再選擇 [物件] 功能表中的 [新增子尾碼]。

    顯示 [新增子尾碼] 對話方塊。

  4. 在 [子尾碼 RDN] 欄位中輸入唯一的名稱。名稱必須採用相對辨別名稱格式,包含以逗點分隔的一或多個屬性值配對,例如 ou=Contractors
  5. 文字方塊下一行顯示此子尾碼的完整 DN (由 RDN 後附加父尾碼 DN 組成)。


    備註

    子尾碼名稱包含 RDN 格式的屬性值配對,不過視為單一字串。因此,所有的空格都有意義,而且均為尾碼名稱的一部分。


  6. 依預設值,伺服器會自動選擇此尾碼的資料庫檔案位置。此外,依照預設值,尾碼只會維護系統索引,不會對任何屬性加密,而且也不會配置複製。
  7. 若要修改任何預設值,請按一下 [選項] 按鈕,顯示新的尾碼選項:

    1. 資料庫名稱也是包含資料庫檔案的目錄名稱。預設的資料庫名稱是 RDN 中第一個命名屬性的值,為了保持此值的唯一性,可能會附加一個數字。若要使用不同的名稱,請選取 [使用自訂值] 選項按鈕,並輸入新的唯一資料庫名稱。
    2. 資料庫名稱只能包含 ASCII (7 位元) 英數字元、連字號 (-) 和底線符號 (_)。例如,您可以將新的資料庫命名為 temps-US

    3. 也可以選擇包含資料庫檔案的目錄位置。依預設值,此為下列路徑的子目錄:
    4. ServerRoot/slapd-serverID/db

      請輸入新的路徑,或按一下 [瀏覽] 尋找資料庫目錄的新位置。新路徑必須可被目錄伺服器應用程式存取。

    5. 為加速設定新子尾碼的配置,可以選擇複製現有的尾碼,不論是其父尾碼或任何其他尾碼皆可。選取 [複製尾碼配置],並選擇想要從下拉式功能表中複製的尾碼。接著,選取下列任一個要複製的配置:
      • 複製索引配置 - 新的尾碼會與複製尾碼相同的屬性上維護相同的索引。
      • 複製屬性加密配置 - 新的尾碼會啟用與複製尾碼中的屬性清單相同及加密結構相同的加密。
      • 複製複製配置 - 新的尾碼會與複製尾碼的複本類型相同,若為提供者,則會複製所有的複製協議,而且將啟用複製。
    6. 當配置完所有新尾碼的選項後,請按一下 [確定]。[新增子尾碼] 對話方塊會顯示您選擇的所有選項。
  8. 在 [新增子尾碼] 對話方塊中按一下 [確定],以建立子尾碼。
  9. 子尾碼會自動出現在 [配置] 標籤中它的父尾碼下。請參閱管理尾碼,以進一步配置新的尾碼。

    新的子尾碼不包含任何項目,連 RDN 的項目都沒有。因此,在將它初始化並提供適當的存取權限之前,它在目錄中是無法存取的,而且在主控台 [目錄] 標籤中也看不見它。

    如果從 LDIF 檔案中初始化尾碼,則可略過其餘步驟。但是,請務必確認 LDIF 檔案中的根項目包含您的部署所需的存取控制指令 (ACI)。

  10. 在主控台最上層的 [目錄] 標籤上,展開樹狀目錄,顯示子尾碼的父層。此時還不會顯示新的子尾碼。
  11. 只有目錄管理員擁有建立尾碼和次尾碼 (ACI.) 最上方項目的權限。如果不是以目錄管理員身份登入,則選取 [主控台] > [登入為新使用者] 功能表項目。輸入目錄管理員的 DN 和密碼登入。依預設值,目錄管理員的 DN 為 cn=Directory Manager
  12. 在子尾碼的父層上按一下滑鼠右鍵,再選取快顯功能表中的 [新增] 項目。在新物件清單中,選取與子尾碼 RDN 對應的物件類型。例如,如果建立 ou=Contractors 子尾碼,可選擇 OrganizationalUnit 項目。如果子尾碼的物件類別不在清單中,請選取 [其他],並在顯示的 [新增物件] 對話方塊中選擇該物件類別。或者,選取子尾碼的父層,再選擇 [物件] 功能表中的 [新增] 項目。
  13. 現在主控台會顯示新物件的自訂或標準編輯器。加入及編輯拓樸必需的屬性值,包括 ACI 組的所有修改。
  14. 項目編輯完成後,按一下 [編輯器] 中的 [確定],以建立新子尾碼的項目。
  15. 現在樹狀目錄內會顯示新子尾碼,且可以根據 ACI 所授與的權限透過主控台管理新子尾碼。

從指令行建立尾碼

您也可以用 ldapmodify 指令行公用程式在您的目錄中建立尾碼。由於伺服器內部是以相同的方式管理根尾碼與子尾碼,因此從指令行建立這兩種尾碼的程序幾乎完全相同。

雖然在下列範例中使用「cn=Directory Manager」,但配置項目可以由任何管理使用者建立。但尾碼的最上方項目必須由目錄管理員建立。

  1. 用下列指令在 cn=mapping tree,cn=config 下為根尾碼建立尾碼配置項目:
  2. ldapmodify -a -h host -p port -D "cn=Directory Manager" -w password
    dn:cn="suffixDN",cn=mapping tree,cn=config
    objectclass:top
    objectclass:extensibleObject
    objectclass:nsMappingTree
    cn:suffixDN
    nsslapd-state:backend
    nsslapd-backend:databaseName
    ^D

    對於子尾碼,請用相同的指令,再加上下列屬性:
    nsslapd-parent-suffix:"parentSuffixDN"

    suffixDN 是新尾碼的完整 DN。對於根尾碼,慣例上是使用網域-元件 (dc) 命名屬性,例如 dc=example,dc=org。若是子尾碼,suffixDN 包含子尾碼的 RDN 與其父尾碼的 DN,例如 ou=Contractors,dc=example,dc=com

    databaseName 是與此尾碼相關之內部管理資料庫的名稱。在所有尾碼的 databaseNames 中,名稱必須是唯一的,而且在慣例上,它是 suffixDN 的第一個命名元件值。databaseName 也是包含尾碼資料庫檔案的目錄名稱,因此應該只包含 ASCII (7 位元) 英數字元、連字號 (-) 與底線符號 (_)。

    若是子尾碼,parentSuffixDN 為父尾碼真正的 DN。

  3. 使用下列指令建立資料庫配置項目:
  4. ldapmodify -a -h host -p port -D "cn=Directory Manager" -w password
    dn:cn=databaseName,cn=ldbm database,cn=plugins,cn=config
    objectclass:top
    objectclass:extensibleObject
    objectclass:nsBackendInstance
    cn:databaseName
    nsslapd-suffix:suffixDN
    ^D

    其中 databaseNamesuffixDN 必須擁有與先前步驟中所使用的值相同的值。

    將此項目加入目錄後,伺服器的資料庫模組將自動於下列目錄中建立資料庫檔案:

    ServerRoot/slapd-serverID/db/databaseName

    若要讓伺服器在其他位置建立資料庫檔案,請用下列屬性建立資料庫配置項目:

    nsslapd-directory:path/databaseName

    伺服器將在指定的位置,自動建立名為 databaseName 的目錄以儲存資料庫檔案。

  5. 建立根尾碼或子尾碼的基礎項目。
  6. 例如,使用下列指令可建立 dc=example,dc=org 根尾碼的基礎項目:

    ldapmodify -a -h host -p port -D "cn=Directory Manager" -w password
    dn:dc=example,dc=org
    objectclass:top
    objectclass:domain
    dc:example
    ^D

    您必須包含 DN 的第一個命名屬性及其值,也必須包含基礎項目物件類別之模式所需的所有屬性。依照慣例,使用網域-元件 (dc) 的根尾碼 DN 擁有 domain 物件類別,它不需要其他任何屬性。

    您也應該在根尾碼中加入存取控制指令 (ACI) 屬性,以強制執行存取策略。下列是可加入的 aci 屬性值,以允許匿名讀取、安全的自我修改及完整的管理員存取權限:

    aci:(targetattr != "userPassword") (version 3.0; acl
     "Anonymous access";
     allow (read, search, compare)userdn = "ldap:///anyone";)
    aci:(targetattr != "nsroledn || aci || nsLookThroughLimit ||
     nsSizeLimit || nsTimeLimit || nsIdleTimeout ||
     passwordPolicySubentry || passwordExpirationTime ||
     passwordExpWarned || passwordRetryCount || retryCountResetTime
     || accountUnlockTime || passwordHistory ||
     passwordAllowChangeTime")(version 3.0; acl "Allow self entry
     modification except for nsroledn, aci, resource limit
     attributes, passwordPolicySubentry and password policy state
     attributes"; allow (write)userdn ="ldap:///self";)
    aci:(targetattr ="*")(version 3.0;acl
     "Configuration Administrator";
     allow (all) userdn = "ldap:///uid=admin,ou=Administrators,
     ou=TopologyManagement, o=NetscapeRoot";)
    aci:(targetattr ="*")(version 3.0;acl
     "Configuration Administrators Group";
     allow (all) (groupdn =
     "ldap:///cn=Configuration Administrators, ou=Groups,
     ou=TopologyManagement, o=NetscapeRoot");)

    以子尾碼為例,使用下列指令可建立 ou=Contractors,dc=example,dc=com 的基礎項目:

    ldapmodify -a -h host -p port -D "cn=Directory Manager" -w password
    dn:ou=Contractors,dc=example,dc=com
    objectclass:top
    objectclass:organizationalUnit
    description:base of separate subsuffix for contractor identities
    ^D

    您必須包含 DN 的命名屬性及其值,也必須包含基礎項目物件類別之模式所需的所有屬性,而且可以加入其他允許的任何屬性。子尾碼擁有其父尾碼上的 ACI 所定義的存取控制,前提是這些 ACI 的範圍必須包含新的子尾碼。若要在子尾碼上定義不同的存取策略,請在建立基礎項目時指定您的 aci 屬性。


管理尾碼

建立尾碼可讓您同時管理該尾碼的所有內容。本節說明如何管理尾碼的存取,包括停用所有作業、將尾碼設為唯讀以及建立尾碼層級的參照。

許多其他目錄管理工作是在尾碼層級配置,本書將於其他章節中介紹:

停用或啟用尾碼

有時候,您可能必須將尾碼設為無法使用以進行維護,或為了安全性的原因而將其內容設為無法使用。停用尾碼可讓伺服器無法為回應嘗試存取該尾碼的任何用戶端作業,而讀取或寫入尾碼內容。如果已定義了預設參照,當用戶端嘗試存取停用的尾碼時,會傳回該參照。

使用主控台停用或啟用尾碼

  1. 在 Directory Server Console 最上層的 [配置] 標籤上,展開 [資料] 節點,再選取要停用的尾碼。
  2. 在右面板中,選取 [設定值] 標籤。依預設值,所有尾碼都會在建立時啟用。
  3. 如果已啟用此尾碼的複製功能,則會看到一個說明告訴您此標籤的內容可能自動更新。停用複製的尾碼也會中斷此尾碼的複製作業。只要複製中斷的時間不超過復原 設定值,複製機制將在尾碼再度啟用後恢復更新此複本。複製復原設定值是用戶複本的清除延遲與其提供者的變更記錄檔的最大值及時間 (請參閱進階用戶配置)。

  4. 取消選取 [啟用存取此尾碼] 核取方塊可停用尾碼,或選取此核取方塊可將其啟用。
  5. 按一下 [儲存] 可套用變更,並可立即停用或啟用該尾碼。
  6. 或者,可設定全域預設參照,此參照在停用的同時,也會針對此尾碼上的所有作業而傳回。此設定值位於最上層 [配置] 標籤的根節點 [網路] 標籤上。如需詳細資訊,請參閱使用主控台設定預設參照

從指令行停用或啟用尾碼

  1. 用下列指令編輯尾碼配置項目中的 nsslapd-state 屬性:
  2. ldapmodify -h host -p port -D "cn=Directory Manager" -w password
    dn:cn="suffixDN",cn=mapping tree,cn=config
    changetype:modify
    replace:nsslapd-state
    nsslapd-state:disabled or backend
    ^D

    其中 suffixDN 是定義尾碼 DN 時完整的字串,包括任何空格。將 nsslapd-state 屬性設定為值 disabled 可停用尾碼,設定為值 backend 可啟用完整存取。

    當指令成功時,會立即停用尾碼。

  3. 或者,可設定全域預設參照,此參照在停用的同時,也會針對此尾碼上的所有作業而傳回。如需詳細資訊,請參閱從指令行設定預設參照

設定存取權限及參照

如果不要完全停用尾碼,只要限制其存取,您可以修改存取權限,以允許唯讀存取。此時,必須為寫入作業的另一部伺服器定義參照。您也可以拒絕讀取和寫入存取,並為尾碼上的所有作業定義參照。

參照也可用於將用戶端應用程式暫時指向不同的伺服器。例如,您可以在尾碼中加入參照,使得正在備份尾碼內容時,尾碼會指向不同的伺服器。

複製機制必須依靠寫入權限與參照,才能配置尾碼的複製功能。啟用複製、升級複本或降級複本都會修改參照設定值。


注意

如果已複製尾碼,修改參照可能會影響此尾碼的複製行為。


使用主控台設定存取權限和參照

  1. 在Directory Server Console 最上層的 [配置] 標籤上,展開 [資料] 節點,再選取要設定參照的尾碼。
  2. 在右面板中,選取 [設定值] 標籤。如果啟用鏈接的尾碼,則只能設定權限和參照。如果已啟用此尾碼的複製功能,則會看到一個說明告訴您此標籤的內容可能自動更新。
  3. 請選取下列其中一個選項按鈕,設定回覆給此尾碼項目上的任何寫入作業:
    • 處理寫入和讀取要求 - 預設狀態下會選取此選項按鈕,它代表尾碼的正常行為。系統可能會定義參照,但是不會傳回參照。
    • 處理讀取要求,並傳回寫入要求的參照 - 如果希望將尾碼設為唯讀,可選取此選項按鈕,並在清單中輸入一或多個 LDAP URL,作為寫入要求傳回的參照。
    • 傳回讀取和寫入要求的參照 - 如果希望拒絕讀取與寫入存取,可選取此選項按鈕。此行為與停用尾碼的存取相似,不同處是會特別針對此尾碼定義參照,而不是使用全域預設參照。
  4. 使用 [加入] 與 [移除] 按鈕編輯參照清單。按一下 [加入] 按鈕會顯示建立新參照之 LDAP URL 的對話方塊。可對遠端伺服器中任何分支的 DN 建立參照。如需關於 LDAP URL 結構的詳細資訊,請參閱 Directory Server Administration Reference
  5. 可輸入多個參照。目錄會傳回此清單的所有參照,回應來自用戶端應用程式的要求。

  6. 按一下 [儲存] 可套用您的變更,並且立即開始強制執行新的權限和參照設定值。

從指令行設定存取權限和參照

參照是標示的 URL,也就是說 LDAP URL 之後可能接著空白字元和標籤。因為空白字元很重要,參照的 URL 中的任何空白字元都必須使用 %20 加以忽略。

在下列指令中,suffixDN 是定義尾碼 DN 時完整的字串,包括任何空格。LDAPURL 為有效的 URL,其中包含主機名稱、連接埠號碼及目標 DN,例如:

ldap://phonebook.example.com:389/ou=All%20People,dc=example,dc=com

  1. 使用下列指令編輯尾碼的配置項目:
  2. ldapmodify -h host -p port -D "cn=Directory Manager" -w password
    dn:cn="suffixDN",cn=mapping tree,cn=config
    changetype:modify
    replace:nsslapd-state
    nsslapd-state:referral on update or referral
    -
    add:nsslapd-referral
    nsslapd-referral:LDAPURL
    ^D

    可重複最後的變更敘述,將任何數量的 LDAP URL 加入 nsslapd-referral 屬性。

    當 nsslapd-state 值為 referral on update 時,該尾碼為唯讀,而且會傳回所有的 LDAP URL 作為寫入作業的參照。當值為 referral 時,會拒絕讀取與寫入兩項作業,而且會針對任何要求傳回參照。

  3. 尾碼會變成唯讀或無法存取,當指令成功時,會立即準備好傳回參照。

刪除尾碼

刪除尾碼將會從目錄中移除它的整個分支。可刪除父尾碼,並在目錄中保留其子尾碼作為新的根尾碼。


小心

當您刪除尾碼時,會將它永遠從目錄中完全移除,並移除尾碼的所有配置 (包括其複製配置)。


使用主控台刪除尾碼

  1. 在 Directory Server Console 的 [配置] 標籤上,展開 [資料] 節點。
  2. 在想要移除的尾碼上按一下滑鼠右鍵,再選取快顯式功能表中的 [刪除]。
  3. 或者,可以選取尾碼節點,再選擇 [物件] 功能表中的 [刪除]。

  4. 顯示確認對話方塊,通知您將從目錄中移除所有尾碼項目。
  5. 除了父尾碼以外,也可以選擇遞迴的刪除所有其子尾碼。如果要移除整個分支,請選取 [刪除此尾碼及其所有子尾碼]。相反的,如果只要移除特定的尾碼,並在目錄中保留其子尾碼,請選取 [僅刪除此尾碼]。

  6. 按一下 [確定] 刪除該尾碼。
  7. 顯示進度對話方塊,告訴您主控台已經完成步驟。

從指令行刪除尾碼

若要從指令行刪除尾碼,請使用 ldapdelete 指令移除目錄中的配置項目。

如果想要刪除包含子尾碼的整個分支,必須尋找已刪除父項的子尾碼,並對每個子尾碼及其可能的子尾碼重複該程序。

  1. 使用下列指令移除尾碼配置項目:
  2. ldapdelete -h host -p port -D "cn=Directory Manager" -w password \
               -v ’cn="suffixDN",cn=mapping tree,cn=config’

    此指令從位於 suffixDN 的基礎項目開始,將尾碼從伺服器中移除。現在此尾碼將不再顯示,也無法在目錄中存取。-v 選項指定詳細輸出模式:顯示其他有關刪除作業的資訊。

  3. 移除位於 cn=databaseName,cn=ldbm database,cn=plugins,cn=config 中對應的資料庫配置項目,及其下的所有項目。若要進行遞迴刪除,請使用下載 Directory Server Resource Kit (DSRK) 中的 ldapsubtdel 指令。您可以在下列位置取得此軟體:http://wwws.sun.com/software/download/
  4. % ./ldapsubtdel -h hostname -p port -D "cn=Directory Manager" -w - -b "ou=test,dc=example,dc=com" -r -v

    Enter bind password:password

    Processing subtree ou=test,dc=example,dc=com

    Deleting entry uid=test0,ou=test,dc=example,dc=com

    Deleting entry uid=test1,ou=test,dc=example,dc=com

    Deleting entry uid=test2,ou=test,dc=example,dc=com

    Deleting entry uid=test3,ou=test,dc=example,dc=com

    [...]

    Deleting entry ou=test,dc=example,dc=com

    Successfully deleted subtree ou=test,dc=example,dc=com

    %

此輸出會顯示與資料庫相關且必須移除的所有索引配置項目。完全刪除資料庫配置後,伺服器將移除與此尾碼相關的所有資料庫檔案及目錄。


建立鏈接尾碼

根尾碼與子尾碼都可以鏈接到其他伺服器,而且這兩個程序均可透過主控台或從指令行執行。

然而,在建立任何鏈接尾碼時,您應該在遠端伺服器上建立代理身份。本機伺服器在透過鏈接尾碼轉送作業時,會使用代理身份來連結遠端伺服器。

如果您使用完全一樣的參數配置許多鏈接尾碼,您也應該為新的鏈接尾碼設定鏈接參數的預設值。在建立鏈接尾碼前或後的任何時間,也可以設定 LDAP 控制項與伺服器元件的鏈接策略,如配置鏈接策略中所述。

建立代理身份

代理身份是遠端伺服器上的一個使用者,本機伺服器將使用它來連結及轉送鏈接作業。基於安全性的原因,目錄管理員或管理使用者 (admin) 絕不應該作為代理的身份。

而是應建立新的身份,此新身份專用於從指定伺服器執行鏈接作業。此身份應建立在即將鏈接的所有伺服器,以及在使用主控台建立鏈接尾碼使用主控台修改鏈接策略中定義的所有容錯移轉伺服器上。代理身份必須有鏈接尾碼的完全存取權。

使用主控台建立代理身份

此程序適用於與作為鏈接尾碼目標的遠端伺服器相連接的 Directory Server Console 上。

  1. 在 Directory Server Console 最上層的 [目錄] 標籤上,展開樹狀目錄。
  2. cn=config 項目上按一下滑鼠右鍵,再選取快顯功能表中的 [新增] > [使用者] 。或者,選取 cn=config 項目,再選擇 [物件] 功能表中 [新增] > [使用者] 項目。
  3. 在 [建立新使用者] 對話方塊的欄位中填入值,以描述代理身份,例如:
    • 名字:   proxy
      姓氏:   host1
      一般名稱:   host1 chaining proxy
      使用者 ID:   host1_proxy
      密碼:   password
      確認密碼:   password

      其中 host1 是包含鏈接尾碼的伺服器名稱。每一部有尾碼鏈接至此伺服器的伺服器都應該使用不同的代理身份。

  4. 按一下 [確定] 以儲存此新的代理身份。

從指令行建立代理身份

此程序使用 host1host2 分別代表包含鏈接尾碼的本機伺服器及作為鏈接尾碼目標的遠端伺服器。

  1. 使用下列指令在 host2 上建立代理身份:
  2. ldapmodify -a -h host2 -p port2 -D "cn=Directory Manager" -w password2
    dn:uid=host1_proxy,cn=config
    objectclass:top
    objectclass:person
    objectclass:organizationalPerson
    objectclass:inetorgperson
    uid:host1_proxy
    cn:host1 chaining proxy
    sn:host1
    userpassword:password
    description:proxy entry to be used for chaining from host1
    ^D


    小心

    您應該透過加密連接埠執行 ldapmodify 指令,以避免傳送純文字的密碼。


設定預設鏈接參數

鏈接參數會決定伺服器與鏈接伺服器的連線方式,以及伺服器在該鏈接尾碼上處理作業的方式。這些參數是在每個鏈接尾碼上配置。Directory Server 提供了每次建立鏈接尾碼時所用的預設值。您可以編輯這些預設值,以指定所有新鏈接尾碼上的鏈接參數。

每一個在修改預設參數後新建立的鏈接尾碼,都將使用您指定的值。然而,一旦建立尾碼之後,便只能依管理鏈接尾碼所述方式修改參數。

鏈接參數的屬性與預設值說明如下。如需允許值描述,請參閱 Directory Server Administration Reference

用戶端傳回參數

串級鏈接參數

連線管理參數

錯誤偵測參數

使用主控台設定預設鏈接參數

  1. 在 Directory Server Console 最上層的 [目錄] 標籤上,展開樹狀目錄,並選取下列項目:cn=default instance config,cn=chaining database, cn=plugins,cn=config
  2. 連按兩下此項目,或選取 [物件] > [以標準編輯器編輯] 功能表項目。修改上述清單中需要的屬性值。
  3. 按一下 [標準編輯器] 對話方塊中的 [儲存],變更將會立即生效。

從指令行設定預設鏈接參數

  1. 使用 ldapmodify 指令編輯 cn=default instance config,cn=chaining database,cn=plugins,cn=config 項目。此項目的所有屬性成為新鏈接尾碼中參數的預設值。
  2. 例如,下列指令會將新鏈接尾碼中的預設大小限制提高到 5000 個項目,並將預設時間限制降低為 10 分鐘:

    ldapmodify -h host -p port -D "cn=Directory Manager" -w password
    dn:cn=default instance config,cn=chaining database,
     cn=plugins,cn=config
    changetype:modify
    replace:nsslapd-sizelimit
    nsslapd-sizelimit: 5000
    -
    replace:nsslapd-timelimit
    nsslapd-timelimit: 600
    ^D

    對此項目的修改將立即生效。

使用主控台建立鏈接尾碼

下列程序幾乎與建立鏈接根尾碼和鏈接子尾碼的方式完全一樣:

  1. 選擇 Directory Server Console 的 [配置] 標籤。
    • 若是鏈接根尾碼,在 [資料] 節點上按一下滑鼠右鍵,再選取快顯功能表中的 [新增鏈接的尾碼]。或者,可以選取 [資料] 節點,再選擇 [物件] 功能表中的 [新增鏈接的尾碼]。
    • 若是鏈接子尾碼,展開 [資料] 節點與任何尾碼節點,以顯示父尾碼。在父尾碼節點上按一下滑鼠右鍵,再選取快顯功能表中的 [新增鏈接的子尾碼]。或者,可以選取父尾碼節點,再選擇 [物件] 功能表中的 [新增鏈接的子尾碼]。
    • 顯示 [新增鏈接的 (子) 尾碼] 對話方塊。

  2. 輸入要鏈接的遠端伺服器上項目的 DN。遠端項目不一定要是遠端尾碼的基礎項目:
    • 若是根尾碼,在 [尾碼 DN] 欄位中輸入遠端項目的完整 DN。可以輸入遠端樹狀目錄中項目的任何 DN。該項目將是鏈接根尾碼的基礎,而且該項目底下的任何項目均可透過鏈接尾碼取得。
    • 若是子尾碼,輸入即將鏈接之項目的子尾碼 RDN。該項目是鏈接子尾碼的基礎。顯示在文字欄位下的完整子尾碼名稱必須是存在於遠端伺服器上的項目。
  3. 輸入包含尾碼資料的遠端伺服器主機名稱 (必要時包含網域)。
  4. 輸入存取遠端伺服器的連接埠號碼,如果這是安全連接埠,也請選取該核取方塊。使用安全連接埠時,鏈接作業會透過 SSL 加密。如需詳細資訊,請參閱使用 SSL 進行鏈接
  5. 對話方塊下方的文字會顯示遠端伺服器的完整 URL。

  6. 輸入遠端伺服器上代理身份的連結 DN 與密碼。在遠端伺服器上存取尾碼內容時,本機伺服器會使用此 DN 作為代理。例如,使用建立代理身份中定義的 uid=host1_proxy,cn=config DN。
  7. 您無法使用遠端伺服器上目錄管理員的 DN。透過鏈接尾碼執行的作業將在 creatorsNamemodifiersName 屬性中使用此代理身份。可以不使用代理 DN,如此一來,本機伺服器在存取遠端伺服器時將以匿名方式連結。

  8. 按一下 [確定] 以建立鏈接尾碼。新尾碼會出現在配置樹狀目錄中,並包含鏈接的圖示。
  9. 按一下新的鏈接尾碼以選取之,並選取右面板中的 [遠端伺服器] 標籤。
  10. 可以選擇性地為此鏈接尾碼定義一或多部容錯移轉伺服器。如果伺服器無法聯絡遠端伺服器,它會依定義的順序逐一嘗試容錯移轉伺服器,直到其中一部伺服器回應為止。容錯移轉伺服器必須包含與被鏈接尾碼相同的尾碼,而且允許相同的連結 DN 作為代理。
  11. 若要定義容錯移轉伺服器,請在 [遠端伺服器 URL] 欄位中輸入更多配對的主機名稱與連接埠號碼,並以空格分隔。此欄位的格式如下:

    ldap[s]://hostname[:port][ hostname[:port]].../

  12. 在 [遠端伺服器] 標籤底端,文字方塊會顯示允許透過鏈接執行代理作業所需的 ACI。必須將此 ACI 加入遠端伺服器上包含 suffixDN 的項目。如果您曾經定義任何容錯移轉伺服器,便應該將此 ACI 加入所有容錯移轉伺服器。使用 [複製 ACI] 按鈕可將 ACI 文字複製到您用來貼上的系統剪貼簿。
  13. 將此 ACI 加入遠端伺服器上的基礎項目後,鏈接尾碼便會顯示在本機伺服器的樹狀目錄中。


    小心

    您可能需要在同一個項目上定義其他 ACI,以限制存取目前透過鏈接公開的遠端伺服器。請參閱透過鏈接尾碼的存取控制


  14. 如果已經配置伺服器元件的鏈接策略,則必須也加入允許這些元件存取遠端伺服器的 ACI。例如,如果允許鏈接參考完整性外掛程式,則必須將下列 ACI 加入步驟 2 中所指定之 DN 的基礎項目:
  15. aci:(targetattr "*")
     (target="ldap:///suffixDN")
     (version 3.0; acl "RefInt Access for chaining"; allow
     (read,write,search,compare) userdn = "ldap:///cn=referential
     integrity postoperation,cn=plugins,cn=config";)

從指令行建立鏈接尾碼

也可以用 ldapmodify 指令行公用程式在您的目錄中建立鏈接尾碼。由於伺服器內部是以相同的方式管理鏈接根尾碼與鏈接子尾碼,因此從指令行建立這兩種尾碼的程序幾乎完全相同。

  1. 對於鏈接根尾碼,使用下列指令在 cn=mapping tree,cn=config 下建立鏈接尾碼項目:
  2. ldapmodify -a -h host -p port -D "cn=Directory Manager" -w password
    dn:cn=suffixDN,cn=mapping tree,cn=config
    objectclass:top
    objectclass:extensibleObject
    objectclass:nsMappingTree
    cn:suffixDN
    nsslapd-state:backend
    nsslapd-backend:databaseName
    ^D

    對於鏈接子尾碼,請使用相同的指令,再加上下列屬性:
    nsslapd-parent-suffix:parentSuffixDN

    若是鏈接子尾碼,suffixDN 是子尾碼的 RDN,及其父尾碼的 DN,例如 l=Europe,dc=example,dc=comsuffixDN 必須是可透過遠端伺服器取得之項目的 DN,但不一定要是遠端尾碼的基礎項目。

    尾碼名稱為 DN 格式,不過視為單一字串。因此,所有的空格都有意義,而且均為尾碼名稱的一部分。為了讓伺服器能夠存取遠端項目,suffixDN 字串必須遵照遠端尾碼中所使用相同的空格用法。

    databaseName 由鏈接外掛程式元件用以識別此鏈接尾碼。在所有尾碼的 databaseNames 中,名稱必須是唯一的,而且在慣例上,它是 suffixDN 的第一個命名元件值。鏈接尾碼與本機尾碼不同,鏈接尾碼在本機伺服器上沒有任何資料庫檔案。

    若是子尾碼,parentSuffixDN 為父尾碼真正的 DN。父尾碼可以是本機尾碼或鏈接尾碼。

  3. 使用下列指令建立鏈接配置項目:
  4. ldapmodify -a -h host -p port -D "cn=Directory Manager" -w password
    dn:cn=databaseName,cn=chaining database,cn=plugins,cn=config
    objectclass:top
    objectclass:extensibleObject
    objectclass:nsBackendInstance
    cn:databaseName
    nsslapd-suffix:suffixDN
    nsfarmserverurl:LDAPURL
    nsmultiplexorbinddn:proxyDN
    nsmultiplexorcredentials:ProxyPassword
    ^D

    其中 databaseNamesuffixDN 必須擁有與先前步驟中所使用的值相同的值。LDAPURL 是遠端伺服器的 URL,但不包括任何尾碼資訊。URL 可以包含以下列格式列示的容錯移轉伺服器:

    ldap[s]://hostname[:port][ hostname[:port]].../

    LDAP URL 中所列的所有遠端伺服器都必須包含 suffixDN。如需關於指定安全連接埠的資訊,請參閱使用 SSL 進行鏈接

    proxyDN 是遠端伺服器上代理身份的 DN。在遠端伺服器上存取尾碼內容時,本機伺服器會使用此 DN 作為代理。透過鏈接尾碼執行的作業將在 creatorsNamemodifiersName 屬性中使用此代理身份。如果沒有指定代理 DN,當存取遠端伺服器時,本機伺服器會匿名連結。

    ProxyPassword 是代理 DN 密碼的非加密值。當密碼儲存在配置檔時,系統會將密碼加密。例如:

    nsmultiplexorbinddn:uid=host1_proxy,cn=config
    nsmultiplexorcredentials:secret


    小心

    您應該透過加密連接埠執行 ldapmodify 指令,以避免傳送純文字的密碼。


    新項目會自動包含所有鏈接參數,與在 cn=default instance config, cn=chaining database,cn=plugins,cn=config 中定義的預設值。您可以在建立鏈接配置項目時使用不同的值設定參數,以覆寫任何預設值。如需可定義值的屬性清單,請參閱設定預設鏈接參數

  5. 使用下列指令在遠端項目上建立 ACI。必須有此 ACI 才能透過鏈接執行代理作業。如需關於 ACI 的詳細資訊,請參閱第 6 章「管理存取控制」
  6. ldapmodify -h host2 -p port2 -D "cn=Directory Manager" -w password2
    dn:suffixDN
    changetype:modify
    add:aci
    aci:(targetattr=*)(target = "ldap:///suffixDN")(version 3.0;acl
     "Allows use of admin for chaining"; allow (proxy)
     (userdn="ldap:///proxyDN");)
    ^D


    小心

    您可能需要在同一個項目上定義其他 ACI,以限制存取目前透過此伺服器公開的遠端伺服器。請參閱透過鏈接尾碼的存取控制


  7. 如果已經配置伺服器元件的鏈接策略,則必須也加入允許這些元件存取遠端伺服器的 ACI。例如,如果允許鏈接參考完整性外掛程式,則必須將下列 ACI 加入包含 suffixDN 的基礎項目:
  8. aci:(targetattr "*")
     (target="ldap:///suffixDN")
     (version 3.0; acl "RefInt Access for chaining"; allow
     (read,write,search,compare) userdn = "ldap:///cn=referential
     integrity postoperation,cn=plugins,cn=config";)

下列指令為建立鏈接子尾碼的範例。請注意,只有當 DN 的命名屬性中出現逗點時,suffixDN 中的逗點才必須用反斜線 (\) 忽略掉。

ldapmodify -a -h host1 -p port1 -D "cn=Directory Manager" -w password1
dn:cn=l=Europe\,dc=example\,dc=com,cn=mapping tree,cn=config
objectclass:top
objectclass:extensibleObject
objectclass:nsMappingTree
cn:l=Europe,dc=example,dc=com
nsslapd-state:backend
nsslapd-backend:Europe
nsslapd-parent-suffix:dc=example,dc=com

dn:cn=Europe,cn=chaining database,cn=plugins,cn=config
objectclass:top
objectclass:extensibleObject
objectclass:nsBackendInstance
cn:Europe
nsslapd-suffix:l=Europe,dc=example,dc=com
nsfarmserverurl:ldap://host2:port2/
nsmultiplexorbinddn:uid=host1_proxy,cn=config
nsmultiplexorcredentials:proxyPassword
^D

ldapmodify -h host2 -p port2 -D "cn=Directory Manager" -w password2
dn:l=Europe,dc=example,dc=com
changetype:modify
changetype:modify
aci:(targetattr=*)(target =
 "ldap:///l=Europe,dc=example,dc=com")(version 3.0;acl
 "Allows use of admin for chaining"; allow (proxy)
 (userdn="ldap:///uid=host1_proxy,cn=config");)
^D

透過鏈接尾碼的存取控制

當驗證使用者存取鏈接尾碼時,伺服器會傳送使用者的身份給遠端伺服器。存取控制總是在遠端伺服器上評估。在遠端伺服器上評估的每一個 LDAP 作業都使用用戶端應用程式原始身份,此身份是透過代理驗證控制項所傳送。只有當使用者對遠端伺服器上包含的樹狀子目錄擁有正確的存取控制時,在遠端伺服器 上的作業才會成功。這表示,您必須將一般的存取控制加入到遠端伺服器上,並加上一些限制:

下列限制適用於為了使用鏈接尾碼而建立的 ACI:

雖然存取控制總是在遠端伺服器上評估,但您也可以選擇讓它們在包含鏈接尾碼的伺服器與遠端伺服器上都進行評估。這會有幾項限制:

依預設值,不會評估在包含鏈接尾碼的伺服器上設定的存取控制。若要覆寫此預設值,請使用 cn=databaseName,cn=chaining database,cn=plugins,cn=config 項目中的 nsCheckLocalACI 屬性。除非使用串級鏈接,否則並不建議在包含鏈接尾碼的伺服器上評估存取控制。如需詳細資訊,請參閱配置串級鏈接

使用 SSL 進行鏈接

您可以配置伺服器在鏈接尾碼上執行作業時,會使用 SSL 與遠端伺服器進行通訊。在鏈接中使用 SSL 需要下列步驟:

  1. 在遠端伺服器上啟用 SSL。
  2. 在包含鏈接尾碼的伺服器上啟用 SSL。
  3. 如需關於啟用 SSL 的詳細資訊,請參閱第 11 章「管理驗證和加密」

  4. 在建立或修改鏈接尾碼的程序中,指定遠端伺服器的 SSL 與安全連接埠。
  5. 使用主控台時,在鏈接尾碼建立或配置程序中選取安全連接埠的核取方塊。請參閱使用主控台建立鏈接尾碼使用主控台修改鏈接策略

    使用指令行程序時,指定遠端伺服器的 LDAPS URL 與安全連接埠,例如:ldaps://example.com:636/。請參閱從指令行建立鏈接尾碼從指令行修改鏈接策略

當您配置鏈接尾碼與遠端伺服器使用 SSL 進行通訊時,並不表示執行該作業要求的用戶端應用程式也必須使用 SSL 進行通訊。用戶端可能使用 LDAP 或 DSML 通訊協定的連接埠。


管理鏈接尾碼

本節說明更新與刪除現有鏈接尾碼的方式,以及控制鏈接機制的方式。

配置鏈接策略

伺服器的鏈接策略會決定哪些 LDAP 控制項將會傳給鏈接伺服器,允許哪些伺服器元件存取鏈接尾碼。您應該知道這些設定值及其對涉及鏈接尾碼的作業有何影響。鏈接策略適用於伺服器上的所有鏈接尾碼。

預設的設定值是要讓正常作業能夠透明地完成。然而,如果您的作業涉及 LDAP 控制項,或您使用如參考完整性外掛程式這一類的伺服器元件時,您應該確定鏈接策略是依據您的需要所配置的。

鏈接策略的配置最好是在建立任何鏈接尾碼之前進行,則在一啟用鏈接尾碼時,便會立即套用該策略。但之後您也可以隨時修改策略。

LDAP 控制項的鏈接策略

用戶端會將 LDAP 控制項當成要求的一部分來傳送,以便能使用某種方式修改作業或其結果。伺服器鏈接策略可決定伺服器會連同作業一併轉送給鏈接尾碼的控制項。依預設值,會轉送下列控制項給鏈接尾碼的遠端伺服器:

表 3-1 預設允許鏈接的 LDAP 控制項 

控制項 OID

控制項的名稱和描述

1.2.840.113556.1.4.473

伺服器端排序 - 與搜尋相關聯,會依據項目的屬性值將產生的項目排序。1

1.3.6.1.4.1.1466.29539.12

鏈接迴圈偵測 - 追蹤伺服器與另一部伺服器鏈接的次數。當計數到到達配置的數字時,便會放棄作業,並通知用戶端應用程式。如需詳細資訊,請參閱傳送串級的 LDAP 控制項

2.16.840.1.113730.3.4.2

智慧型參照的受管理 DSA - 將智慧型參照當成項目傳回,而不追蹤參照。這讓您能夠變更或刪除智慧型參照本身。

2.16.840.1.113730.3.4.9

虛擬清單檢視 (VLV) - 提供搜尋的部分結果,而不一次傳回所有產生的項目。1

1只有當搜尋範圍是單一尾碼時,才支援透過鏈接來使用伺服器端排序與 VLV 控制項。當用戶端應用程式對多個尾碼提出要求時,鏈接尾碼無法支援 VLV 控制項。

下表列出可以藉由配置鏈接策略而允許鏈接的其他 LDAP 控制項:

表 3-2 可鏈接的 LDAP 控制項 

控制項 OID

控制項的名稱和描述

1.3.6.1.4.1.42.2.27.9.5.2

取得有效權利要求 - 要求伺服器傳回與結果中的項目及屬性相關的存取權限與 ACI 資訊。

2.16.840.1.113730.3.4.12

受代理的驗證 (舊規格) - 允許用戶端在要求持續期間內承擔另一個身份。1

2.16.840.1.113730.3.4.14

搜尋特定資料庫 - 用於搜尋作業,以指定必須在控制項所指名的資料庫上完成搜尋。

2.16.840.1.113730.3.4.16

驗證識別要求控制 - 允許用戶端要求在連線連結中建立的連結 DN 或 userAuthID。例如,當使用 SASL External 及 SSL 時,它允許用戶端知道取得憑證所需項目的 DN。

2.16.840.1.113730.3.4.17

僅限於真實屬性的要求 - 表示伺服器只應傳回真正包含於傳回項目內且不必解析虛擬屬性的屬性。

2.16.840.1.113730.3.4.18

受代理的驗證 (新規格) - 允許用戶端在要求持續期間內承擔另一個身份。1

2.16.840.1.113730.3.4.19

僅限於虛擬屬性的要求 - 表示伺服器只應傳回由角色或服務類別功能所產生的屬性。

1應用程式可對受代理的驗證使用任一種控制項。這些 OID 應該採用相同的鏈接策略。如需詳細資訊,請參閱傳送串級的 LDAP 控制項

伺服器元件的鏈接策略

元件是指使用內部作業的任何伺服器功能或功能單位。例如,外掛程式被視為元件。為執行元件的工作,大部分元件必須存取目錄內容 (如配置資料或儲存在目錄中的使用者資料)。

依預設值,任何伺服器元件都不允許鏈接。如果要元件存取鏈接尾碼,您必須明確允許鏈接。可存取鏈接資料的元件依其 DN 列示於下。

使用主控台建立鏈接尾碼中所述,必須在遠端伺服器上的 ACI 中授與某些權限,以允許鏈接。當鏈接伺服器元件時,必須在此 ACI 中允許搜尋、讀取與比較,使伺服器元件可以執行這些作業。不僅如此,某些元件還需要遠端伺服器的寫入權限,如清單中的說明:

使用主控台修改鏈接策略

  1. 在 Directory Server Console 的 [配置] 標籤上,選取 [資料] 節點,並在右面板中選取 [鏈接] 標籤。
  2. 從右邊的清單中選取一或多個 LDAP 控制項,再按一下 [加入] 以允許鏈接。使用 [加入] 與 [刪除] 按鈕,建立允許鏈接的控制項清單。
  3. LDAP 控制項依其 OID 列示。如需每個控制項的名稱與描述,請參閱 LDAP 控制項的鏈接策略

  4. 允許鏈接的伺服器元件會列在同一標籤下方。請從右邊的清單中選取一或多個元件名稱,再按一下 [加入] 以允許鏈接。使用 [加入] 與 [刪除] 按鈕,建立允許鏈接的元件清單。
  5. 如需每個元件的描述,請參閱伺服器元件的鏈接策略

  6. 按一下 [儲存] 以儲存鏈接策略。
  7. 重新啟動伺服器,使變更生效。

從指令行修改鏈接策略

cn=config,cn=chaining database,cn=plugins,cn=config 項目包含鏈接策略配置的屬性。使用 ldapmodify 指令可編輯此項目:

  1. 修改多重值的 nsTransmittedControls 屬性,使它包含允許鏈接之所有 LDAP 控制項的 OID。如需可鏈接的所有控制項 OID,請參閱 LDAP 控制項的鏈接策略
  2. 例如,下列指令在鏈接控制項清單中加入有效權限控制項:

    ldapmodify -h host -p port -D "cn=Directory Manager" -w password
    dn:cn=config,cn=chaining database,cn=plugins,cn=config
    changetype:modify
    add:nsTransmittedControls
    nsTransmittedControls: 1.3.6.1.4.1.42.2.27.9.5.2
    ^D

    如果用戶端應用程式使用自訂控制項,而且您希望允許它們鏈接,您也可以將其 OID 加入 nsTransmittedControls 屬性。

  3. 修改多重值的 nsActiveChainingComponents 屬性,使它包含允許鏈接之所有伺服器元件的 DN。如需每個元件的描述,請參閱伺服器元件的鏈接策略
  4. 例如,下列指令在鏈接元件清單中加入參考完整性元件:

    ldapmodify -h host -p port -D "cn=Directory Manager" -w password
    dn:cn=config,cn=chaining database,cn=plugins,cn=config
    changetype:modify
    add:nsActiveChainingComponents
    nsActiveChainingComponents:cn=referential integrity
     postoperation,cn=components,cn=config
    ^D

  5. 修改鏈接策略配置項目後,必須重新啟動伺服器使變更生效。

停用或啟用鏈接尾碼

有時候為了進行維護,或基於安全性的原因,可能必須將尾碼設為無法使用。停用尾碼可阻止伺服器為回應嘗試存取該尾碼的任何用戶端作業,而聯絡遠端伺服器。如果已定義了預設參照,當用戶端嘗試存取停用的尾碼時,會傳回該參照。

使用主控台停用或啟用鏈接尾碼

  1. 在 Directory Server Console 最上層的 [配置] 標籤上,展開 [資料] 節點,再選取要停用的鏈接尾碼。
  2. 在右面板中,選取 [設定值] 標籤。依預設值,所有鏈接尾碼都會在建立時啟用。
  3. 取消選取 [啟用存取此尾碼] 核取方塊可停用尾碼,或選取此核取方塊可將其啟用。
  4. 按一下 [儲存] 可套用變更,並可立即停用或啟用該尾碼。
  5. 或者,可設定全域預設參照,此參照在停用的同時,也會針對此尾碼上的所有作業而傳回。此設定值位於最上層 [配置] 標籤的根節點 [網路] 標籤上。如需詳細資訊,請參閱使用主控台設定預設參照

從指令行停用或啟用尾碼

  1. 用下列指令編輯鏈接尾碼項目中的 nsslapd-state 屬性:
  2. ldapmodify -h host -p port -D "cn=Directory Manager" -w password
    dn:cn=suffixDN,cn=mapping tree,cn=config
    changetype:modify
    replace:nsslapd-state
    nsslapd-state:disabled or backend
    ^D

    其中 suffixDN 是定義尾碼 DN 時完整的字串,包括任何空格或反斜線 (\) 以忽略掉值中的逗點。將 nsslapd-state 屬性設定為值 disabled 可停用尾碼,設定為值 backend 可啟用完整存取。

    當指令成功時,會立即停用尾碼。

  3. 或者,可設定全域預設參照,此參照在停用的同時,也會針對此尾碼上的所有作業而傳回。如需詳細資訊,請參閱從指令行設定預設參照

設定存取權限及參照

如果不要完全停用鏈接尾碼,只要限制其存取,您可以修改存取權限,以允許唯讀存取。此時,必須為寫入作業的另一部伺服器定義參照。您也可以拒絕讀取和寫入存取,並為尾碼上的所有作業定義參照。

如需更多關於參照的一般性資訊,請參閱 Directory Server Deployment Planning Guide

使用主控台設定存取權限和參照

  1. 在 Directory Server Console 最上層的 [配置] 標籤上,展開 [資料] 節點,再選取要設定參照的鏈接尾碼。
  2. 在右面板中,選取 [設定值] 標籤。如果啟用鏈接的尾碼,則只能設定權限和參照。
  3. 請選取下列其中一個選項按鈕,設定回覆給此尾碼項目上的任何寫入作業:
    • 處理寫入和讀取要求 - 預設狀態下會選取此選項按鈕,它代表正常的行為。系統會將讀取與寫入作業轉送給遠端伺服器,而將結果傳回用戶端。系統可能會定義參照,但是不會傳回參照至用戶端。
    • 處理讀取要求,並傳回寫入要求的參照 - 伺服器將只轉送讀取要求,並將結果傳回給用戶端。請在清單中輸入一個或多個 LDAP URL,作為寫入要求傳回的參照。
    • 傳回讀取和寫入要求的參照 - 在清單中輸入一個或多個 LDAP URL,作為所有作業傳回的參照。此行為與停用尾碼的存取相似,不同處是會特別針對此尾碼定義參照,而不是使用全域預設參照。
  4. 使用 [加入] 與 [移除] 按鈕編輯參照清單。按一下 [加入] 按鈕會顯示建立新參照之 LDAP URL 的對話方塊。可對遠端伺服器中任何分支的 DN 建立參照。如需關於 LDAP URL 結構的詳細資訊,請參閱 Directory Server Administration Reference
  5. 可輸入多個參照。目錄會傳回此清單的所有參照,回應來自用戶端應用程式的要求。

  6. 按一下 [儲存] 可套用您的變更,並且立即開始強制執行新的權限和參照設定值。

使用主控台設定存取權限和參照

在下列指令中,suffixDN 是定義鏈接尾碼時完整的字串,包括任何空格。LDAPURL 為有效的 URL,其中包含主機名稱、連接埠號碼及目標 DN,例如:

ldap://alternate.example.com:389/ou=People,dc=example,dc=com

  1. 使用下列指令編輯鏈接尾碼項目:
  2. ldapmodify -h host -p port -D "cn=Directory Manager" -w password
    dn:cn=suffixDN,cn=mapping tree,cn=config
    changetype:modify
    replace:nsslapd-state
    nsslapd-state:referral on update or referral
    -
    add:nsslapd-referral
    nsslapd-referral:LDAPURL
    ^D

    可重複最後的變更敘述,將任何數量的 LDAP URL 加入 nsslapd-referral 屬性。

    當 nsslapd-state 值為 referral on update 時,該尾碼為唯讀,而且會傳回所有的 LDAP URL 作為寫入作業的參照。當值為 referral 時,會拒絕讀取與寫入兩項作業,而且會針對任何要求傳回參照。

  3. 尾碼會變成唯讀或無法存取,當指令成功時,會立即準備好傳回參照。

修改鏈接參數

定義鏈接尾碼後,您可以修改控制鏈接的參數。可以指定如何存取遠端伺服器、變更代理所用的 DN 或甚至變更遠端伺服器。您也可以修改效能參數,以控制伺服器建立與維護鏈接伺服器連線的方式。

使用主控台修改鏈接參數

  1. 在 Directory Server Console 最上層的 [配置] 標籤上,展開 [資料] 節點,再選取要修改的鏈接尾碼。
  2. 在右面板中,選取 [遠端伺服器] 標籤。
  3. 若要變更遠端伺服器的名稱或連接埠,請修改 [遠端伺服器 URL] 欄位。URL 包含一或多個遠端伺服器的主機名稱與選用連接埠號碼,並採用下列格式:
  4. ldap[s]://hostname[:port][ hostname[:port]].../

    URL 不包含任何尾碼資訊。如需關於指定安全連接埠的資訊,請參閱使用 SSL 進行鏈接。當第一部伺服器無法回應鏈接尾碼時,會依照列示的順序來聯絡 URL 中的伺服器。LDAP URL 中所列示的所有遠端伺服器都必須包含 suffixDN,其為鏈接尾碼的基礎項目。

  5. 若要變更代理使用者的 DN,請在 [連結 DN] 欄位中輸入新值。在密碼欄位中輸入與確認此 DN 對應的密碼。
  6. proxyDN 是遠端伺服器上使用者的 DN。在遠端伺服器上存取尾碼內容時,本機伺服器會使用此 DN 作為代理。透過鏈接尾碼執行的作業將在 creatorsNamemodifiersName 屬性中使用此代理身份。如果沒有指定代理 DN,當存取遠端伺服器時,本機伺服器會匿名連結。

  7. 標籤底端的文字方塊顯示允許此尾碼鏈接所需的 ACI。如果變更過遠端伺服器的 URL,您必須在新的遠端伺服器 (一台或多台) 上包含 suffixDN 的項目中加入此 ACI。如果修改過代理 DN,您應該更新所有鏈接伺服器上的 ACI。使用 [複製 ACI] 按鈕可將 ACI 文字複製到您用來貼上的系統剪貼簿。
  8. 選取 [限制與控制項] 標籤,以配置鏈接要求的參數。串級鏈接參數會於配置串級鏈接中說明。
  9. 設定 [控制用戶端傳回] 參數以限制鏈接作業的大小與時間:
    • 領域搜尋傳回參照 - 範圍完全在鏈接尾碼內的搜尋是沒有效率的,因為會傳送結果兩次。依預設值,伺服器將改為傳回鏈接伺服器的參照,強迫用戶端直接在鏈接伺服器上執行搜尋。如果取消選取此選項,您應該設定下列參數,以限制即將鏈接的結果大小。
    • 大小限制或無大小限制 - 此參數會決定在回應鏈接搜尋作業時會傳回的項目數。預設大小限制為 2000 個項目。如果想要限制涉及鏈接尾碼的廣泛搜尋,請將此參數設定為低值。在任何情況下,遠端伺服器上所有的大小設定值均會限制該作業。
    • 時間限制或無時間限制 - 此參數控制鏈接作業的時間長度。預設時間限制為 3600 秒 (1 個小時)。如果想要限制允許在鏈接尾碼上作業的時間,請將此參數設定為低值。在任何情況下,遠端伺服器上所有的時間設定值均會限制該作業。
  10. 設定 [連線管理] 參數以控制伺服器如何管理網路連線,以及與遠端伺服器的連結:
    • 最大 LDAP 連線數。鏈接尾碼可同時與遠端伺服器建立之 LDAP 作業連線數的最大值。預設值是連線 10 次。
    • 最大連結連線數。鏈接尾碼可同時與遠端伺服器建立之連結連線數的最大值。預設值是連線 3 次。
    • 每次連線最大連結數。每個 LDAP 連線同時連結作業數的最大值。預設值為每個連線有 10 個未執行連結作業。
    • 最大連結重試數。與遠端伺服器連結失敗後,鏈接尾碼將嘗試重新連結的次數。0 值代表鏈接的尾碼只會嘗試連結一次。預設值是嘗試 3 次。
    • 每次連線最大作業數。每個 LDAP 連線同時作業數的最大值。預設值為每個連線有 10 個作業。
    • 連結逾時或無連結逾時。與鏈接尾碼的連結嘗試逾時之前的時間長度 (以秒為單位)。預設值為 15 秒。
    • 放棄前逾時或無逾時。伺服器檢查作業是否已被放棄之前的秒數。預設值為 2 秒。
    • 連線存留時間或無限制。鏈接尾碼與遠端伺服器之間的連線維持開啟,以便可以重複使用的時間長度。維持連線開啟會較為快速,但會使用較多的資源。例如,如果您正使用撥接連線,您可能會想要限制連線的時間。預設值為連線沒有限制。
    • 透過主控台無法設定錯誤偵測參數。請參閱從指令行修改鏈接參數

  11. 完成設定鏈接參數後按一下 [儲存]。

從指令行修改鏈接參數

從指令行,您不僅可以設定使用主控台時所設定的參數,還可以配置錯誤偵測參數中所述的其他參數:

  1. 使用下列指令編輯要修改之尾碼對應的鏈接配置項目:
  2. ldapmodify -h host -p port -D "cn=Directory Manager" -w password
    dn:cn=databaseName,cn=chaining database,cn=plugins,cn=config
    changetype:modify
    replace:attributeName
    attributeName:attributeValue
    -
    replace:attributeName2
    attributeName2:attributeValue2
    ...
    ^D

    可能的屬性名稱與值將於下列步驟中說明。可以在指令中包含數個變更敘述,以便能夠一次變更任何數目的參數。

  3. 修改 nsfarmserverURL 屬性可變更遠端伺服器的名稱或連接埠。其值是 URL,其中包含一或多個遠端伺服器的主機名稱與選用連接埠,並採用下列格式:
  4. ldap[s]://hostname[:port][ hostname[:port]].../

    URL 不包含任何尾碼資訊。如需關於指定安全連接埠的資訊,請參閱使用 SSL 進行鏈接。當第一部伺服器無法回應鏈接尾碼時,會依照列示的順序來聯絡 URL 中的伺服器。LDAP URL 中所列示的所有遠端伺服器都必須包含 suffixDN,其為鏈接尾碼的基礎項目。

  5. 修改 nsmultiplexorBindDNnsmultiplexorCredentials 屬性可變更代理存取遠端伺服器時所用的 DN。
  6. 在遠端伺服器上存取尾碼內容時,本機伺服器會使用此 DN 作為代理。透過鏈接尾碼執行的作業將在 creatorsNamemodifiersName 屬性中使用此代理身份。如果沒有指定代理 DN,當存取遠端伺服器時,本機伺服器會匿名連結。

  7. 如果修改代理 DN 或其認證,則必須在遠端伺服器上建立對應的 ACI。系統必須有此 ACI 才能透過鏈接執行代理作業:
  8. ldapmodify -h host2 -p port2 -D "cn=Directory Manager" -w password2
    dn:suffixDN
    changetype:modify
    add:aci
    aci:(targetattr=*)(target = "ldap:///suffixDN")(version 3.0;acl
     "Allows use of admin for chaining"; allow (proxy)
     (userdn="ldap:///proxyDN");)
    ^D

  9. 設定設定預設鏈接參數中所述的任何屬性,以控制遠端伺服器上連線與作業的處理方式。串級參數將進一步於配置串級鏈接中說明。

最佳化執行緒用法

也可以設定伺服器全域使用的執行緒數目,以考慮鏈接所用 的執行緒資源。由於鏈接作業必須轉送到遠端伺服器,因此作業所需的時間可能長很多,但是當遠端伺服器正在處理作業時其執行緒會保持閒置。如果您的鏈接伺服 器有相當長的延遲,您應該提高執行緒數目,以便能夠同時處理更多的本機作業。

依預設值,伺服器所用的執行緒數目是 30,但是在使用鏈接尾碼時,您可以提高處理作業可用的執行緒數目,以改善效能。您需要的執行緒數目須視鏈接尾碼數、在鏈接尾碼上的作業數目與類型,以及於遠端伺服器上處理作業所需的平均時間而定。

一般而言,每一個鏈接尾碼應增加 5 到 10 個執行緒,這是假設在鏈接尾碼上執行的作業數與本機尾碼一樣。

使用主控台設定執行緒資源

  1. 在 Directory Server Console 最上層的 [配置] 標籤上,按一下 [效能] 節點,並在右面板中選取 [其他] 標籤。
  2. 為 [執行緒的最大數量] 欄位輸入新值。
  3. 按一下 [確定] 以儲存變更,並確認您必須重新啟動伺服器後變更才會生效的訊息。
  4. 重新啟動目錄伺服器以使用執行緒的新號碼。

從指令行設定執行緒資源

  1. 使用下列指令編輯全域配置項目,以修改執行緒數目:
  2. ldapmodify -h host -p port -D "cn=Directory Manager" -w password
    dn:cn=config
    changetype:modify
    replace:nsslapd-threadnumber
    nsslapd-threadnumber:newThreadNumber
    ^D

  3. 重新啟動目錄伺服器以使用執行緒的新號碼。

刪除鏈接尾碼

刪除鏈接尾碼後,會使得該鏈接尾碼無法透過本機樹狀目錄存取,但不會刪除鏈接伺服器上的項目或尾碼。可刪除父尾碼,並在目錄中保留其子尾碼作為新的根尾碼。

使用主控台刪除鏈接尾碼

  1. 在 Directory Server Console 的 [配置] 標籤上,展開 [資料] 節點。
  2. 在想要移除的尾碼上按一下滑鼠右鍵,再選取快顯式功能表中的 [刪除]。
  3. 或者,可以選取尾碼節點,再選擇 [物件] 功能表中的 [刪除]。

  4. 顯示確認對話方塊,通知您可透過此鏈接尾碼存取的項目不會從遠端目錄中移除。
  5. 除了父尾碼以外,也可以選擇遞迴的刪除所有其子尾碼。如果要移除整個分支,請選取 [刪除此尾碼及其所有子尾碼]。相反的,如果只要移除特定的尾碼,並在目錄中保留其子尾碼,請選取 [僅刪除此尾碼]。

  6. 按一下 [確定] 刪除該尾碼。
  7. 顯示進度對話方塊,告訴您主控台已經完成步驟。

從指令行刪除尾碼

若要從指令行刪除尾碼,請使用 ldapdelete 指令移除目錄中的配置項目。

如果想要刪除包含子尾碼的整個分支,必須尋找已刪除父項的子尾碼,並對每個子尾碼及其可能的子尾碼重複該程序。

  1. 使用下列指令移除尾碼配置項目:
  2. ldapdelete -h host -p port -D "cn=Directory Manager" -w password
    cn=suffixDN,cn=mapping tree,cn=config

    此指令會使鏈接尾碼及其遠端項目不再顯示在目錄中。

  3. 移除位在 cn=databaseName,cn=chaining database,cn=plugins,cn=config 中對應的資料庫配置項目,及其下的監控項目:
  4. ldapdelete -h host -p port -D "cn=Directory Manager" -w password
    cn=monitor,cn=dbName,cn=chaining database,cn=plugins,cn=config
    cn=dbName,cn=chaining database,cn=plugins,cn=config


配置串級鏈接

在串級鏈接中,與一部伺服器鏈接的樹狀子目錄本身可以是 鏈接尾碼或包含鏈接子尾碼。當作業涉及一部伺服器中的鏈接尾碼時,系統會將此作業轉送到中介伺服器,該伺服器會聯絡第三部伺服器,依此類推。在存取樹狀目 錄中的所有資料時,若需要經過伺服器之間一次以上的躍點,便會發生串級鏈接。

例如,下圖顯示存取 ou=People,l=Europe,dc=example,dc=com 項目時是如何從伺服器 A 鏈接到伺服器 B,最後再到伺服器 C。伺服器 A 包含根尾碼 dc=example,dc=com,以及連到伺服器 B 上 l=Europe,dc=example,dc=com 分支的鏈接子尾碼。伺服器 B 包含 l=Europe,dc=example,dc=com 項目,但 ou=People,l=Europe,dc=example,dc=com 分支是連到伺服器 C 的鏈接子尾碼。伺服器 C 則實際包含 ou=People,l=Europe,dc=example,dc=com 項目

圖 3-1 有三部伺服器的串級鏈接

設定串級參數

有兩個鏈接參數可配置串級作業:

使用主控台設定串級參數

  1. 在 Directory Server Console 最上層的 [配置] 標籤上,展開 [資料] 節點,再選取要修改的鏈接尾碼。
  2. 在右面板中,選取 [限制與控制項] 標籤,此處可修改 [串級鏈接] 參數。
  3. 在串級鏈接的所有中介伺服器上,選取該核取方塊以檢查本機 ACI。
  4. 在單一階層鏈接期間,不會選取此核取方塊,因為使用者的存取權限不會在第一部伺服器上評估,而是在透過代理的第二部伺服器上進行。但是,在串級鏈接的中介伺服器上,您必須啟用 ACI 檢查,以允許執行存取控制,之後再將作業轉送。

  5. 在串級鏈接的所有伺服器上,設定您的拓樸中所有鏈接作業允許的最大躍點數。同一個作業每轉送到另一個鏈接尾碼就算一次躍點,如果到達限制,鏈接尾碼將不再轉送該作業。
  6. 您所設定的數目應該大於串級鏈接最長的躍點數。任何達到限制的作業都會中止,因為伺服器會假設這是拓樸中意外的迴圈。

    也必須設定鏈接配置以允許迴圈偵測控制,如傳送串級的 LDAP 控制項中所述。

  7. 完成設定串級參數後,按一下 [儲存]。

從指令行設定串級參數

  1. 在所有中介伺服器上,使用下列指令編輯鏈接尾碼的鏈接配置項目:
  2. ldapmodify -h host -p port -D "cn=Directory Manager" -w password
    dn:cn=databaseName,cn=chaining database,cn=plugins,cn=config
    changetype:modify
    replace:nsCheckLocalACI
    nsCheckLocalACI:on
    -
    changetype:modify
    replace:nsHopLimit
    nsHopLimit:maximumHops
    ^D

    您應該將 maximumHops 設為大於串級鏈接中最長的躍點數。任何達到限制的作業都會中止,因為伺服器會假設這是拓樸中意外的迴圈。也必須設定鏈接配置以允許迴圈偵測控制,如傳送串級的 LDAP 控制項中所述。

  3. 在串級鏈接的所有其他伺服器上,使用下列指令編輯串級尾碼的鏈接配置項目:
  4. ldapmodify -h host -p port -D "cn=Directory Manager" -w password
    dn:cn=databaseName,cn=chaining database,cn=plugins,cn=config
    replace:nsHopLimit
    nsHopLimit:maximumHops
    ^D

    其中 maximumHops 與上一步驟的定義相同。

傳送串級的 LDAP 控制項

依預設值,鏈接尾碼不會傳送代理驗證控制項。但是當一個鏈接尾碼聯絡另一個鏈接尾碼時,需要此控制項才能傳送遠端伺服器上存取控制所需的使用者識別資訊。中介鏈接尾碼必須允許鏈接此控制項。

最近已定義第二個用於代理驗證控制項的通訊協定。因為不同伺服器版本可能使用任一種控制項,您應將所有串級伺服器配置為允許鏈接新、舊兩種代理驗證控制項。

此外,也必須設定迴圈偵測控制項,以防止串級鏈接過程中發生迴圈。此控制項預設為允許與鏈接作業一起轉送,但應該驗證此配置。如果伺服器不允許鏈接此控制項,將無法偵測涉及該伺服器的任何迴圈。

依照配置鏈接策略中的步驟執行,以確保允許鏈接下列三個控制項:



上一頁      目錄      索引      下一頁     


文件號碼 819-2014。   Copyright 2005 Sun Microsystems, Inc. 版權所有。