您可以使用 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 |