]> git.sur5r.net Git - openldap/blobdiff - doc/man/man5/ldif.5
Merge remote branch 'origin/mdb.master' into OPENLDAP_REL_ENG_2_4
[openldap] / doc / man / man5 / ldif.5
index 1a81714bef2b2500dd6aedfc8ad9a31e7c3f9f3a..7e5077aa99fc6b3b8c66524d6f49e72745f85a5b 100644 (file)
@@ -1,47 +1,53 @@
-.TH LDIF 5 "22 September 1998" "OpenLDAP LDVERSION"
+.TH LDIF 5 "RELEASEDATE" "OpenLDAP LDVERSION"
+.\" $OpenLDAP$
+.\" Copyright 1998-2012 The OpenLDAP Foundation All Rights Reserved.
+.\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
 .SH NAME
 ldif \- LDAP Data Interchange Format
 .SH DESCRIPTION
 The LDAP Data Interchange Format (LDIF) is used to represent LDAP
-entries in text form. The
-.BR ldif2ldbm (8)
-tools can be used to convert from LDIF format to the LDBM format
-used by
-.BR slapd (8).
-The
-.BR ldbmcat (8)
-tool can be used to do the reverse conversion. See "The SLAPD and
-SLURPD Administrator's Guide" for more information on this format and
-the conversion tools.
-.LP
-The basic form of an LDIF entry is:
+entries and change records in text form. LDAP tools, such as
+.BR ldapadd (1)
+and
+.BR ldapsearch (1),
+read and write LDIF entry
+records.
+.BR ldapmodify (1)
+reads LDIF change records.
+.LP
+This manual page provides a basic description of LDIF.  A
+formal specification of LDIF is published in RFC 2849.
+.SH ENTRY RECORDS
+.LP
+LDIF entry records are used to represent directory entries.  The basic
+form of an entry record is:
 .LP
 .nf
 .ft tt
-       [<id>]
        dn: <distinguished name>
-       <attrtype>: <attrvalue>
-       <attrtype>: <attrvalue>
+       <attrdesc>: <attrvalue>
+       <attrdesc>: <attrvalue>
+       <attrdesc>:: <base64-encoded-value>
+       <attrdesc>:< <URL>
        ...
 .ft
 .fi
 .LP
-where <id> is the optional entry ID (a positive decimal number).
-Normally, you would not supply the <id>, allowing the database creation
-tools to do that for you. The
-.BR ldbmcat (8)
-program, however, produces an LDIF format that includes <id> so that
-new indexes created will be consistent with the existing database.  A
-line may be continued by starting the next line with a single space or
-tab character, e.g.,
+The value may be specified as UTF-8 text or as base64 encoded data,
+or a URI may be provided to the location of the attribute value.
+.LP
+A line may be continued by starting the next line with a single space
+or tab, e.g.,
 .LP
 .nf
 .ft tt
-       dn: cn=Barbara J Jensen, o=University of Michi
-        gan, c=US
+       dn: cn=Barbara J Jensen,dc=exam
+        ple,dc=com
 .ft
 .fi
 .LP
+Lines beginning with a sharp sign ('#') are ignored.
+.LP
 Multiple attribute values are specified on separate lines, e.g.,
 .LP
 .nf
@@ -51,10 +57,10 @@ Multiple attribute values are specified on separate lines, e.g.,
 .ft
 .fi
 .LP
-If an <attrvalue> contains a non-printing character, or begins with a
-space or a colon ':', the <attrtype> is followed by a double colon and
-the value is encoded in base 64 notation. e.g., the value " begins with
-a space" would be encoded like this:
+If an value contains a non-printing character, or begins
+with a space or a colon ':', the <attrtype> is followed by a
+double colon and the value is encoded in base 64 notation. e.g.,
+the value " begins with a space" would be encoded like this:
 .LP
 .nf
 .ft tt
@@ -62,29 +68,38 @@ a space" would be encoded like this:
 .ft
 .fi
 .LP
+If the attribute value is located in a file, the <attrtype> is
+followed by a ':<' and a file: URI.  e.g., the value contained
+in the file /tmp/value would be listed like this:
+.LP
+.nf
+.ft tt
+       cn:< file:///tmp/value
+.ft
+.fi
+Other URI schemes (ftp,http) may be supported as well.
+.LP
 Multiple entries within the same LDIF file are separated by blank
 lines.
-.SH EXAMPLE
+.SH ENTRY RECORD EXAMPLE
 Here is an example of an LDIF file containing three entries.
 .LP
 .nf
 .ft tt
-       dn: cn=Barbara J Jensen, o=University of Michi
-        gan, c=US
+       dn: cn=Barbara J Jensen,dc=example,dc=com
        cn: Barbara J Jensen
        cn: Babs Jensen
        objectclass: person
+       description:< file:///tmp/babs
        sn: Jensen
 
-       dn: cn=Bjorn J Jensen, o=University of Michi
-        gan, c=US
+       dn: cn=Bjorn J Jensen,dc=example,dc=com
        cn: Bjorn J Jensen
        cn: Bjorn Jensen
        objectclass: person
        sn: Jensen
 
-       dn: cn=Jennifer J Jensen, o=University of Michi
-        gan, c=US
+       dn: cn=Jennifer J Jensen,dc=example,dc=com
        cn: Jennifer J Jensen
        cn: Jennifer Jensen
        objectclass: person
@@ -96,17 +111,168 @@ Here is an example of an LDIF file containing three entries.
 .ft
 .fi
 .LP
-Notice that the jpegPhoto in Jennifer Jensen's entry is encoded using
-base 64.
+Note that the description in Barbara Jensen's entry is
+read from file:///tmp/babs and the jpegPhoto in Jennifer
+Jensen's entry is encoded using base 64.
+.SH CHANGE RECORDS
+LDIF change records are used to represent directory change requests.
+Each change record starts with line indicating the distinguished
+name of the entry being changed:
+.LP
+.nf
+       dn: <distinguishedname>
+.fi
+.LP
+.nf
+       changetype: <[modify|add|delete|modrdn]>
+.fi
+.LP
+Finally, the change information itself is given, the format of which
+depends on what kind of change was specified above.  For a \fIchangetype\fP
+of \fImodify\fP, the format is one or more of the following:
+.LP
+.nf
+       add: <attributetype>
+       <attrdesc>: <value1>
+       <attrdesc>: <value2>
+       ...
+       \-
+.fi
+.LP
+Or, for a replace modification:
+.LP
+.nf
+       replace: <attributetype>
+       <attrdesc>: <value1>
+       <attrdesc>: <value2>
+       ...
+       \-
+.fi
+.LP
+If no \fIattributetype\fP lines are given to replace,
+the entire attribute is to be deleted (if present).
+.LP
+Or, for a delete modification:
+.LP
+.nf
+       delete: <attributetype>
+       <attrdesc>: <value1>
+       <attrdesc>: <value2>
+       ...
+       \-
+.fi
+.LP
+If no \fIattributetype\fP lines are given to delete,
+the entire attribute is to be deleted.
+.LP
+For a \fIchangetype\fP of \fIadd\fP, the format is:
+.LP
+.nf
+       <attrdesc1>: <value1>
+       <attrdesc1>: <value2>
+       ...
+       <attrdescN>: <value1>
+       <attrdescN>: <value2>
+.fi
+.LP
+For a \fIchangetype\fP of \fImodrdn\fP or \fImoddn\fP,
+the format is:
+.LP
+.nf
+       newrdn: <newrdn>
+       deleteoldrdn: 0 | 1
+       newsuperior: <DN>
+.fi
+.LP
+where a value of 1 for deleteoldrdn means to delete the values
+forming the old rdn from the entry, and a value of 0 means to
+leave the values as non-distinguished attributes in the entry.
+The newsuperior line is optional and, if present, specifies the
+new superior to move the entry to.
+.LP
+For a \fIchangetype\fP of \fIdelete\fP, no additional information
+is needed in the record.
+.LP
+Note that attribute values may be presented using base64 or in
+files as described for entry records.  Lines in change records
+may be continued in the manner described for entry records as
+well. 
+.SH CHANGE RECORD EXAMPLE
+The following sample LDIF file contains a change record
+of each type of change.
+.LP
+.nf
+       dn: cn=Babs Jensen,dc=example,dc=com
+       changetype: add
+       objectclass: person
+       objectclass: extensibleObject
+       cn: babs
+       cn: babs jensen
+       sn: jensen
+
+       dn: cn=Babs Jensen,dc=example,dc=com
+       changetype: modify
+       add: givenName
+       givenName: Barbara
+       givenName: babs
+       \-
+       replace: description
+       description: the fabulous babs
+       \-
+       delete: sn
+       sn: jensen
+       \-
+
+       dn: cn=Babs Jensen,dc=example,dc=com
+       changetype: modrdn
+       newrdn: cn=Barbara J Jensen
+       deleteoldrdn: 0
+       newsuperior: ou=People,dc=example,dc=com
+
+       dn: cn=Barbara J Jensen,ou=People,dc=example,dc=com
+       changetype: delete
+.fi
+
+.SH INCLUDE STATEMENT
+The LDIF parser has been extended to support an
+.B include
+statement for referencing other LDIF files.  The
+.B include
+statement must be separated from other records by a blank line.
+The referenced file is specified using a file: URI and all of its
+contents are incorporated as if they were part of the original
+LDIF file. As above, other URI schemes may be supported. For example:
+.LP
+.nf
+       dn: dc=example,dc=com
+       objectclass: domain
+       dc: example
+
+       include: file:///tmp/example.com.ldif
+
+       dn: dc=example,dc=org
+       objectclass: domain
+       dc: example
+.fi
+This feature is not part of the LDIF specification in RFC 2849 but
+is expected to appear in a future revision of this spec. It is supported
+by the
+.BR ldapadd (1),
+.BR ldapmodify (1),
+and
+.BR slapadd (8)
+commands.
+
 .SH SEE ALSO
 .BR ldap (3),
-.BR slapd (8),
-.BR ldif2ldbm (8),
-.BR ldbmcat (8)
+.BR ldapsearch (1),
+.BR ldapadd (1),
+.BR ldapmodify (1),
+.BR slapadd (8),
+.BR slapcat (8),
+.BR slapd\-ldif (5),
+.BR slapd.replog (5).
 .LP
-"The SLAPD and SLURPD Administrator's Guide"
+"LDAP Data Interchange Format," Good, G., RFC 2849.
 .SH ACKNOWLEDGEMENTS
-.B     OpenLDAP
-is developed and maintained by The OpenLDAP Project (http://www.openldap.org/).
-.B     OpenLDAP
-is derived from University of Michigan LDAP 3.3 Release.  
+.so ../Project