<?xml version="1.0" encoding="UTF-8"?>
<!--
! CCPL HEADER START
!
! This work is licensed under the Creative Commons
! Attribution-NonCommercial-NoDerivs 3.0 Unported License.
! To view a copy of this license, visit
! http://creativecommons.org/licenses/by-nc-nd/3.0/
! or send a letter to Creative Commons, 444 Castro Street,
! Suite 900, Mountain View, California, 94041, USA.
!
! You can also obtain a copy of the license at
! trunk/opendj3/legal-notices/CC-BY-NC-ND.txt.
! See the License for the specific language governing permissions
! and limitations under the License.
!
! If applicable, add the following below this CCPL HEADER, with the fields
! enclosed by brackets "[]" replaced with your own identifying information:
! Portions Copyright [yyyy] [name of copyright owner]
!
! CCPL HEADER END
!
! Copyright 2011-2014 ForgeRock AS
!
-->
<refentry xml:id='ldapmodify-1'
xmlns='http://docbook.org/ns/docbook'
version='5.0' xml:lang='en'
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xsi:schemaLocation='http://docbook.org/ns/docbook
http://docbook.org/xml/5.0/xsd/docbook.xsd'
xmlns:xlink='http://www.w3.org/1999/xlink'>
<info><copyright><year>2011-2014</year><holder>ForgeRock AS</holder></copyright></info>
<refmeta>
<refentrytitle>ldapmodify</refentrytitle><manvolnum>1</manvolnum>
<refmiscinfo class="software">OpenDJ</refmiscinfo>
<refmiscinfo class="version"><?eval ${docTargetVersion}?></refmiscinfo>
</refmeta>
<refnamediv>
<refname>ldapmodify</refname>
<refpurpose>perform LDAP modify, add, delete, mod DN operations</refpurpose>
</refnamediv>
<refsynopsisdiv>
<cmdsynopsis>
<command>ldapmodify</command>
<arg choice="req">options</arg>
</cmdsynopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>
<para>This utility can be used to perform LDAP modify, add, delete, and
modify DN operations in the directory.</para>
<para>When not using a file to specify modifications, end your input with
EOF (Ctrl+D on UNIX, Ctrl+Z on Windows).</para>
</refsect1>
<refsect1>
<title>Options</title>
<para>The following options are supported.</para>
<variablelist>
<varlistentry>
<term><option>-a, --defaultAdd</option></term>
<listitem>
<para>Treat records with no changetype as add operations</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>--assertionFilter {filter}</option></term>
<listitem>
<para>Use the LDAP assertion control with the provided filter</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-c, --continueOnError</option></term>
<listitem>
<para>Continue processing even if there are errors</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-f, --filename {file}</option></term>
<listitem>
<para>LDIF file containing the changes to apply</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-J, --control {controloid[:criticality[:value|::b64value|:&lt;filePath]]}</option></term>
<listitem>
<para>Use a request control with the provided information</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-n, --dry-run</option></term>
<listitem>
<para>Show what would be done but do not perform any operation</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>--postReadAttributes {attrList}</option></term>
<listitem>
<para>Use the LDAP ReadEntry post-read control</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>--preReadAttributes {attrList}</option></term>
<listitem>
<para>Use the LDAP ReadEntry pre-read control</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-Y, --proxyAs {authzID}</option></term>
<listitem>
<para>Use the proxied authorization control with the given authorization
ID</para>
</listitem>
</varlistentry>
</variablelist>
<refsect2>
<title>LDAP Connection Options</title>
<variablelist>
<varlistentry>
<term><option>--connectTimeout {timeout}</option></term>
<listitem>
<para>Maximum length of time (in milliseconds) that can be taken to
establish a connection. Use '0' to specify no time out.</para>
<para>Default value: 30000</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-D, --bindDN {bindDN}</option></term>
<listitem>
<para>DN to use to bind to the server</para>
<para>Default value: cn=Directory Manager</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-E, --reportAuthzID</option></term>
<listitem>
<para>Use the authorization identity control</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-h, --hostname {host}</option></term>
<listitem>
<para>Directory server hostname or IP address</para>
<para>Default value: localhost.localdomain</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-j, --bindPasswordFile {bindPasswordFile}</option></term>
<listitem>
<para>Bind password file</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-K, --keyStorePath {keyStorePath}</option></term>
<listitem>
<para> Certificate key store path</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-N, --certNickname {nickname}</option></term>
<listitem>
<para>Nickname of certificate for SSL client authentication</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-o, --saslOption {name=value}</option></term>
<listitem>
<para>SASL bind options</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-p, --port {port}</option></term>
<listitem>
<para>Directory server port number</para>
<para>Default value: 389</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-P, --trustStorePath {trustStorePath}</option></term>
<listitem>
<para>Certificate trust store path</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-q, --useStartTLS</option></term>
<listitem>
<para>Use StartTLS to secure communication with the server</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-r, --useSASLExternal</option></term>
<listitem>
<para>Use the SASL EXTERNAL authentication mechanism</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>--trustStorePassword {trustStorePassword}</option></term>
<listitem>
<para>Certificate trust store PIN</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-u, --keyStorePasswordFile {keyStorePasswordFile}</option></term>
<listitem>
<para>Certificate key store PIN file</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-U, --trustStorePasswordFile {path}</option></term>
<listitem>
<para>Certificate trust store PIN file</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-V, --ldapVersion {version}</option></term>
<listitem>
<para>LDAP protocol version number</para>
<para>Default value: 3</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-w, --bindPassword {bindPassword}</option></term>
<listitem>
<para>Password to use to bind to the server</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-W, --keyStorePassword {keyStorePassword}</option></term>
<listitem>
<para>Certificate key store PIN</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-X, --trustAll</option></term>
<listitem>
<para>Trust all server SSL certificates</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-Z, --useSSL</option></term>
<listitem>
<para>Use SSL for secure communication with the server</para>
</listitem>
</varlistentry>
</variablelist>
</refsect2>
<refsect2>
<title>Utility Input/Output Options</title>
<variablelist>
<varlistentry>
<term><option>-i, --encoding {encoding}</option></term>
<listitem>
<para>Use the specified character set for command-line input</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>--noPropertiesFile</option></term>
<listitem>
<para>No properties file will be used to get default command line
argument values</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>--propertiesFilePath {propertiesFilePath}</option></term>
<listitem>
<para>Path to the file containing default property values used for
command line arguments</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-v, --verbose</option></term>
<listitem>
<para>Use verbose mode</para>
</listitem>
</varlistentry>
</variablelist>
</refsect2>
<refsect2>
<title>General Options</title>
<variablelist>
<varlistentry>
<term><option>--version</option></term>
<listitem>
<para>Display version information</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-?, -H, --help</option></term>
<listitem>
<para>Display usage information</para>
</listitem>
</varlistentry>
</variablelist>
</refsect2>
</refsect1>
<refsect1>
<title>Exit Codes</title>
<variablelist>
<varlistentry>
<term>0</term>
<listitem>
<para>The command completed successfully.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><replaceable>ldap-error</replaceable></term>
<listitem>
<para>An LDAP error occurred while processing the operation.</para>
<para>LDAP result codes are described in <link
xlink:href="http://tools.ietf.org/html/rfc4511#appendix-A">RFC
4511</link>. Also see the additional information for details.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>89</term>
<listitem>
<para>An error occurred while parsing the command-line arguments.</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1>
<title>Files</title>
<para>You can use <filename>~/.opendj/tools.properties</filename> to set
the defaults for bind DN, host name, and port number as in the following
example.</para>
<programlisting language="ini">
hostname=directory.example.com
port=1389
bindDN=uid=kvaughan,ou=People,dc=example,dc=com
ldapcompare.port=1389
ldapdelete.port=1389
ldapmodify.port=1389
ldappasswordmodify.port=1389
ldapsearch.port=1389
</programlisting>
</refsect1>
<refsect1>
<title>Examples</title>
<para>The following example demonstrates use of the command to add an entry
to the directory.</para>
<screen>
$ <userinput>cat newuser.ldif</userinput>
<computeroutput>dn: uid=newuser,ou=People,dc=example,dc=com
uid: newuser
facsimileTelephoneNumber: +1 408 555 1213
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
givenName: New
cn: New User
cn: Real Name
telephoneNumber: +1 408 555 1212
sn: Jensen
roomNumber: 1234
homeDirectory: /home/newuser
uidNumber: 10389
mail: newuser@example.com
l: South Pole
ou: Product Development
ou: People
gidNumber: 10636</computeroutput>
$ <userinput>ldapmodify -p 1389 -a -f newuser.ldif \
-D uid=kvaughan,ou=people,dc=example,dc=com -w bribery</userinput>
<computeroutput>Processing ADD request for uid=newuser,ou=People,dc=example,dc=com
ADD operation successful for DN uid=newuser,ou=People,dc=example,dc=com</computeroutput>
</screen>
<para>The following example demonstrates adding a Description attribute
to the new user's entry.</para>
<screen>
$ <userinput>cat newdesc.ldif</userinput>
<computeroutput>dn: uid=newuser,ou=People,dc=example,dc=com
changetype: modify
add: description
description: A new user's entry</computeroutput>
$ <userinput>ldapmodify -p 1389 -f newdesc.ldif \
-D uid=kvaughan,ou=people,dc=example,dc=com -w bribery</userinput>
<computeroutput>Processing MODIFY request for uid=newuser,ou=People,dc=example,dc=com
MODIFY operation successful for DN uid=newuser,ou=People,dc=example,dc=com</computeroutput>
</screen>
<para>The following example demonstrates changing the Description attribute
for the new user's entry.</para>
<screen>
$ <userinput>cat moddesc.ldif</userinput>
<computeroutput>dn: uid=newuser,ou=People,dc=example,dc=com
changetype: modify
replace: description
description: Another description</computeroutput>
$ <userinput>ldapmodify -p 1389 -f moddesc.ldif \
-D uid=kvaughan,ou=people,dc=example,dc=com -w bribery</userinput>
<computeroutput>Processing MODIFY request for uid=newuser,ou=People,dc=example,dc=com
MODIFY operation successful for DN uid=newuser,ou=People,dc=example,dc=com</computeroutput>
</screen>
<para>The following example demonstrates deleting the new user's entry.</para>
<screen>
$ <userinput>cat deluser.ldif</userinput>
<computeroutput>dn: uid=newuser,ou=People,dc=example,dc=com
changetype: delete</computeroutput>
$ <userinput>ldapmodify -p 1389 -f deluser.ldif \
-D uid=kvaughan,ou=people,dc=example,dc=com -w bribery</userinput>
<computeroutput>Processing DELETE request for uid=newuser,ou=People,dc=example,dc=com
DELETE operation successful for DN uid=newuser,ou=People,dc=example,dc=com</computeroutput>
</screen>
</refsect1>
</refentry>