本書中的多項程序皆會用到
ldapmodify
與
ldapdelete
指令。以下幾節將說明執行程序時所需進行的基本作業。如需有關
ldapmodify
與
ldapdelete
指令的更多資訊,請參閱
「Sun Java System Directory Server Enterprise Edition 6.1 Reference」
。
指令行公用程式的輸入一律用於 LDIF 中,可直接從指令行提供,也可以透過輸入檔提供。下節將提供 LDIF 輸入的相關資訊,而後續幾節將說明每個修改類型的 LDIF 輸入。
如需有關正確格式化 LDIF 輸入的資訊,請參閱
「Sun Java System Directory Server Enterprise Edition 6.1 Reference」
中的
「Guidelines for Providing LDIF Input」
。
以下幾節將說明這些基本作業:
使用 ldapmodify 增加項目
$ 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: [email protected]
userPassword: secret
-D
與
-w
選項分別可為有權建立這些項目的使用者指定連結 DN 與密碼。
-a
選項可指定將增加 LDIF 內的所有項目。接著,每個項目會依其 DN 與屬性值列出,每個項目皆會以空行隔開。每個項目在輸入後即由
ldapmodify
公用程式予以建立,且公用程式會報告任何發生的錯誤。
依慣例,項目的 LDIF 會列出下列屬性:
項目的 DN。
$ 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: [email protected]
userPassword: secret
changetype: add
關鍵字表示,具有指定 DN 的項目應以所有後續的屬性建立。其他所有的選項與 LDIF 慣例皆與本節稍早的說明相同。
在這兩個範例中,您都可以使用
-f
filename
選項從檔案讀取 LDIF,而不需從終端機輸入讀取。LDIF 檔案所含的格式必須與用於終端機輸入的格式相同,視
-a
選項的使用情形而定。
使用
ldapmodify
修改項目
您可以使用 DSCC 執行此作業。如需有關資訊,請參閱
目錄服務控制中心介面
與 DSCC 線上說明。
使用
changetype: modify
關鍵字增加、取代或移除屬性及其位於現有項目中的值。當您指定
changetype: modify
時,必須同時提供一或多個變更作業,以指定項目的修改方式。可用的三個 LDIF 變更作業如下範例所示:
請使用連字符 (
-
) 隔開同一行中相同項目的作業,並使用空行隔開不同項目的作業群組。您也可以為每個作業指定數個
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 線上說明。
屬性的語言與發音子類型可指定本土化的值。當您指定屬性的語言子類型時,該子類型會以下列形式增加到屬性名稱中:
$ 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.1 Reference」
。