Sun Java System Directory Server Enterprise Edition 6.0 管理指南

管理項目

管理項目的最佳方式需視環境而定:

使用 DSCC 管理項目

DSCC 可讓您檢視項目的所有可讀屬性以及編輯其可寫入屬性。它也可讓您增加及移除屬性、設定多值屬性,以及管理項目的物件類別。如需有關如何使用 DSCC 管理項目的更多資訊,請參閱 DSCC 線上說明。如需更多有關 DSCC 的一般資訊,請參閱目錄服務控制中心介面

使用目錄編輯器管理項目

目錄編輯器是一項易於使用的目錄編輯工具,可供管理員與一般使用者搜尋、建立與編輯資料。這項資料採用使用者、群組與容器的形式。

管理項目 ldapmodifyldapdelete

ldapmodifyldapdelete 指令行公用程式提供完整的功能進行增加、編輯與刪除目錄內容。使用這些公用程式,可讓您管理伺服器的配置項目與使用者項目中的資料。這些公用程式亦可用以寫入程序檔,以執行一或多個目錄的大量管理。

本書中的多項程序皆會用到 ldapmodifyldapdelete 指令。以下幾節將說明執行程序時所需進行的基本作業。如需有關 ldapmodifyldapdelete 指令的更多資訊,請參閱「Sun Java System Directory Server Enterprise Edition 6.0 Reference」

指令行公用程式的輸入一律用於 LDIF 中,可直接從指令行提供,也可以透過輸入檔提供。下節將提供 LDIF 輸入的相關資訊,而後續幾節將說明每個修改類型的 LDIF 輸入。

如需有關正確格式化 LDIF 輸入的資訊,請參閱「Sun Java System Directory Server Enterprise Edition 6.0 Reference」中的「Guidelines for Providing LDIF Input」

以下幾節將說明這些基本作業:

使用 ldapmodify 增加項目

您可以使用 DSCC 執行此作業。如需有關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。

您可以使用 ldapmodify-a 選項,在目錄中增加一或多個項目。下列範例將建立包含使用者的結構項目,再建立使用者項目:


$ ldapmodify -a -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w -
Enter bind password:
dn: ou=People,dc=example,dc=com
objectclass: top
objectclass: organizationalUnit
ou: People
description: Container for user entries

dn: uid=bjensen,ou=People,dc=example,dc=com
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetorgPerson
uid: bjensen
givenName: Barbara
sn: Jensen
cn: Babs Jensen
telephoneNumber: (408) 555-3922
facsimileTelephoneNumber: (408) 555-4000
mail: bjensen@example.com
userPassword: secret

-D-w 選項分別可為有權建立這些項目的使用者指定連結 DN 與密碼。-a 選項可指定將增加 LDIF 內的所有項目。接著,每個項目會依其 DN 與屬性值列出,每個項目皆會以空行隔開。每個項目在輸入後即由 ldapmodify 公用程式予以建立,且公用程式會報告任何發生的錯誤。

    依慣例,項目的 LDIF 會列出下列屬性:

  1. 項目的 DN。

  2. 物件類別清單。

  3. 一或多個命名屬性。此為 DN 中所使用的屬性,並不一定是必要屬性之一。

  4. 所有物件類別的必要屬性清單。

  5. 您所要納入的任何允許的屬性。

鍵入 userPassword 屬性的值時,請提供純文字形式的密碼。伺服器將為此值加密,並只會儲存加密值。請確實限制讀取權限,以保護 LDIF 檔案中所出現的純文字密碼。

您也可以使用不需在指令行上加入 -a 選項的替代形式 LDIF。此形式的好處是,您可以合併項目增加陳述式與項目修改陳述式,如下範例所示。


$ ldapmodify -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w -
Enter bind password: 
dn: ou=People,dc=example,dc=com
changetype: add
objectclass: top
objectclass: organizationalUnit
ou: People
description: Container for user entries

dn: uid=bjensen,ou=People,dc=example,dc=com
changetype: add
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetorgPerson
uid: bjensen
givenName: Barbara
sn: Jensen
cn: Barbara Jensen
telephoneNumber: (408) 555-3922
facsimileTelephoneNumber: (408) 555-4000
mail: bjensen@example.com
userPassword: secret

changetype: add 關鍵字表示,具有指定 DN 的項目應以所有後續的屬性建立。其他所有的選項與 LDIF 慣例皆與本節稍早的說明相同。

在這兩個範例中,您都可以使用 -f filename 選項從檔案讀取 LDIF,而不需從終端機輸入讀取。LDIF 檔案所含的格式必須與用於終端機輸入的格式相同,視 -a 選項的使用情形而定。

使用 ldapmodify 修改項目

您可以使用 DSCC 執行此作業。如需有關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。

使用 changetype: modify 關鍵字增加、取代或移除屬性及其位於現有項目中的值。當您指定 changetype: modify 時,必須同時提供一或多個變更作業,以指定項目的修改方式。可用的三個 LDIF 變更作業如下範例所示:


dn: entryDN
changetype: modify
add: attribute 
attribute: value...
-
replace: attribute 
attribute: newValue...
-
delete: attribute 
[attribute: value]
...

請使用連字符 (-) 隔開同一行中相同項目的作業,並使用空行隔開不同項目的作業群組。您也可以為每個作業指定數個 attribute: value 對。

增加屬性值

無法使用 DSCC 執行此作業。請依照此程序中的說明使用指令行。

下列範例將說明如何使用相同的 add LDIF 語法在現有的多值屬性中增加值,以及在尚不存在的屬性中增加值:


$ ldapmodify -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w -
Enter bind password:
dn: uid=bjensen,ou=People,dc=example,dc=com
changetype: modify
add: cn
cn: Babs Jensen
-
add: mobile
mobile: (408) 555-7844

若有下列任一情況,此作業即可能失敗,而伺服器將傳回錯誤:

使用二進位屬性子類型

您可以使用 DSCC 執行此作業。如需有關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。

attribute;binary 子類型可指定,無論屬性值的實際語法為何,均必須透過 LDAP 傳輸為二進位資料。此子類型適用於不具 LDAP 字串表示法的複雜語法,如 userCertificate。除此用途之外,均不應使用二進位子類型。

ldapmodify 指令搭配使用時,可在任何 LDIF 陳述式的屬性名稱中增加適當的子類型。

輸入二進位值時,可以直接以 LDIF 文字鍵入,或從其他檔案中加以讀取。下列範例說明從檔案中加以讀取的 LDIF 語法:


$ ldapmodify -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w -
Enter bind password:
version: 1
dn: uid=bjensen,ou=People,dc=example,dc=com
changetype: modify
add: userCertificate;binary
userCertificate;binary:< file:///local/cert-file

若要以 :< 語法指定檔案名稱,必須以行 version:1 做為 LDIF 陳述式的開頭。ldapmodify 在處理此陳述式時,會將屬性設為從指定檔案的所有內容讀取出來的值。

以語言子類型增加屬性

您可以使用 DSCC 執行此作業。如需有關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。

屬性的語言與發音子類型可指定本土化的值。當您指定屬性的語言子類型時,該子類型會以下列形式增加到屬性名稱中:


attribute;lang-CC

其中,attribute 是現有的屬性類型,而 cc 是用以指定語言的雙字母國碼 (地區碼)。您可以選擇性地增加發音子類型到語言子類型中,以指定音譯的本土化值。此案例中的屬性名稱如下:


attribute;lang-CC;phonetic

若要對具有子類型的屬性執行作業,必須明確符合其子類型。例如,若要修改具有 lang-fr 語言子類型的屬性值,必須在修改作業中納入 lang-fr,如下所示:


$ ldapmodify -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w -
Enter bind password:
dn: uid=bjensen,ou=People,dc=example,dc=com
changetype: modify
add: homePostalAddress;lang-fr
homePostalAddress;lang-fr: 34, rue de la Paix

備註 –

若屬性值含有非 ASCII 字元,則必須以 UTF-8 編碼這些字元。


修改屬性值

您可以使用 DSCC 執行此作業。如需有關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。

下列範例說明如何使用 LDIF 中的 replace 語法變更屬性的值:


$ ldapmodify -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w -
Enter bind password:
dn: uid=bjensen,ou=People,dc=example,dc=com
changetype: modify
replace: sn
sn: Morris
-
replace: cn
cn: Barbara Morris
cn: Babs Morris

指定屬性目前所有的值均會遭移除,而加入所有指定的值。

變更屬性值後,可以使用 ldapsearch 指令驗證變更。

屬性值的空格結尾

修改屬性值時,請勿不慎在值的結尾留下空格。空格結尾可能會致使值以 base-64 編碼 (如 34xy57eg) 顯示。

屬性值的結尾若為空格,則會將此空格編碼為屬性值的一部分。當您使用 DSCC 或 ldapsearch 指令驗證變更時,所看見的值可能會是純文字,但也可能以 base-64 編碼文字呈現。這取決於您所使用的是哪個目錄伺服器用戶端。

刪除屬性值

您可以使用 DSCC 執行此作業。如需有關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。

下列範例將說明如何徹底刪除屬性,以及如何僅刪除多值屬性的某個值:


$ ldapmodify -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w -
Enter bind password:
dn: uid=bjensen,ou=People,dc=example,dc=com
changetype: modify
delete: facsimileTelephoneNumber
-
delete: cn
cn: Babs Morris

僅使用 delete 語法而未指定 attribute: value 對時,屬性中所有的值皆會遭移除。若您指定了 attribute: value 對,則只會移除該值。

修改多值屬性的某個值

您可以使用 DSCC 執行此作業。如需有關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。

若要以 ldapmodify 指令修改多值屬性的某個值,必須執行兩項作業,如下範例所示:


$ ldapmodify -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w -
Enter bind password:
dn: uid=bjensen,ou=People,dc=example,dc=com
changetype: modify
delete: mobile
mobile: (408) 555-7845
-
add: mobile
mobile: (408) 555-5487

使用 ldapdelete 刪除項目

您可以使用 DSCC 執行此作業。如需有關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。

使用 ldapdelete 指令行公用程式,刪除目錄中的項目。此公用程式可連結至目錄伺服器,並根據項目的 DN 刪除一或多個項目。您必須提供有權刪除指定項目的連結 DN。

您無法刪除具有子項的項目。LDAP 協定不允許子項目無父系的情形。例如,在您刪除所有屬於組織單位的項目之前,都無法刪除組織單位項目。

下列範例將說明組織單位中的一個項目。此項目及其父系項目可依序刪除。


$ ldapdelete -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w -
Enter bind password:
uid=bjensen,ou=People,dc=example,dc=com
ou=People,dc=example,dc=com

使用 ldapmodify 刪除項目

您可以使用 DSCC 執行此作業。如需有關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。

使用 ldapmodify 公用程式時,也可以使用 changetype: delete 關鍵字刪除項目。使用 ldapdelete 時的所有限制於此時同樣適用,如上一節所述。使用 LDIF 語法刪除項目的好處在於,您可以同一個 LDIF 檔案中執行多種不同的作業。

下列範例將執行與前一範例相同的刪除作業:


$ ldapmodify -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w -
dn: uid=bjensen,ou=People,dc=example,dc=com
changetype: delete

dn: ou=People,dc=example,dc=com
changetype: delete

使用 ldapsearch 搜尋項目

您可以使用 DSCC 執行此作業。如需有關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。

您可以使用 ldapsearch 指令行公用程式尋找及擷取目錄項目。請注意,ldapsearch 公用程式並不是 Solaris 平台隨附的公用程式,但屬於 Directory Server Resource Kit 的一部分。

如需有關使用 ldapsearch、一般 ldapsearch 選項、適用格式與範例的更多資訊,請參閱「Sun Java System Directory Server Enterprise Edition 6.0 Reference」

Procedure使用 ldapmodify 移動項目或為其重新命名

此程序會使用修改 DN 作業。執行此作業前,請確定您已熟悉使用修改 DN 作業的指示與限制一節。

針對此程序的某些部分,您可以使用 DSCC 執行此作業。如需有關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。此程序的其他部分只能使用指令行完成。

  1. 若要將項目從某父系移至另一個父系,請先擴充父系項目的 ACI 權限。

    • 請在要移動之項目的目前父系項目上使用 allow (export ...) 語法,以確定 ACI 允許 export 作業

    • 請在要移動之項目的未來父系項目上使用 allow (import ...) 語法,以確定 ACI 允許 import 作業

    如需有關使用 ACI 的資訊,請參閱第 6 章, 目錄伺服器存取控制

  2. 請確定修改 DN 作業已全域啟用,或至少已針對將受移動作業影響的一或多個尾碼啟用。

    為確保與舊目錄伺服器發行版本的相容性,修改 DN 作業預設為不啟用。

    若您先前已啟用修改 DN 作業,請跳至下個步驟。

    若要全域啟用伺服器的修改 DN 作業,請使用此指令:


    $ dsconf set-server-prop -h host -p port moddn-enabled:on
  3. 執行 ldapmodify 指令。

    此步驟會使用修改 DN 作業。請執行下列其中一項動作:

    • 移動項目。

      例如,下列指令會將項目 uid=bjensen 從包商的子樹狀結構 ou=Contractors,dc=example,dc=com,移至員工的子樹狀結構 ou=People,dc=example,dc=com


      $ ldapmodify -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w -
      Enter bind password:
      dn: uid=bjensen,ou=Contractors,dc=example,dc=com
      changetype: modrdn
      newrdn: uid=bjensen
      deleteoldrdn: 0
      newsuperior: ou=People,dc=example,dc=com
    • 為項目重新命名。

      例如,下列指令會將項目 uid=bbjensen 重新命名為 uid=bjensen


      $ ldapmodify -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w -
      Enter bind password:
      dn: uid=bbjensen,ou=People,dc=example,dc=com
      changetype: modrdn
      newrdn: uid=bjensen
      deleteoldrdn: 1

    撰寫 LDIF 陳述式時,請留意下列屬性:

    • dn - 指定要重新命名或移動的項目。

    • changetype: modrdn - 指定要使用修改 DN 作業。

    • newrdn - 指定新命名的屬性。

    • deleteoldrdn - 指定先前的命名屬性是否應從項目中移除 (1 表示是,0 表示否)。

      請注意,命名屬性若為項目定義中的必要屬性,即無法從項目中移除。

    • newsuperior - 指定項目的新上層屬性。

    如需有關 ldapmodify 指令及其選項的資訊,請參閱 ldapmodify(1) 線上手冊。

  4. 若在移動或重新命名含有大量項目的子樹狀結構時發生資源限制錯誤,請增加資料庫所能使用的鎖定數。


    $ dsconf set-server-prop -h host -p port db-lock-count:value
    

    修改此特性後必須重新啟動伺服器,變更方能生效。

使用修改 DN 作業的指示與限制

如上一節所述,在使用修改 DN 作業時,請遵循以下幾節所說明的指示。

使用修改 DN 作業的一般指示

搭配使用修改 DN 作業與複寫的指示


注意 – 注意 –

使用修改 DN 作業時若未符合下列需求,將可能導致複寫中斷,而使目錄服務失效。