Quick merge: everything from HEAD

This commit is contained in:
Kurt Zeilenga 2007-02-13 21:21:56 +00:00
commit 3c5068bc1f
905 changed files with 20778 additions and 10246 deletions

View file

@ -1,5 +1,5 @@
OpenLDAP 2.4 Change Log
OpenLDAP 2.4.3alpha Release
OpenLDAP 2.4.4alpha Release
Changes not tracked

View file

@ -1,4 +1,4 @@
Copyright 1998-2006 The OpenLDAP Foundation
Copyright 1998-2007 The OpenLDAP Foundation
All rights reserved.
Redistribution and use in source and binary forms, with or without

View file

@ -107,7 +107,7 @@ $OpenLDAP: pkg/openldap-guide/release/install.sdf,v 1.16 2002/02/18
This work is part of OpenLDAP Software <http://www.openldap.org/>.
Copyright 1998-2006 The OpenLDAP Foundation.
Copyright 1998-2007 The OpenLDAP Foundation.
All rights reserved.
Redistribution and use in source and binary forms, with or without

View file

@ -2,7 +2,7 @@
# $OpenLDAP$
## This work is part of OpenLDAP Software <http://www.openldap.org/>.
##
## Copyright 1998-2006 The OpenLDAP Foundation.
## Copyright 1998-2007 The OpenLDAP Foundation.
## All rights reserved.
##
## Redistribution and use in source and binary forms, with or without

2
README
View file

@ -80,7 +80,7 @@ $OpenLDAP$
This work is part of OpenLDAP Software <http://www.openldap.org/>.
Copyright 1998-2006 The OpenLDAP Foundation.
Copyright 1998-2007 The OpenLDAP Foundation.
All rights reserved.
Redistribution and use in source and binary forms, with or without

2
build/config.guess vendored
View file

@ -29,7 +29,7 @@ timestamp='2003-07-02-OpenLDAP'
# configuration script generated by Autoconf, and is distributable
# under the same distributions terms as OpenLDAP itself.
## Copyright 1998-2006 The OpenLDAP Foundation.
## Copyright 1998-2007 The OpenLDAP Foundation.
## All rights reserved.
##
## Redistribution and use in source and binary forms, with or without

2
build/config.sub vendored
View file

@ -34,7 +34,7 @@ timestamp='2003-07-04-OpenLDAP'
# configuration script generated by Autoconf, and is distributable
# under the same distributions terms as OpenLDAP itself.
## Copyright 1998-2006 The OpenLDAP Foundation.
## Copyright 1998-2007 The OpenLDAP Foundation.
## All rights reserved.
##
## Redistribution and use in source and binary forms, with or without

View file

@ -2,7 +2,7 @@
# $OpenLDAP$
## This work is part of OpenLDAP Software <http://www.openldap.org/>.
##
## Copyright 1998-2006 The OpenLDAP Foundation.
## Copyright 1998-2007 The OpenLDAP Foundation.
## All rights reserved.
##
## Redistribution and use in source and binary forms, with or without
@ -18,5 +18,5 @@
set -e # exit immediately if any errors occur
find . -type f -not -name 'LICENSE*' -print -exec perl -pi -e 's/Copyright ([0-9]{4})([,\-][0-9]{2,4})*,? The OpenLDAP Foundation/Copyright $1-2006 The OpenLDAP Foundation/g;' {} \;
find . -type f -not -name 'LICENSE*' -print -exec perl -pi -e 's/Copyright ([0-9]{4})([,\-][0-9]{2,4})*,? The OpenLDAP Foundation/Copyright $1-2007 The OpenLDAP Foundation/g;' {} \;

55
build/db.4.2.52.patch Normal file
View file

@ -0,0 +1,55 @@
As posted to http://www.openldap.org/lists/openldap-devel/200610/msg00027.html
This is Sleepycat bug #14908. The provided patch is for 4.2.52. The
same bug is present in all versions up to 4.5.20 where it is fixed.
-------- Original Message --------
Subject: region size bug Re: [BDB-Alpha] Berkeley DB 4.5.8 ALPHA
Date: Mon, 10 Jul 2006 13:37:33 -0700
From: Howard Chu <hyc@symas.com>
To: support@sleepycat.com
CC: support@symas.com
References: <45A742B5-7DD5-4512-A204-A10FE8FC5DFC@oracle.com>
I just ran into this in 4.2.52 but the same calculation occurs in 4.4
and 4.5.8 alpha:
This computation gives the wrong results when the number of cache
regions is greater than the number of gigabytes (which we encounter on
Linux using shared memory regions, which are constrained to much smaller
than a gigabyte each).
in mp/mp_region.c:
roff_t reg_size;
/* Figure out how big each cache region is. */
reg_size = (roff_t)(dbenv->mp_gbytes / dbenv->mp_ncache) * GIGABYTE;
reg_size += ((roff_t)(dbenv->mp_gbytes %
dbenv->mp_ncache) * GIGABYTE) / dbenv->mp_ncache;
reg_size += dbenv->mp_bytes / dbenv->mp_ncache;
*reg_sizep = reg_size;
The first reg_size calculation always goes to zero when mp_ncache >
mp_gbytes.
This should have been, instead:
reg_size = GIGABYTE / dbenv->mp_ncache * dbenv->mp_gbytes;
--- mp/mp_region.c.O 2003-06-30 10:20:19.000000000 -0700
+++ mp/mp_region.c 2006-10-27 23:25:05.000000000 -0700
@@ -43,9 +43,7 @@
int htab_buckets, ret;
/* Figure out how big each cache region is. */
- reg_size = (dbenv->mp_gbytes / dbenv->mp_ncache) * GIGABYTE;
- reg_size += ((dbenv->mp_gbytes %
- dbenv->mp_ncache) * GIGABYTE) / dbenv->mp_ncache;
+ reg_size = GIGABYTE / dbenv->mp_ncache * dbenv->mp_gbytes;
reg_size += dbenv->mp_bytes / dbenv->mp_ncache;
/*

View file

@ -1,7 +1,7 @@
# $OpenLDAP$
## This work is part of OpenLDAP Software <http://www.openldap.org/>.
##
## Copyright 1998-2006 The OpenLDAP Foundation.
## Copyright 1998-2007 The OpenLDAP Foundation.
## All rights reserved.
##
## Redistribution and use in source and binary forms, with or without

View file

@ -1,7 +1,7 @@
# $OpenLDAP$
## This work is part of OpenLDAP Software <http://www.openldap.org/>.
##
## Copyright 1998-2006 The OpenLDAP Foundation.
## Copyright 1998-2007 The OpenLDAP Foundation.
## All rights reserved.
##
## Redistribution and use in source and binary forms, with or without

View file

@ -1,7 +1,7 @@
# $OpenLDAP$
## This work is part of OpenLDAP Software <http://www.openldap.org/>.
##
## Copyright 1998-2006 The OpenLDAP Foundation.
## Copyright 1998-2007 The OpenLDAP Foundation.
## All rights reserved.
##
## Redistribution and use in source and binary forms, with or without

View file

@ -1,7 +1,7 @@
# $OpenLDAP$
## This work is part of OpenLDAP Software <http://www.openldap.org/>.
##
## Copyright 1998-2006 The OpenLDAP Foundation.
## Copyright 1998-2007 The OpenLDAP Foundation.
## All rights reserved.
##
## Redistribution and use in source and binary forms, with or without

View file

@ -1,7 +1,7 @@
# $OpenLDAP$
## This work is part of OpenLDAP Software <http://www.openldap.org/>.
##
## Copyright 1998-2006 The OpenLDAP Foundation.
## Copyright 1998-2007 The OpenLDAP Foundation.
## All rights reserved.
##
## Redistribution and use in source and binary forms, with or without

View file

@ -28,7 +28,7 @@
# configuration script generated by Autoconf, and is distributable
# under the same distributions terms as OpenLDAP inself.
## Copyright 1998-2006 The OpenLDAP Foundation.
## Copyright 1998-2007 The OpenLDAP Foundation.
## All rights reserved.
##
## Redistribution and use in source and binary forms, with or without

View file

@ -1,7 +1,7 @@
# $OpenLDAP$
## This work is part of OpenLDAP Software <http://www.openldap.org/>.
##
## Copyright 1998-2006 The OpenLDAP Foundation.
## Copyright 1998-2007 The OpenLDAP Foundation.
## All rights reserved.
##
## Redistribution and use in source and binary forms, with or without
@ -32,7 +32,8 @@ all-common:
-e 's%LIBDIR%$(libdir)%' \
-e 's%LIBEXECDIR%$(libexecdir)%' \
-e 's%RELEASEDATE%$(RELEASEDATE)%' \
$(srcdir)/$$page > $$page.$(TMP_SUFFIX); \
$(srcdir)/$$page \
| (cd $(srcdir); $(SOELIM) -) > $$page.$(TMP_SUFFIX); \
done
install-common:

View file

@ -29,7 +29,7 @@
# configuration script generated by Autoconf, and is distributable
# under the same distributions terms as OpenLDAP itself.
## Copyright 1998-2006 The OpenLDAP Foundation.
## Copyright 1998-2007 The OpenLDAP Foundation.
## All rights reserved.
##
## Redistribution and use in source and binary forms, with or without

View file

@ -2,7 +2,7 @@
# $OpenLDAP$
## This work is part of OpenLDAP Software <http://www.openldap.org/>.
##
## Copyright 1998-2006 The OpenLDAP Foundation.
## Copyright 1998-2007 The OpenLDAP Foundation.
## All rights reserved.
##
## Redistribution and use in source and binary forms, with or without

View file

@ -1,7 +1,7 @@
#! /bin/sh
## This work is part of OpenLDAP Software <http://www.openldap.org/>.
##
## Copyright 1998-2006 The OpenLDAP Foundation.
## Copyright 1998-2007 The OpenLDAP Foundation.
## All rights reserved.
##
## Redistribution and use in source and binary forms, with or without

View file

@ -2,7 +2,7 @@
# $OpenLDAP$
## This work is part of OpenLDAP Software <http://www.openldap.org/>.
##
## Copyright 1998-2006 The OpenLDAP Foundation.
## Copyright 1998-2007 The OpenLDAP Foundation.
## All rights reserved.
##
## Redistribution and use in source and binary forms, with or without

View file

@ -1,7 +1,7 @@
:: $OpenLDAP$
:: This work is part of OpenLDAP Software <http://www.openldap.org/>.
::
:: Copyright 1998-2006 The OpenLDAP Foundation.
:: Copyright 1998-2007 The OpenLDAP Foundation.
:: All rights reserved.
::
:: Redistribution and use in source and binary forms, with or without

View file

@ -3,7 +3,7 @@
# $OpenLDAP$
## This work is part of OpenLDAP Software <http://www.openldap.org/>.
##
## Copyright 1998-2006 The OpenLDAP Foundation.
## Copyright 1998-2007 The OpenLDAP Foundation.
## All rights reserved.
##
## Redistribution and use in source and binary forms, with or without
@ -55,7 +55,7 @@ WHOWHERE="$USER@`uname -n`:`pwd`"
cat << __EOF__
/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
*
* Copyright 1998-2006 The OpenLDAP Foundation.
* Copyright 1998-2007 The OpenLDAP Foundation.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -68,7 +68,7 @@ cat << __EOF__
*/
static const char copyright[] =
"Copyright 1998-2006 The OpenLDAP Foundation. All rights reserved.\n"
"Copyright 1998-2007 The OpenLDAP Foundation. All rights reserved.\n"
"COPYING RESTRICTIONS APPLY\n";
$static $const char $SYMBOL[] =

View file

@ -1,7 +1,7 @@
# $OpenLDAP$
## This work is part of OpenLDAP Software <http://www.openldap.org/>.
##
## Copyright 1998-2006 The OpenLDAP Foundation.
## Copyright 1998-2007 The OpenLDAP Foundation.
## All rights reserved.
##
## Redistribution and use in source and binary forms, with or without

View file

@ -2,7 +2,7 @@ dnl OpenLDAP Autoconf Macros
dnl $OpenLDAP$
dnl This work is part of OpenLDAP Software <http://www.openldap.org/>.
dnl
dnl Copyright 1998-2006 The OpenLDAP Foundation.
dnl Copyright 1998-2007 The OpenLDAP Foundation.
dnl All rights reserved.
dnl
dnl Redistribution and use in source and binary forms, with or without
@ -486,7 +486,12 @@ __db_version
])
if test $ol_cv_bdb_major = 4 ; then
if test $ol_cv_bdb_minor = 4 ; then
if test $ol_cv_bdb_minor = 5 ; then
OL_BERKELEY_DB_TRY(ol_cv_db_db45,[-ldb45])
OL_BERKELEY_DB_TRY(ol_cv_db_db_45,[-ldb-45])
OL_BERKELEY_DB_TRY(ol_cv_db_db_4_dot_5,[-ldb-4.5])
OL_BERKELEY_DB_TRY(ol_cv_db_db_4_5,[-ldb-4-5])
elif test $ol_cv_bdb_minor = 4 ; then
OL_BERKELEY_DB_TRY(ol_cv_db_db44,[-ldb44])
OL_BERKELEY_DB_TRY(ol_cv_db_db_44,[-ldb-44])
OL_BERKELEY_DB_TRY(ol_cv_db_db_4_dot_4,[-ldb-4.4])
@ -691,8 +696,8 @@ AC_DEFUN([OL_BDB_COMPAT],
# define DB_VERSION_MINOR 0
#endif
/* require 4.2 or later */
#if (DB_VERSION_MAJOR >= 4) && (DB_VERSION_MINOR >= 2)
/* require 4.2 or later, but exclude 4.3 */
#if (DB_VERSION_MAJOR >= 4) && (DB_VERSION_MINOR >= 2) && (DB_VERSION_MINOR !=3)
__db_version_compat
#endif
], [ol_cv_bdb_compat=yes], [ol_cv_bdb_compat=no])])

View file

@ -1,7 +1,7 @@
# $OpenLDAP$
## This work is part of OpenLDAP Software <http://www.openldap.org/>.
##
## Copyright 1998-2006 The OpenLDAP Foundation.
## Copyright 1998-2007 The OpenLDAP Foundation.
## All rights reserved.
##
## Redistribution and use in source and binary forms, with or without

View file

@ -1,7 +1,7 @@
# $OpenLDAP$
## This work is part of OpenLDAP Software <http://www.openldap.org/>.
##
## Copyright 1998-2006 The OpenLDAP Foundation.
## Copyright 1998-2007 The OpenLDAP Foundation.
## All rights reserved.
##
## Redistribution and use in source and binary forms, with or without

View file

@ -1,7 +1,7 @@
# $OpenLDAP$
## This work is part of OpenLDAP Software <http://www.openldap.org/>.
##
## Copyright 1998-2006 The OpenLDAP Foundation.
## Copyright 1998-2007 The OpenLDAP Foundation.
## All rights reserved.
##
## Redistribution and use in source and binary forms, with or without
@ -149,6 +149,8 @@ SUBST = $(SHTOOL) subst
MANCOMPRESS=$(CAT)
MANCOMPRESSSUFFIX=
SOELIM=soelim
INCLUDEDIR= $(top_srcdir)/include
LDAP_INCPATH= -I$(LDAP_INCDIR) -I$(INCLUDEDIR)
LDAP_LIBDIR= $(top_builddir)/libraries

View file

@ -1,6 +1,6 @@
/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
*
* Copyright 1998-2006 The OpenLDAP Foundation.
* Copyright 1998-2007 The OpenLDAP Foundation.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -13,6 +13,6 @@
*/
static const char copyright[] =
"Copyright 1998-2006 The OpenLDAP Foundation. All rights reserved.\n"
"Copyright 1998-2007 The OpenLDAP Foundation. All rights reserved.\n"
"COPYING RESTRICTIONS APPLY.\n";

View file

@ -2,7 +2,7 @@
# $OpenLDAP$
## This work is part of OpenLDAP Software <http://www.openldap.org/>.
##
## Copyright 1998-2006 The OpenLDAP Foundation.
## Copyright 1998-2007 The OpenLDAP Foundation.
## All rights reserved.
##
## Redistribution and use in source and binary forms, with or without

View file

@ -2,7 +2,7 @@
# $OpenLDAP$
## This work is part of OpenLDAP Software <http://www.openldap.org/>.
##
## Copyright 1998-2006 The OpenLDAP Foundation.
## Copyright 1998-2007 The OpenLDAP Foundation.
## All rights reserved.
##
## Redistribution and use in source and binary forms, with or without
@ -15,9 +15,9 @@
ol_package=OpenLDAP
ol_major=2
ol_minor=4
ol_patch=3alpha
ol_api_inc=20403
ol_patch=X
ol_api_inc=20404
ol_api_current=1
ol_api_revision=2
ol_api_revision=3
ol_api_age=1
ol_release_date="2006/08/22"
ol_release_date="2006/10/20"

View file

@ -2,7 +2,7 @@
# $OpenLDAP$
## This work is part of OpenLDAP Software <http://www.openldap.org/>.
##
## Copyright 1998-2006 The OpenLDAP Foundation.
## Copyright 1998-2007 The OpenLDAP Foundation.
## All rights reserved.
##
## Redistribution and use in source and binary forms, with or without

View file

@ -2,7 +2,7 @@
# $OpenLDAP$
## This work is part of OpenLDAP Software <http://www.openldap.org/>.
##
## Copyright 1998-2006 The OpenLDAP Foundation.
## Copyright 1998-2007 The OpenLDAP Foundation.
## All rights reserved.
##
## Redistribution and use in source and binary forms, with or without

View file

@ -2,7 +2,7 @@
/* $OpenLDAP$ */
/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
*
* Copyright 1998-2006 The OpenLDAP Foundation.
* Copyright 1998-2007 The OpenLDAP Foundation.
* Portions Copyright 2003 Kurt D. Zeilenga.
* Portions Copyright 2003 IBM Corporation.
* All rights reserved.
@ -32,6 +32,7 @@
#include <ac/ctype.h>
#include <ac/unistd.h>
#include <ac/errno.h>
#include <ac/time.h>
#ifdef HAVE_CYRUS_SASL
#ifdef HAVE_SASL_SASL_H
@ -52,18 +53,6 @@
#include "common.h"
#ifdef LDAP_API_FEATURE_X_OPENLDAP_V2_KBIND
#if !LDAP_DEPRECATED
/* Necessary for old LDAPv2 Kerberos Bind methods */
LDAP_F( int )
ldap_bind LDAP_P(( /* deprecated */
LDAP *ld,
LDAP_CONST char *who,
LDAP_CONST char *passwd,
int authmethod ));
#endif
#endif
/* input-related vars */
/* misc. parameters */
@ -125,6 +114,9 @@ static int chainingResolve = -1;
static int chainingContinuation = -1;
#endif /* LDAP_CONTROL_X_CHAINING_BEHAVIOR */
/* options */
struct timeval nettimeout = { -1 , 0 };
typedef int (*print_ctrl_fn)( LDAP *ld, LDAPControl *ctrl );
static int print_preread( LDAP *ld, LDAPControl *ctrl );
@ -210,16 +202,18 @@ N_(" [!]preread[=<attrs>] (a comma-separated attribute list)\n")
#ifdef LDAP_DEVEL
N_(" [!]relax\n")
#endif
N_(" abandon, cancel (SIGINT sends abandon/cancel; not really controls)\n"),
N_(" abandon, cancel, ignore (SIGINT sends abandon/cancel,\n"
" or ignores response; if critical, doesn't wait for SIGINT.\n"
" not really controls)\n")
N_(" -f file read operations from `file'\n"),
N_(" -h host LDAP server\n"),
N_(" -H URI LDAP Uniform Resource Indentifier(s)\n"),
N_(" -I use SASL Interactive mode\n"),
N_(" -k use Kerberos authentication\n"),
N_(" -K like -k, but do only step 1 of the Kerberos bind\n"),
N_(" -M enable Manage DSA IT control (-MM to make critical)\n"),
N_(" -n show what would be done but don't actually do it\n"),
N_(" -O props SASL security properties\n"),
N_(" -o <opt>[=<optparam] general options\n"),
N_(" nettimeout=<timeout> (in seconds, or \"none\" or \"max\")\n"),
N_(" -p port port on LDAP server\n"),
N_(" -P version procotol version (default: 3)\n"),
N_(" -Q use SASL Quiet mode\n"),
@ -510,9 +504,21 @@ tool_args( int argc, char **argv )
/* this shouldn't go here, really; but it's a feature... */
} else if ( strcasecmp( control, "abandon" ) == 0 ) {
abcan = LDAP_REQ_ABANDON;
if ( crit ) {
gotintr = abcan;
}
} else if ( strcasecmp( control, "cancel" ) == 0 ) {
abcan = LDAP_REQ_EXTENDED;
if ( crit ) {
gotintr = abcan;
}
} else if ( strcasecmp( control, "ignore" ) == 0 ) {
abcan = -1;
if ( crit ) {
gotintr = abcan;
}
} else {
fprintf( stderr, "Invalid general control name: %s\n",
@ -557,32 +563,6 @@ tool_args( int argc, char **argv )
prog );
exit( EXIT_FAILURE );
#endif
case 'k': /* kerberos bind */
#ifdef LDAP_API_FEATURE_X_OPENLDAP_V2_KBIND
if( authmethod != -1 ) {
fprintf( stderr, "%s: -k incompatible with previous "
"authentication choice\n", prog );
exit( EXIT_FAILURE );
}
authmethod = LDAP_AUTH_KRBV4;
#else
fprintf( stderr, "%s: not compiled with Kerberos support\n", prog );
exit( EXIT_FAILURE );
#endif
break;
case 'K': /* kerberos bind, part one only */
#ifdef LDAP_API_FEATURE_X_OPENLDAP_V2_KBIND
if( authmethod != -1 ) {
fprintf( stderr, "%s: incompatible with previous "
"authentication choice\n", prog );
exit( EXIT_FAILURE );
}
authmethod = LDAP_AUTH_KRBV41;
#else
fprintf( stderr, "%s: not compiled with Kerberos support\n", prog );
exit( EXIT_FAILURE );
#endif
break;
case 'M':
/* enable Manage DSA IT */
manageDSAit++;
@ -590,6 +570,45 @@ tool_args( int argc, char **argv )
case 'n': /* print operations, don't actually do them */
dont++;
break;
case 'o':
control = ber_strdup( optarg );
if ( (cvalue = strchr( control, '=' )) != NULL ) {
*cvalue++ = '\0';
}
if ( strcasecmp( control, "nettimeout" ) == 0 ) {
if( nettimeout.tv_sec != -1 ) {
fprintf( stderr, "nettimeout option previously specified\n");
exit( EXIT_FAILURE );
}
if( cvalue == NULL || cvalue[0] == '\0' ) {
fprintf( stderr, "nettimeout: option value expected\n" );
usage();
}
if ( strcasecmp( cvalue, "none" ) == 0 ) {
nettimeout.tv_sec = 0;
} else if ( strcasecmp( cvalue, "max" ) == 0 ) {
nettimeout.tv_sec = LDAP_MAXINT;
} else {
ival = strtol( cvalue, &next, 10 );
if ( next == NULL || next[0] != '\0' ) {
fprintf( stderr,
_("Unable to parse network timeout \"%s\"\n"), cvalue );
exit( EXIT_FAILURE );
}
nettimeout.tv_sec = ival;
}
if( nettimeout.tv_sec < 0 || nettimeout.tv_sec > LDAP_MAXINT ) {
fprintf( stderr, _("%s: invalid network timeout (%ld) specified\n"),
prog, (long)nettimeout.tv_sec );
exit( EXIT_FAILURE );
}
} else {
fprintf( stderr, "Invalid general option name: %s\n",
control );
usage();
}
break;
case 'O':
#ifdef HAVE_CYRUS_SASL
if( sasl_secprops != NULL ) {
@ -892,15 +911,6 @@ tool_args( int argc, char **argv )
exit( EXIT_FAILURE );
}
#endif
#ifdef LDAP_API_FEATURE_X_OPENLDAP_V2_KBIND
} else {
if ( authmethod == LDAP_AUTH_KRBV4 || authmethod == LDAP_AUTH_KRBV41 ) {
fprintf( stderr, "%s: -k/-K incompatible with LDAPv%d\n",
prog, protocol );
exit( EXIT_FAILURE );
}
#endif
}
}
@ -989,6 +999,16 @@ tool_conn_setup( int dont, void (*private_setup)( LDAP * ) )
}
}
}
if ( nettimeout.tv_sec > 0 ) {
if ( ldap_set_option( ld, LDAP_OPT_NETWORK_TIMEOUT, (void *) &nettimeout )
!= LDAP_OPT_SUCCESS )
{
fprintf( stderr, "Could not set LDAP_OPT_NETWORK_TIMEOUT %ld\n",
(long)nettimeout.tv_sec );
exit( EXIT_FAILURE );
}
}
}
return ld;
@ -1069,15 +1089,6 @@ tool_bind( LDAP *ld )
msgbuf[0] = 0;
#ifdef LDAP_API_FEATURE_X_OPENLDAP_V2_KBIND
if ( authmethod == LDAP_AUTH_KRBV4 || authmethod == LDAP_AUTH_KRBV41 ) {
msgid = ldap_bind( ld, binddn, passwd.bv_val, authmethod );
if ( msgid == -1 ) {
tool_perror( "ldap_bind", -1, NULL, NULL, NULL, NULL );
exit( LDAP_LOCAL_ERROR );
}
} else
#endif
{
/* simple bind */
rc = ldap_sasl_bind( ld, binddn, LDAP_SASL_SIMPLE, &passwd,
@ -1427,6 +1438,10 @@ tool_check_abandon( LDAP *ld, int msgid )
fprintf( stderr, "got interrupt, abandon got %d: %s\n",
rc, ldap_err2string( rc ) );
return -1;
case -1:
/* just unbind, ignoring the request */
return -1;
}
return 0;

View file

@ -2,7 +2,7 @@
/* $OpenLDAP$ */
/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
*
* Copyright 1998-2006 The OpenLDAP Foundation.
* Copyright 1998-2007 The OpenLDAP Foundation.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -94,6 +94,9 @@ extern struct berval pr_cookie;
extern int chaining;
#endif /* LDAP_CONTROL_X_CHAINING_BEHAVIOR */
/* options */
extern struct timeval nettimeout;
/* Defined in common.c, set in main() */
extern const char __Version[];

View file

@ -2,7 +2,7 @@
/* $OpenLDAP$ */
/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
*
* Copyright 1998-2006 The OpenLDAP Foundation.
* Copyright 1998-2007 The OpenLDAP Foundation.
* Portions Copyright 1998-2003 Kurt D. Zeilenga.
* Portions Copyright 1998-2001 Net Boolean Incorporated.
* All rights reserved.
@ -102,7 +102,7 @@ static int docompare LDAP_P((
const char options[] = "z"
"Cd:D:e:h:H:IkKMnO:p:P:QR:U:vVw:WxX:y:Y:Z";
"Cd:D:e:h:H:IMnO:o:p:P:QR:U:vVw:WxX:y:Y:Z";
#ifdef LDAP_CONTROL_DONTUSECOPY
int dontUseCopy = 0;

View file

@ -2,7 +2,7 @@
/* $OpenLDAP$ */
/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
*
* Copyright 1998-2006 The OpenLDAP Foundation.
* Copyright 1998-2007 The OpenLDAP Foundation.
* Portions Copyright 1998-2003 Kurt D. Zeilenga.
* All rights reserved.
*
@ -76,7 +76,7 @@ usage( void )
const char options[] = "r"
"cd:D:e:f:h:H:IkKMnO:p:P:QR:U:vVw:WxX:y:Y:Z";
"cd:D:e:f:h:H:IMnO:o:p:P:QR:U:vVw:WxX:y:Y:Z";
int
handle_private_option( int i )

View file

@ -2,7 +2,7 @@
/* $OpenLDAP$ */
/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
*
* Copyright 2005-2006 The OpenLDAP Foundation.
* Copyright 2005-2007 The OpenLDAP Foundation.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -49,7 +49,7 @@ usage( void )
const char options[] = ""
"d:D:e:h:H:InO:p:QR:U:vVw:WxX:y:Y:Z";
"d:D:e:h:H:InO:o:p:QR:U:vVw:WxX:y:Y:Z";
int
handle_private_option( int i )

File diff suppressed because it is too large Load diff

View file

@ -2,7 +2,7 @@
/* $OpenLDAP$ */
/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
*
* Copyright 1998-2006 The OpenLDAP Foundation.
* Copyright 1998-2007 The OpenLDAP Foundation.
* Portions Copyright 1998-2003 Kurt D. Zeilenga.
* Portions Copyright 1998-2001 Net Boolean Incorporated.
* Portions Copyright 2001-2003 IBM Corporation.
@ -91,7 +91,7 @@ usage( void )
const char options[] = "rs:"
"cd:D:e:f:h:H:IkKMnO:p:P:QR:U:vVw:WxX:y:Y:Z";
"cd:D:e:f:h:H:IMnO:o:p:P:QR:U:vVw:WxX:y:Y:Z";
int
handle_private_option( int i )

View file

@ -2,7 +2,7 @@
/* $OpenLDAP$ */
/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
*
* Copyright 1998-2006 The OpenLDAP Foundation.
* Copyright 1998-2007 The OpenLDAP Foundation.
* Portions Copyright 1998-2003 Kurt D. Zeilenga.
* Portions Copyright 1998-2001 Net Boolean Incorporated.
* Portions Copyright 2001-2003 IBM Corporation.
@ -81,7 +81,7 @@ usage( void )
const char options[] = "a:As:St:T:"
"d:D:e:h:H:InO:p:QR:U:vVw:WxX:y:Y:Z";
"d:D:e:h:H:InO:o:p:QR:U:vVw:WxX:y:Y:Z";
int
handle_private_option( int i )
@ -411,6 +411,9 @@ main( int argc, char *argv[] )
ber_memfree( retoid );
ber_bvfree( retdata );
rc = ldap_search_s( ld, binddn, LDAP_SCOPE_BASE, "(objectclass=*)",
NULL, 0, &res );
rc = ( code == LDAP_SUCCESS ) ? EXIT_SUCCESS : EXIT_FAILURE;
done:

View file

@ -2,7 +2,7 @@
/* $OpenLDAP$ */
/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
*
* Copyright 1998-2006 The OpenLDAP Foundation.
* Copyright 1998-2007 The OpenLDAP Foundation.
* Portions Copyright 1998-2003 Kurt D. Zeilenga.
* Portions Copyright 1998-2001 Net Boolean Incorporated.
* Portions Copyright 2001-2003 IBM Corporation.
@ -249,7 +249,7 @@ urlize(char *url)
const char options[] = "a:Ab:cE:F:l:Ls:S:tT:uz:"
"Cd:D:e:f:h:H:IkKMnO:p:P:QR:U:vVw:WxX:y:Y:Z";
"Cd:D:e:f:h:H:IMnO:o:p:P:QR:U:vVw:WxX:y:Y:Z";
int
handle_private_option( int i )
@ -920,7 +920,7 @@ getNextPage:
char *realbase = base;
if ( realbase == NULL ) {
ldap_get_option( ld, LDAP_OPT_DEFBASE, (void **)&realbase );
ldap_get_option( ld, LDAP_OPT_DEFBASE, (void **)(char *)&realbase );
}
printf( "#\n" );
@ -1167,7 +1167,7 @@ static int dosearch(
nextended++;
print_extended( ld, msg );
if( ldap_msgid( msg ) == 0 ) {
if ( ldap_msgid( msg ) == 0 ) {
/* unsolicited extended operation */
goto done;
}

View file

@ -2,7 +2,7 @@
/* $OpenLDAP$ */
/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
*
* Copyright 1998-2006 The OpenLDAP Foundation.
* Copyright 1998-2007 The OpenLDAP Foundation.
* Portions Copyright 1998-2003 Kurt D. Zeilenga.
* Portions Copyright 1998-2001 Net Boolean Incorporated.
* Portions Copyright 2001-2003 IBM Corporation.
@ -62,7 +62,7 @@ usage( void )
const char options[] = ""
"d:D:e:h:H:InO:p:QR:U:vVw:WxX:y:Y:Z";
"d:D:e:h:H:InO:o:p:QR:U:vVw:WxX:y:Y:Z";
int
handle_private_option( int i )

1989
configure vendored

File diff suppressed because it is too large Load diff

View file

@ -1,7 +1,7 @@
dnl $OpenLDAP$
dnl This work is part of OpenLDAP Software <http://www.openldap.org/>.
dnl
dnl Copyright 1998-2006 The OpenLDAP Foundation.
dnl Copyright 1998-2007 The OpenLDAP Foundation.
dnl All rights reserved.
dnl
dnl Redistribution and use in source and binary forms, with or without
@ -23,7 +23,7 @@ define([AC_LIBTOOL_LANG_F77_CONFIG], [:])dnl
define([AC_LIBTOOL_LANG_GCJ_CONFIG], [:])dnl
dnl ================================================================
dnl Configure.in for OpenLDAP
AC_COPYRIGHT([[Copyright 1998-2006 The OpenLDAP Foundation. All rights reserved.
AC_COPYRIGHT([[Copyright 1998-2007 The OpenLDAP Foundation. All rights reserved.
Restrictions apply, see COPYRIGHT and LICENSE files.]])
AC_REVISION([$OpenLDAP$])
AC_INIT([OpenLDAP],,[http://www.openldap.org/its/])
@ -93,7 +93,7 @@ AH_TOP([
/* begin of portable.h.pre */
/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
*
* Copyright 1998-2006 The OpenLDAP Foundation
* Copyright 1998-2007 The OpenLDAP Foundation
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -230,8 +230,6 @@ OL_ARG_ENABLE(syslog,[ --enable-syslog enable syslog support], auto)dnl
OL_ARG_ENABLE(proctitle,[ --enable-proctitle enable proctitle support], yes)dnl
dnl OL_ARG_ENABLE(referrals,[ --enable-referrals enable LDAPv2+ Referrals (experimental)], no)dnl
ol_enable_referrals=${ol_enable_referrals-no}
dnl OL_ARG_ENABLE(kbind,[ --enable-kbind enable LDAPv2+ Kerberos IV bind (deprecated)], no)dnl
ol_enable_kbind=${ol_enable_kbind-no}
OL_ARG_ENABLE(ipv6,[ --enable-ipv6 enable IPv6 support], auto)dnl
OL_ARG_ENABLE(local,[ --enable-local enable AF_LOCAL (AF_UNIX) socket support], auto)dnl
@ -241,9 +239,6 @@ OL_ARG_WITH(cyrus_sasl,[ --with-cyrus-sasl with Cyrus SASL support],
auto, [auto yes no] )
OL_ARG_WITH(fetch,[ --with-fetch with fetch(3) URL support],
auto, [auto yes no] )
dnl OL_ARG_WITH(kerberos,[ --with-kerberos with Kerberos support],
dnl auto, [auto k5 k5only k425 kth k4 afs yes no])
ol_with_kerberos=${ol_with_kerberos-auto}
OL_ARG_WITH(threads,[ --with-threads with threads],
auto, [auto nt posix mach pth lwp yes no manual] )
OL_ARG_WITH(tls,[ --with-tls with TLS/SSL support],
@ -254,6 +249,9 @@ OL_ARG_WITH(yielding_select,
OL_ARG_WITH(mp,
[ --with-mp with multiple precision statistics auto|longlong|long|bignum|gmp],
auto, [auto longlong long bignum gmp yes no])
OL_ARG_WITH(odbc,
[ --with-odbc with specific ODBC support iodbc|unixodbc|auto],
auto, [auto iodbc unixodbc] )
dnl ----------------------------------------------------------------
dnl Server options
@ -328,10 +326,8 @@ Overlays="accesslog \
auditlog \
constraint \
dds \
denyop \
dyngroup \
dynlist \
lastmod \
ppolicy \
proxycache \
refint \
@ -356,14 +352,10 @@ OL_ARG_ENABLE(constraint,[ --enable-constraint Attribute Constraint overlay
no, [no yes mod], ol_enable_overlays)
OL_ARG_ENABLE(dds,[ --enable-dds Dynamic Directory Services overlay],
no, [no yes mod], ol_enable_overlays)
OL_ARG_ENABLE(denyop,[ --enable-denyop Deny Operation overlay],
no, [no yes mod], ol_enable_overlays)
OL_ARG_ENABLE(dyngroup,[ --enable-dyngroup Dynamic Group overlay],
no, [no yes mod], ol_enable_overlays)
OL_ARG_ENABLE(dynlist,[ --enable-dynlist Dynamic List overlay],
no, [no yes mod], ol_enable_overlays)
OL_ARG_ENABLE(lastmod,[ --enable-lastmod Last Modification overlay],
no, [no yes mod], ol_enable_overlays)
OL_ARG_ENABLE(ppolicy,[ --enable-ppolicy Password Policy overlay],
no, [no yes mod], ol_enable_overlays)
OL_ARG_ENABLE(proxycache,[ --enable-proxycache Proxy Cache overlay],
@ -503,22 +495,6 @@ if test $ol_enable_lmpasswd = yes ; then
fi
fi
if test $ol_enable_kbind = yes ; then
if test $ol_with_kerberos = no ; then
AC_MSG_ERROR([options require --with-kerberos])
elif test $ol_with_kerberos = auto ; then
ol_with_kerberos=yes
fi
elif test $ol_enable_kbind = no ; then
if test $ol_with_kerberos = auto ; then
ol_with_kerberos=no
elif test $ol_with_kerberos != no ; then
AC_MSG_WARN([Kerberos detection enabled unnecessarily]);
ol_with_kerberos=no
fi
fi
if test $ol_enable_spasswd = yes ; then
if test $ol_with_cyrus_sasl = no ; then
AC_MSG_ERROR([options require --with-cyrus-sasl])
@ -1121,174 +1097,6 @@ if test $ol_enable_local != no ; then
fi
fi
dnl ----------------------------------------------------------------
dnl Kerberos
ol_link_kbind=no
ol_link_krb5=no
ol_link_krb4=no
case $ol_with_kerberos in yes | auto | k5 | k5only | k425)
AC_CHECK_HEADERS(krb5.h)
if test $ac_cv_header_krb5_h = yes ; then
dnl lazy check for Heimdal Kerberos
AC_CHECK_HEADERS(heim_err.h)
if test $ac_cv_header_heim_err_h = yes ; then
krb5_impl=heimdal
else
krb5_impl=mit
fi
if test $krb5_impl = mit; then
AC_CHECK_LIB(k5crypto, main,
[krb5crypto=k5crypto],
[krb5crypto=crypto])
AC_CHECK_LIB(krb5, main,
[have_krb5=yes
KRB5_LIBS="-lkrb5 -l$krb5crypto -lcom_err"],
[have_krb5=no],
[-l$krb5crypto -lcom_err])
elif test $krb5_impl = heimdal; then
AC_CHECK_LIB(des, main,
[krb5crypto=des],
[krb5crypto=crypto])
AC_CHECK_LIB(krb5, main,
[have_krb5=yes
KRB5_LIBS="-lkrb5 -l$krb5crypto -lasn1 -lroken -lcom_err"],
[have_krb5=no],
[-l$krb5crypto -lasn1 -lroken -lcom_err])
AC_DEFINE(HAVE_HEIMDAL_KERBEROS, 1,
[define if you have HEIMDAL Kerberos])
else
have_krb5=no
AC_MSG_WARN([Unrecognized Kerberos5 Implementation])
fi
if test $have_krb5 = yes ; then
ol_link_krb5=yes
AC_DEFINE(HAVE_KRB5, 1,
[define if you have Kerberos V])
if test $ol_with_kerberos = k5only ; then
ol_with_kerberos=found
fi
elif test $ol_with_kerberos != auto ; then
AC_MSG_ERROR([Required Kerberos 5 support not available])
fi
fi
;;
esac
if test $ol_link_krb5 = yes &&
{ test $ol_with_kerberos = yes ||
test $ol_with_kerberos = auto ||
test $ol_with_kerberos = k425; }; then
AC_CHECK_HEADERS(kerberosIV/krb.h kerberosIV/des.h)
if test $ac_cv_header_kerberosIV_krb_h = yes ; then
if test $krb5_impl = mit; then
AC_CHECK_LIB(krb4, main, [have_k425=yes
KRB4_LIBS="-lkrb4 -ldes425"], [have_k425=no],
[-ldes425 -lkrb5 -l$krb5crypto -lcom_err])
elif test $krb5_impl = heimdal; then
AC_CHECK_LIB(krb4, main, [have_k425=yes
KRB4_LIBS="-lkrb4"], [have_k425=no],
[-lkrb5 -l$krb5crypto -lasn1 -lroken -lcom_err])
else
have_425=no
AC_MSG_WARN([Unrecongized Kerberos V Implementation])
fi
if test $have_k425 = yes ; then
ol_with_kerberos=found
ol_link_krb4=yes
AC_DEFINE(HAVE_KRB425, 1,
[define if you have Kerberos V with IV support])
AC_DEFINE(HAVE_KRB4, 1,
[define if you have Kerberos IV])
AC_CACHE_CHECK([for des_debug in Kerberos libraries],
[ol_cv_var_des_debug], [
dnl save the flags
save_LIBS="$LIBS"
LIBS="$KRB4_LIBS $KRB5_LIBS $LIBS"
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
#include <kerberosIV/krb.h>
#include <kerberosIV/des.h>
extern int des_debug;
]], [[
des_debug = 1;
]])],[ol_cv_var_des_debug=yes],[ol_cv_var_des_debug=no])
dnl restore the LIBS
LIBS="$save_LIBS"
])
if test $ol_cv_var_des_debug = yes ; then
AC_DEFINE(HAVE_DES_DEBUG,1,
[define if you have Kerberos des_debug])
fi
LIBS="$save_LIBS"
fi
fi
fi
if test $ol_link_krb5 = yes ; then
ol_with_kerberos=found
fi
case $ol_with_kerberos in yes | auto | k4 | kth)
AC_CHECK_HEADERS(krb.h des.h krb-archaeology.h )
if test $ac_cv_header_krb_h = yes ; then
AC_CHECK_LIB(krb, main, [have_k4=yes], [have_k4=no], [-ldes])
if test $have_k4 = yes ; then
ol_with_kerberos=found
ol_link_krb4=yes
AC_DEFINE(HAVE_KRB4, 1,
[define if you have Kerberos IV])
KRB4_LIBS="-lkrb -ldes"
if test $ac_cv_header_krb_archaeology_h = yes ; then
AC_DEFINE(HAVE_KTH_KERBEROS, 1,
[define if you have Kth Kerberos])
fi
fi
fi
;;
esac
if test $ol_link_krb4 = yes && test $ol_enable_kbind != no ; then
ol_link_kbind=yes
elif test $ol_enable_kbind = yes ; then
AC_MSG_ERROR([Kerberos IV detection failed])
fi
if test $ol_link_krb4 = yes || test $ol_link_krb5 = yes ; then
AC_DEFINE(HAVE_KERBEROS, 1, [define if you have Kerberos])
elif test $ol_with_kerberos != auto && test $ol_with_kerberos != no ; then
AC_MSG_ERROR([Kerberos detection failed])
fi
dnl ----------------------------------------------------------------
dnl TLS/SSL
@ -1518,7 +1326,22 @@ dnl [ol_cv_pthread_lpthread_lexc])
fi
dnl Check functions for compatibility
AC_CHECK_FUNCS(pthread_kill pthread_rwlock_destroy)
AC_CHECK_FUNCS(pthread_kill)
dnl Check for pthread_rwlock_destroy with <pthread.h>
dnl as pthread_rwlock_t may not be defined.
AC_CACHE_CHECK([for pthread_rwlock_destroy with <pthread.h>],
[ol_cv_func_pthread_rwlock_destroy], [
dnl save the flags
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
#include <pthread.h>
pthread_rwlock_t rwlock;
]], [[pthread_rwlock_destroy(&rwlock);]])],[ol_cv_func_pthread_rwlock_destroy=yes],[ol_cv_func_pthread_rwlock_destroy=no])
])
if test $ol_cv_func_pthread_rwlock_destroy = yes ; then
AC_DEFINE(HAVE_PTHREAD_RWLOCK_DESTROY,1,
[define if you have pthread_rwlock_destroy function])
fi
dnl Check for pthread_detach with <pthread.h> inclusion
dnl as it's symbol may have been mangled.
@ -2071,16 +1894,34 @@ if test $ol_enable_sql != no ; then
sql_LIBS="$LIBS"
LIBS="$LTHREAD_LIBS"
AC_CHECK_LIB(iodbc,SQLDriverConnect,[have_iodbc=yes],[have_iodbc=no])
if test $have_iodbc = yes ; then
ol_link_sql="-liodbc"
else
AC_CHECK_LIB(odbc,SQLDriverConnect,[have_odbc=yes],[have_odbc=no])
if test $have_odbc = yes ; then
ol_link_sql="-lodbc"
fi
if test $ol_with_odbc = auto ; then
ol_with_odbc="iodbc unixodbc"
fi
for odbc in $ol_with_odbc ; do
if test $ol_link_sql = no ; then
case $odbc in
iodbc)
AC_CHECK_LIB(iodbc, SQLDriverConnect, [have_iodbc=yes], [have_iodbc=no])
if test $have_iodbc = yes ; then
ol_link_sql="-liodbc"
fi
;;
unixodbc)
AC_CHECK_LIB(odbc, SQLDriverConnect, [have_odbc=yes], [have_odbc=no])
if test $have_odbc = yes ; then
ol_link_sql="-lodbc"
fi
;;
*)
AC_MSG_ERROR([unknown ODBC library])
;;
esac
fi
done
LIBS="$sql_LIBS"
if test $ol_link_sql != no ; then
@ -2526,10 +2367,6 @@ if test "$ol_enable_syslog" = yes ; then
AC_DEFINE(LDAP_SYSLOG,1,
[define this to add syslog code])
fi
if test "$ol_link_kbind" != no ; then
AC_DEFINE(LDAP_API_FEATURE_X_OPENLDAP_V2_KBIND,LDAP_VENDOR_VERSION,
[define to LDAP VENDOR VERSION])
fi
if test "$ol_enable_proctitle" != no ; then
AC_DEFINE(LDAP_PROCTITLE,1,
[define this for LDAP process title support])
@ -2795,18 +2632,6 @@ if test "$ol_enable_dds" != no ; then
AC_DEFINE_UNQUOTED(SLAPD_OVER_DDS,$MFLAG,[define for Dynamic Directory Services overlay])
fi
if test "$ol_enable_denyop" != no ; then
BUILD_DENYOP=$ol_enable_denyop
if test "$ol_enable_denyop" = mod ; then
MFLAG=SLAPD_MOD_DYNAMIC
SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS denyop.la"
else
MFLAG=SLAPD_MOD_STATIC
SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS denyop.o"
fi
AC_DEFINE_UNQUOTED(SLAPD_OVER_DENYOP,$MFLAG,[define for Deny Operation overlay])
fi
if test "$ol_enable_dyngroup" != no ; then
BUILD_DYNGROUP=$ol_enable_dyngroup
if test "$ol_enable_dyngroup" = mod ; then
@ -2831,18 +2656,6 @@ if test "$ol_enable_dynlist" != no ; then
AC_DEFINE_UNQUOTED(SLAPD_OVER_DYNLIST,$MFLAG,[define for Dynamic List overlay])
fi
if test "$ol_enable_lastmod" != no ; then
BUILD_LASTMOD=$ol_enable_lastmod
if test "$ol_enable_lastmod" = mod ; then
MFLAG=SLAPD_MOD_DYNAMIC
SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS lastmod.la"
else
MFLAG=SLAPD_MOD_STATIC
SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS lastmod.o"
fi
AC_DEFINE_UNQUOTED(SLAPD_OVER_LASTMOD,$MFLAG,[define for Last Modification overlay])
fi
if test "$ol_enable_ppolicy" != no ; then
BUILD_PPOLICY=$ol_enable_ppolicy
if test "$ol_enable_ppolicy" = mod ; then
@ -3139,7 +2952,7 @@ rm -f $BACKENDSC
cat > $BACKENDSC << ENDX
/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
*
* Copyright 1998-2006 The OpenLDAP Foundation.
* Copyright 1998-2007 The OpenLDAP Foundation.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -3190,7 +3003,7 @@ rm -f $OVERLAYSC
cat > $OVERLAYSC << ENDX
/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
*
* Copyright 1998-2006 The OpenLDAP Foundation.
* Copyright 1998-2007 The OpenLDAP Foundation.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View file

@ -1,4 +1,4 @@
Copyright 1998-2006 The OpenLDAP Foundation
Copyright 1998-2007 The OpenLDAP Foundation
All rights reserved.
Redistribution and use in source and binary forms, with or without

View file

@ -15,6 +15,7 @@ LDAPAttrType::LDAPAttrType(){
desc = string ();
names = StringList ();
single = false;
usage = 0;
}
LDAPAttrType::LDAPAttrType (const LDAPAttrType &at){
@ -25,6 +26,7 @@ LDAPAttrType::LDAPAttrType (const LDAPAttrType &at){
desc = at.desc;
names = at.names;
single = at.single;
usage = at.usage;
}
LDAPAttrType::LDAPAttrType (string at_item) {
@ -38,10 +40,11 @@ LDAPAttrType::LDAPAttrType (string at_item) {
a = ldap_str2attributetype (at_item.c_str(), &ret, &errp,SCHEMA_PARSE_FLAG);
if (a) {
this->setNames (a->at_names);
this->setDesc (a->at_desc);
this->setOid (a->at_oid);
this->setSingle (a->at_single_value);
this->setNames( a->at_names );
this->setDesc( a->at_desc );
this->setOid( a->at_oid );
this->setSingle( a->at_single_value );
this->setUsage( a->at_usage );
}
// else? -> error
}
@ -70,6 +73,10 @@ void LDAPAttrType::setOid (char *at_oid) {
oid = at_oid;
}
void LDAPAttrType::setUsage (int at_usage) {
usage = at_usage;
}
bool LDAPAttrType::isSingle () {
return single;
}
@ -93,3 +100,7 @@ string LDAPAttrType::getName () {
else
return *(names.begin());
}
int LDAPAttrType::getUsage () {
return usage;
}

View file

@ -24,6 +24,7 @@ class LDAPAttrType{
StringList names;
string desc, oid;
bool single;
int usage;
public :
@ -74,15 +75,22 @@ class LDAPAttrType{
StringList getNames();
/**
* Returns true if attribute type hllows only single value
* Returns true if attribute type allows only single value
*/
bool isSingle();
/**
* Return the 'usage' value:
* (0=userApplications, 1=directoryOperation, 2=distributedOperation,
* 3=dSAOperation)
*/
int getUsage ();
void setNames (char **at_names);
void setDesc (char *at_desc);
void setOid (char *at_oid);
void setSingle (int at_single_value);
void setUsage (int at_usage );
};
#endif // LDAP_ATTRTYPE_H

View file

@ -32,9 +32,9 @@ LDAPException::LDAPException(const LDAPAsynConnection *lc){
const char* err_string;
ldap_get_option(l,LDAP_OPT_DIAGNOSTIC_MESSAGE,&err_string);
if ( err_string ) {
m_res_string = string(err_string);
m_err_string = string(err_string);
} else {
m_res_string = "";
m_err_string = "";
}
}

View file

@ -1,7 +1,7 @@
/* Generic time.h */
/* $OpenLDAP$ */
/*
* Copyright 1998-2006 The OpenLDAP Foundation, Redwood City, California, USA
* Copyright 1998-2007 The OpenLDAP Foundation, Redwood City, California, USA
* All rights reserved.
*
* Redistribution and use in source and binary forms are permitted only

View file

@ -1,4 +1,4 @@
Copyright 2005-2006 The OpenLDAP Foundation. All rights reserved.
Copyright 2005-2007 The OpenLDAP Foundation. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted only as authorized by the OpenLDAP

View file

@ -1,6 +1,6 @@
/* $OpenLDAP$ */
/*
* Copyright 1998-2006 The OpenLDAP Foundation.
* Copyright 1998-2007 The OpenLDAP Foundation.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -283,7 +283,7 @@ cleanup:;
if ( user != NULL && user != target ) {
op->o_bd = user_be;
be_entry_release_r( op, group );
be_entry_release_r( op, user );
op->o_bd = be;
}

View file

@ -1,4 +1,4 @@
Copyright 2004-2006 The OpenLDAP Foundation. All rights reserved.
Copyright 2004-2007 The OpenLDAP Foundation. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted only as authorized by the OpenLDAP

View file

@ -2,7 +2,7 @@
/* $OpenLDAP$ */
/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
*
* Copyright 2005-2006 The OpenLDAP Foundation.
* Copyright 2005-2007 The OpenLDAP Foundation.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View file

@ -1,5 +1,5 @@
.TH SLAPO-ALLOP 5 "RELEASEDATE" "OpenLDAP LDVERSION"
.\" Copyright 2005-2006 The OpenLDAP Foundation All Rights Reserved.
.\" Copyright 2005-2007 The OpenLDAP Foundation All Rights Reserved.
.\" Copying restrictions apply. See COPYRIGHT/LICENSE.
.\" $OpenLDAP$
.SH NAME

View file

@ -1,7 +1,7 @@
# $OpenLDAP$
# This work is part of OpenLDAP Software <http://www.openldap.org/>.
#
# Copyright 2003-2006 The OpenLDAP Foundation.
# Copyright 2003-2007 The OpenLDAP Foundation.
# Portions Copyright 2004 by IBM Corporation.
# All rights reserved.

View file

@ -1,7 +1,8 @@
/* denyop.c - Denies operations */
/* $OpenLDAP$ */
/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
*
* Copyright 2004-2006 The OpenLDAP Foundation.
* Copyright 2004-2007 The OpenLDAP Foundation.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View file

@ -1,4 +1,4 @@
Copyright 2004-2006 The OpenLDAP Foundation. All rights reserved.
Copyright 2004-2007 The OpenLDAP Foundation. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted only as authorized by the OpenLDAP

View file

@ -1,6 +1,6 @@
/* $OpenLDAP$ */
/*
* Copyright 2004-2006 The OpenLDAP Foundation.
* Copyright 2004-2007 The OpenLDAP Foundation.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View file

@ -1,7 +1,8 @@
/* lastmod.c - returns last modification info */
/* $OpenLDAP$ */
/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
*
* Copyright 2004-2006 The OpenLDAP Foundation.
* Copyright 2004-2007 The OpenLDAP Foundation.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -563,7 +564,7 @@ lastmod_update( Operation *op, SlapReply *rs )
int rc;
op->o_bd->bd_info = (BackendInfo *)on->on_info->oi_orig;
rc = (*op->o_bd->bd_info->bi_entry_get_rw)( op, &bv_name, NULL, NULL, 0, &e );
rc = op->o_bd->bd_info->bi_entry_get_rw( op, &bv_name, NULL, NULL, 0, &e );
if ( rc == LDAP_SUCCESS ) {
a = attr_find( e->e_attrs, slap_schema.si_ad_modifiersName );
if ( a != NULL ) {
@ -592,7 +593,7 @@ lastmod_update( Operation *op, SlapReply *rs )
assert( dn_match( &bv_name, &e->e_name ) );
assert( dn_match( &bv_nname, &e->e_nname ) );
(*op->o_bd->bd_info->bi_entry_release_rw)( op, e, 0 );
op->o_bd->bd_info->bi_entry_release_rw( op, e, 0 );
}
op->o_bd->bd_info = bi;

View file

@ -1,4 +1,4 @@
.\" Copyright 2004-2006 The OpenLDAP Foundation All Rights Reserved.
.\" Copyright 2004-2007 The OpenLDAP Foundation All Rights Reserved.
.\" Copying restrictions apply. See COPYRIGHT/LICENSE.
.TH SLAPO_LASTMOD 5 "RELEASEDATE" "OpenLDAP LDVERSION"
.SH NAME

View file

@ -1,4 +1,4 @@
Copyright 2004-2006 The OpenLDAP Foundation. All rights reserved.
Copyright 2004-2007 The OpenLDAP Foundation. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted only as authorized by the OpenLDAP

View file

@ -1,6 +1,6 @@
/* $OpenLDAP$ */
/*
* Copyright 1998-2006 The OpenLDAP Foundation.
* Copyright 1998-2007 The OpenLDAP Foundation.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View file

@ -1,6 +1,6 @@
/* $OpenLDAP$ */
/*
* Copyright 1998-2006 The OpenLDAP Foundation.
* Copyright 1998-2007 The OpenLDAP Foundation.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View file

@ -1,6 +1,6 @@
/* $OpenLDAP$ */
/*
* Copyright 1998-2006 The OpenLDAP Foundation.
* Copyright 1998-2007 The OpenLDAP Foundation.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View file

@ -880,20 +880,32 @@ smbk5pwd_modules_init( smbk5pwd_t *pi )
ret = krb5_init_context(&context);
if (ret) {
Debug( LDAP_DEBUG_ANY, "smbk5pwd: "
"unable to initialize krb5 context.\n",
0, 0, 0 );
"unable to initialize krb5 context (%d).\n",
ret, 0, 0 );
oc_krb5KDCEntry = NULL;
return -1;
}
/* FIXME: check return code? */
ret = kadm5_s_init_with_password_ctx( context,
KADM5_ADMIN_SERVICE,
NULL,
KADM5_ADMIN_SERVICE,
&conf, 0, 0, &kadm_context );
if (ret) {
char *err_str, *err_msg = "<unknown error>";
err_str = krb5_get_error_string( context );
if (!err_str)
err_msg = krb5_get_err_text( context, ret );
Debug( LDAP_DEBUG_ANY, "smbk5pwd: "
"unable to initialize krb5 admin context: %s (%d).\n",
err_str ? err_str : err_msg, ret, 0 );
if (err_str)
krb5_free_error_string( context, err_str );
krb5_free_context( context );
oc_krb5KDCEntry = NULL;
return -1;
}
/* FIXME: check return code? */
db = _kadm5_s_get_db( kadm_context );
}
#endif /* DO_KRB5 */

View file

@ -2,7 +2,7 @@
/* $OpenLDAP$ */
/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
*
* Copyright 2006 The OpenLDAP Foundation.
* Copyright 2006-2007 The OpenLDAP Foundation.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View file

@ -1,4 +1,4 @@
Copyright 2004-2006 The OpenLDAP Foundation. All rights reserved.
Copyright 2004-2007 The OpenLDAP Foundation. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted only as authorized by the OpenLDAP

View file

@ -1,4 +1,4 @@
Copyright 2003-2006 The OpenLDAP Foundation. All rights reserved.
Copyright 2003-2007 The OpenLDAP Foundation. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted only as authorized by the OpenLDAP

View file

@ -2,7 +2,7 @@
# $OpenLDAP$
## This work is part of OpenLDAP Software <http://www.openldap.org/>.
##
## Copyright 1998-2006 The OpenLDAP Foundation.
## Copyright 1998-2007 The OpenLDAP Foundation.
## All rights reserved.
##
## Redistribution and use in source and binary forms, with or without

View file

@ -1,15 +1,15 @@
Tools ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
ldapcompare * DE**HI*K M*OPQR UVWXYZ de *h**k *n*p* vwxyz
ldapdelete *CDE**HI*K M*OPQR UVWXYZ cdef*h**k *n*p* vwxy
ldapmodify *CDE**HI*K M*OPQRS UVWXYZabcde *h**k *n*p*r t vwxy
ldapmodrdn *CDE**HI*K M*OPQR UVWXYZ cdef*h**k *n*p*rs vwxy
ldappasswd A*CDE**HI* *O QRS UVWXYZa def*h** * * * s vwxy
ldapsearch A*CDE**HI*KLM*OPQRSTUVWXYZab def*h**kl*n*p* stuvwxyz
ldapwhoami * DE**HI* *O QR UVWXYZ def*h** *n*p* vwxy
ldapcompare * DE**HI*K M*OPQR UVWXYZ de *h**k *nop* vwxyz
ldapdelete *CDE**HI*K M*OPQR UVWXYZ cdef*h**k *nop* vwxy
ldapmodify *CDE**HI*K M*OPQRS UVWXYZabcde *h**k *nop*r t vwxy
ldapmodrdn *CDE**HI*K M*OPQR UVWXYZ cdef*h**k *nop*rs vwxy
ldappasswd A*CDE**HI* *O QRS UVWXYZa def*h** * o * s vwxy
ldapsearch A*CDE**HI*KLM*OPQRSTUVWXYZab def*h**kl*nop* stuvwxyz
ldapwhoami * DE**HI* *O QR UVWXYZ def*h** *nop* vwxy
* reserved
BFGJgijmoq01235789
BFGJgijmq01235789
* General flags:
-C Chase Referrals
@ -25,6 +25,7 @@ ldapwhoami * DE**HI* *O QR UVWXYZ def*h** *n*p* vwxy
-h host
-n no-op
-N no (SASLprep) normalization of simple bind password
-o general connection options (currently nettimeout only)
-p port
-v verbose
-V version

View file

@ -1,4 +1,4 @@
Copyright 1998-2006 The OpenLDAP Foundation
Copyright 1998-2007 The OpenLDAP Foundation
All rights reserved.
Redistribution and use in source and binary forms, with or without

View file

@ -2,7 +2,7 @@
# $OpenLDAP$
## This work is part of OpenLDAP Software <http://www.openldap.org/>.
##
## Copyright 2005-2006 The OpenLDAP Foundation.
## Copyright 2005-2007 The OpenLDAP Foundation.
## All rights reserved.
##
## Redistribution and use in source and binary forms, with or without
@ -20,6 +20,7 @@ sdf-src: \
abstract.sdf \
config.sdf \
dbtools.sdf \
glossary.sdf \
guide.sdf \
install.sdf \
intro.sdf \

View file

@ -1,5 +1,5 @@
# $OpenLDAP$
# Copyright 1999-2006 The OpenLDAP Foundation, All Rights Reserved.
# Copyright 1999-2007 The OpenLDAP Foundation, All Rights Reserved.
# COPYING RESTRICTIONS APPLY, see COPYRIGHT.
#
# OpenLDAP Administrator's Guide: Abstract

View file

@ -1,12 +1,10 @@
# $OpenLDAP$
# Copyright 1999-2006 The OpenLDAP Foundation, All Rights Reserved.
# Copyright 1999-2007 The OpenLDAP Foundation, All Rights Reserved.
# COPYING RESTRICTIONS APPLY, see COPYRIGHT.
#
# guide.sdf
#
!define DOC_TOC 0
!macro build_html_cover
!endmacro

View file

@ -1,20 +1,21 @@
# $OpenLDAP$
# Copyright 1999-2006 The OpenLDAP Foundation, All Rights Reserved.
# Copyright 1999-2007 The OpenLDAP Foundation, All Rights Reserved.
# COPYING RESTRICTIONS APPLY, see COPYRIGHT.
H1: The Big Picture - Configuration Choices
This section gives a brief overview of various {{TERM:LDAP}} directory
configurations, and how your stand-alone LDAP server {{slapd}}(8)
configurations, and how your Standalone LDAP Daemon {{slapd}}(8)
fits in with the rest of the world.
H2: Local Directory Service
In this configuration, you run a {{slapd}} which provides directory
service for your local domain only. It does not interact with other
directory servers in any way. This configuration is shown in Figure 3.1.
In this configuration, you run a {{slapd}}(8) instance which provides
directory service for your local domain only. It does not interact
with other directory servers in any way. This configuration is shown
in Figure 3.1.
!import "config_local.gif"; align="center"; title="Local service via slapd configuration"
!import "config_local.gif"; align="center"; title="Local service via slapd(8) configuration"
FT[align="Center"] Figure 3.1: Local service configuration.
Use this configuration if you are just starting out (it's the one the
@ -25,31 +26,35 @@ It's easy to upgrade to another configuration later if you want.
H2: Local Directory Service with Referrals
In this configuration, you run a slapd which provides directory service
for your local domain and configure it to return referrals to a
{{superior}} service capable of handling requests outside your local domain.
You may run this service yourself or use one provided to you.
In this configuration, you run a {{slapd}}(8) instance which provides
directory service for your local domain and configure it to return
referrals to other servers capable of handling requests. You may
run this service (or services) yourself or use one provided to you.
This configuration is shown in Figure 3.2.
!import "config_ref.gif"; align="center"; title="Local service with referrals"
FT[align="Center"] Figure 3.2: Local service with referrals
Use this configuration if you want to provide local service and
participate in the Global Directory.
Use this configuration if you want to provide local service and
participate in the Global Directory, or you want to delegate
responsibility for {{subordinate}} entries to another server.
H2: Replicated Directory Service
The slurpd daemon is used to propagate changes from a master slapd
to one or more slave slapds. An example master-slave configuration
is shown in figure 3.3.
slapd(8) includes support for {{LDAP Sync}}-based replication, called
{{syncrepl}}, which may be used to maintain shadow copies of directory
information on multiple directory servers. In its most basic
configuration, the {{master}} is a syncrepl provider and one or more
{{slave}} (or {{shadow}}) are syncrepl consumers. An example
master-slave configuration is shown in figure 3.3.
!import "config_repl.gif"; align="center"; title="Replicated Directory Services"
FT[align="Center"] Figure 3.3: Replicated Directory Services
This configuration can be used in conjunction with either of the first
two configurations in situations where a single slapd does not
provide the required reliability or availability.
This configuration can be used in conjunction with either of the
first two configurations in situations where a single {{slapd}}(8)
instance does not provide the required reliability or availability.
H2: Distributed Local Directory Service

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

View file

@ -1,5 +1,5 @@
# $OpenLDAP$
# Copyright 1999-2006 The OpenLDAP Foundation, All Rights Reserved.
# Copyright 1999-2007 The OpenLDAP Foundation, All Rights Reserved.
# COPYING RESTRICTIONS APPLY, see COPYRIGHT.
H1: Database Creation and Maintenance Tools
@ -7,7 +7,7 @@ H1: Database Creation and Maintenance Tools
This section tells you how to create a slapd database from scratch,
and how to do trouble shooting if you run into problems. There are
two ways to create a database. First, you can create the database
on-line using LDAP. With this method, you simply start up slapd
on-line using {{TERM:LDAP}}. With this method, you simply start up slapd
and add entries using the LDAP client of your choice. This method
is fine for relatively small databases (a few hundred or thousand
entries, depending on your requirements). This method works for

View file

@ -0,0 +1,16 @@
# $OpenLDAP$
# Copyright 2006-2007 The OpenLDAP Foundation, All Rights Reserved.
# COPYING RESTRICTIONS APPLY, see COPYRIGHT.
H1: Glossary
H2: Terms
!catalog terms ''; headings; columns="Term,Definition"
H2: Related Organizations
!catalog organisations ''; headings; columns="ORG:Name,Long,URL:Jump"
H2: Related Products
!catalog products ''; headings; columns="PRD:Name,URL:Jump"
H2: References
!catalog references ''; headings; columns="REF:Reference,Document,Status,URL:Jump"

View file

@ -1,5 +1,5 @@
# $OpenLDAP$
# Copyright 1999-2006 The OpenLDAP Foundation, All Rights Reserved.
# Copyright 1999-2007 The OpenLDAP Foundation, All Rights Reserved.
# COPYING RESTRICTIONS APPLY, see COPYRIGHT.
#
# guide.sdf

View file

@ -1,5 +1,5 @@
# $OpenLDAP$
# Copyright 1999-2006 The OpenLDAP Foundation, All Rights Reserved.
# Copyright 1999-2007 The OpenLDAP Foundation, All Rights Reserved.
# COPYING RESTRICTIONS APPLY, see COPYRIGHT.
#
# index.sdf

View file

@ -1,16 +1,15 @@
# $OpenLDAP$
# Copyright 1999-2006 The OpenLDAP Foundation, All Rights Reserved.
# Copyright 1999-2007 The OpenLDAP Foundation, All Rights Reserved.
# COPYING RESTRICTIONS APPLY, see COPYRIGHT.
H1: Building and Installing OpenLDAP Software
This chapter details how to build and install the {{ORG:OpenLDAP}}
Software package including {{slapd}}(8), the stand-alone LDAP daemon
and {{slurpd}}(8), the stand-alone update replication daemon.
Building and installing OpenLDAP Software requires several steps:
installing prerequisite software, configuring OpenLDAP Software
itself, making, and finally installing. The following sections
describe this process in detail.
This chapter details how to build and install the {{PRD:OpenLDAP}}
Software package including {{slapd}}(8), the Standalone {{TERM:LDAP}}
Daemon. Building and installing OpenLDAP Software requires several
steps: installing prerequisite software, configuring OpenLDAP
Software itself, making, and finally installing. The following
sections describe this process in detail.
H2: Obtaining and Extracting the Software
@ -76,27 +75,10 @@ OpenLDAP Software will not be fully LDAPv3 compliant unless OpenLDAP's
{{EX:configure}} detects a usable OpenSSL installation.
H3: Kerberos Authentication Services
OpenLDAP clients and servers support Kerberos-based authentication
services.
In particular, OpenLDAP supports the {{TERM:SASL}}/{{TERM:GSSAPI}}
authentication mechanism using either {{PRD:Heimdal}} or
{{PRD:MIT Kerberos}} V packages.
If you desire to use Kerberos-based SASL/GSSAPI authentication,
you should install either Heimdal or MIT Kerberos V.
Heimdal Kerberos is available from {{URL:http://www.pdc.kth.se/heimdal/}}.
MIT Kerberos is available from {{URL:http://web.mit.edu/kerberos/www/}}.
Use of strong authentication services, such as those provided by
Kerberos, is highly recommended.
H3: {{TERM[expand]SASL}}
OpenLDAP clients and servers require installation of {{PRD:Cyrus}}'s
{{PRD:SASL}} libraries to provide {{TERM[expand]SASL}} services. Though
OpenLDAP clients and servers require installation of {{PRD:Cyrus SASL}}
libraries to provide {{TERM[expand]SASL}} services. Though
some operating systems may provide this library as part of the
base system or as an optional software component, Cyrus SASL
often requires separate installation.
@ -110,10 +92,27 @@ OpenLDAP Software will not be fully LDAPv3 compliant unless OpenLDAP's
configure detects a usable Cyrus SASL installation.
H3: {{TERM[expand]Kerberos}}
OpenLDAP clients and servers support {{TERM:Kerberos}} authentication
services. In particular, OpenLDAP supports the Kerberos V
{{TERM:GSS-API}} {{TERM:SASL}} authentication mechanism known as
the {{TERM:GSSAPI}} mechanism. This feature requires, in addition to
Cyrus SASL libraries, either {{PRD:Heimdal}} or {{PRD:MIT Kerberos}}
V libraries.
Heimdal Kerberos is available from {{URL:http://www.pdc.kth.se/heimdal/}}.
MIT Kerberos is available from {{URL:http://web.mit.edu/kerberos/www/}}.
Use of strong authentication services, such as those provided by
Kerberos, is highly recommended.
H3: Database Software
OpenLDAP's {{slapd}}(8) {{TERM:BDB}} and {{TERM:HDB}} primary database backends
require {{ORG[expand]Sleepycat}} {{PRD:Berkeley DB}}.
require {{ORG[expand]Oracle}} {{PRD:Berkeley DB}}.
If not available at configure time, you will not be able build
{{slapd}}(8) with these primary database backends.
@ -122,10 +121,10 @@ Your operating system may provide a supported version of
software component. If not, you'll have to obtain and
install it yourself.
{{PRD:Berkeley DB}} is available from {{ORG[expand]Sleepycat}}'s
download page {{URL: http://www.sleepycat.com/download/}}. There
are several versions available. Generally, the most recent release
(with published patches) is recommended. This package is required
{{PRD:Berkeley DB}} is available from {{ORG[expand]Oracle}}'s Berkeley DB
download page
{{URL: http://www.oracle.com/technology/software/products/berkeley-db/index.html}}. There are several versions available. Generally, the most recent
release (with published patches) is recommended. This package is required
if you wish to use the {{TERM:BDB}} or {{TERM:HDB}} database backends.
@ -219,8 +218,8 @@ Now build the software, this step will actually compile OpenLDAP.
> make
You should examine the output of this command carefully to make sure
everything is built correctly. Note that this command builds the LDAP
libraries and associated clients as well as {{slapd}}(8) and {{slurpd}}(8).
everything is built correctly. Note that this command builds the LDAP
libraries and associated clients as well as {{slapd}}(8).
H2: Testing the Software

View file

@ -1,33 +1,40 @@
# $OpenLDAP$
# Copyright 1999-2006 The OpenLDAP Foundation, All Rights Reserved.
# Copyright 1999-2007 The OpenLDAP Foundation, All Rights Reserved.
# COPYING RESTRICTIONS APPLY, see COPYRIGHT.
H1: Introduction to OpenLDAP Directory Services
This document describes how to build, configure, and operate OpenLDAP
software to provide directory services. This includes details on
how to configure and run the stand-alone {{TERM:LDAP}} daemon,
{{slapd}}(8) and the stand-alone LDAP update replication daemon,
{{slurpd}}(8). It is intended for newcomers and experienced
administrators alike. This section provides a basic introduction
to directory services and, in particular, the directory services
provided by {{slapd}}(8).
This document describes how to build, configure, and operate
{{PRD:OpenLDAP}} Software to provide directory services. This
includes details on how to configure and run the Standalone
{{TERM:LDAP}} Daemon, {{slapd}}(8). It is intended for new and
experienced administrators alike. This section provides a basic
introduction to directory services and, in particular, the directory
services provided by {{slapd}}(8). This introduction is only
intended to provide enough information so one might get started
learning about {{TERM:LDAP}}, {{TERM:X.500}}, and directory services.
H2: What is a directory service?
A directory is a specialized database optimized for reading, browsing
and searching. Directories tend to contain descriptive, attribute-based
information and support sophisticated filtering capabilities.
Directories generally do not support complicated transaction or
roll-back schemes found in database management systems designed
for handling high-volume complex updates. Directory updates are
typically simple all-or-nothing changes, if they are allowed at
all. Directories are tuned to give quick response to high-volume
lookup or search operations. They may have the ability to replicate
information widely in order to increase availability and reliability,
while reducing response time. When directory information is
replicated, temporary inconsistencies between the replicas may be
okay, as long as they get in sync eventually.
A directory is a specialized database specifically designed for
searching and browsing, in additional to supporting basic lookup
and update functions.
Note: A directory is defined by some as merely a database optimized
for read access. This definition, at best, is overly simplistic.
Directories tend to contain descriptive, attribute-based information
and support sophisticated filtering capabilities. Directories
generally do not support complicated transaction or roll-back schemes
found in database management systems designed for handling high-volume
complex updates. Directory updates are typically simple all-or-nothing
changes, if they are allowed at all. Directories are generally
tuned to give quick response to high-volume lookup or search
operations. They may have the ability to replicate information
widely in order to increase availability and reliability, while
reducing response time. When directory information is replicated,
temporary inconsistencies between the replicas may be okay, as long
as inconsistencies are resolved in a timely manner.
There are many different ways to provide a directory service.
Different methods allow different kinds of information to be stored
@ -41,9 +48,17 @@ services are usually {{distributed}}, meaning that the data they
contain is spread across many machines, all of which cooperate to
provide the directory service. Typically a global service defines
a uniform {{namespace}} which gives the same view of the data no
matter where you are in relation to the data itself. The Internet
{{TERM[expand]DNS}} (DNS) is an example of a globally distributed
directory service.
matter where you are in relation to the data itself.
A web directory, such as provided by the {{Open Directory Project}}
<{{URL:http://dmoz.org}}>, is a good example of a directory service.
These services catalog web pages and are specifically designed to
support browsing and searching.
While some consider the Internet {{TERM[expand]DNS}} (DNS) is an
example of a globally distributed directory service, DNS is not
browsable nor searchable. It is more properly described as a
globaly distributed {{lookup}} service.
H2: What is LDAP?
@ -53,11 +68,10 @@ it is a lightweight protocol for accessing directory services,
specifically {{TERM:X.500}}-based directory services. LDAP runs
over {{TERM:TCP}}/{{TERM:IP}} or other connection oriented transfer
services. LDAP is an {{ORG:IETF}} Standard Track protocol and is
specified as detailed in "Lightweight Directory Access Protocol
(LDAP) Technical Specification Road Map" {{REF:RFC4510}}.
specified in "Lightweight Directory Access Protocol (LDAP) Technical
Specification Road Map" {{REF:RFC4510}}.
This section gives an overview of LDAP from a
user's perspective.
This section gives an overview of LDAP from a user's perspective.
{{What kind of information can be stored in the directory?}} The
LDAP information model is based on {{entries}}. An entry is a
@ -69,8 +83,8 @@ common name, or "{{EX:mail}}" for email address. The syntax of
values depend on the attribute type. For example, a {{EX:cn}}
attribute might contain the value {{EX:Babs Jensen}}. A {{EX:mail}}
attribute might contain the value "{{EX:babs@example.com}}". A
{{EX:jpegPhoto}} attribute would contain a photograph in the JPEG
(binary) format.
{{EX:jpegPhoto}} attribute would contain a photograph in the
{{TERM:JPEG}} (binary) format.
{{How is the information arranged?}} In LDAP, directory entries
are arranged in a hierarchical tree-like structure. Traditionally,
@ -107,8 +121,8 @@ the entry itself (called the {{TERM[expand]RDN}} or RDN) and
concatenating the names of its ancestor entries. For example, the
entry for Barbara Jensen in the Internet naming example above has
an RDN of {{EX:uid=babs}} and a DN of
{{EX:uid=babs,ou=People,dc=example,dc=com}}. The full DN format
is described in {{REF:RFC4514}}, "LDAP: String Representation of
{{EX:uid=babs,ou=People,dc=example,dc=com}}. The full DN format is
described in {{REF:RFC4514}}, "LDAP: String Representation of
Distinguished Names."
{{How is the information accessed?}} LDAP defines operations for
@ -142,16 +156,15 @@ services.
H2: How does LDAP work?
LDAP directory service is based on a {{client-server}} model. One
or more LDAP servers contain the data making up the directory
information tree (DIT). The client connects to servers and
asks it a question. The server responds with an answer and/or
with a pointer to where the client can get additional information
(typically, another LDAP server). No matter which LDAP server a
client connects to, it sees the same view of the directory; a name
presented to one LDAP server references the same entry it would at
another LDAP server. This is an important feature of a global
directory service, like LDAP.
LDAP utilizes a {{client-server model}}. One or more LDAP servers
contain the data making up the directory information tree ({{TERM:DIT}}).
The client connects to servers and asks it a question. The server
responds with an answer and/or with a pointer to where the client
can get additional information (typically, another LDAP server).
No matter which LDAP server a client connects to, it sees the same
view of the directory; a name presented to one LDAP server references
the same entry it would at another LDAP server. This is an important
feature of a global directory service.
H2: What about X.500?
@ -171,7 +184,7 @@ While LDAP is still used to access X.500 directory service via
gateways, LDAP is now more commonly directly implemented in X.500
servers.
The stand-alone LDAP daemon, or {{slapd}}(8), can be viewed as a
The Standalone LDAP Daemon, or {{slapd}}(8), can be viewed as a
{{lightweight}} X.500 directory server. That is, it does not
implement the X.500's DAP nor does it support the complete X.500
models.
@ -184,10 +197,7 @@ X.500 DAP, or have no immediate plans to run X.500 DAP, read on.
It is possible to replicate data from an LDAP directory server to
a X.500 DAP {{TERM:DSA}}. This requires an LDAP/DAP gateway.
OpenLDAP does not provide such a gateway, but our replication daemon
can be used to replicate to such a gateway. See the {{SECT:Replication
with slurpd}} chapter of this document for information regarding
replication.
OpenLDAP Software does not include such a gateway.
H2: What is the difference between LDAPv2 and LDAPv3?
@ -221,13 +231,14 @@ service, or run a service all by yourself. Some of slapd's more
interesting features and capabilities include:
{{B:LDAPv3}}: {{slapd}} implements version 3 of {{TERM[expand]LDAP}}.
{{slapd}} supports LDAP over both IPv4 and IPv6 and Unix IPC.
{{slapd}} supports LDAP over both {{TERM:IPv4}} and {{TERM:IPv6}}
and Unix {{TERM:IPC}}.
{{B:{{TERM[expand]SASL}}}}: {{slapd}} supports strong authentication
and data security (integrity and confidentiality) services through
the use of SASL. {{slapd}}'s SASL implementation utilizes {{PRD:Cyrus}}
{{PRD:SASL}} software which supports a number of mechanisms including
DIGEST-MD5, EXTERNAL, and GSSAPI.
the use of SASL. {{slapd}}'s SASL implementation utilizes {{PRD:Cyrus
SASL}} software which supports a number of mechanisms including
{{TERM:DIGEST-MD5}}, {{TERM:EXTERNAL}}, and {{TERM:GSSAPI}}.
{{B:{{TERM[expand]TLS}}}}: {{slapd}} supports certificate-based
authentication and data security (integrity and confidentiality)
@ -254,7 +265,7 @@ of different database backends you can choose from. They include
{{TERM:HDB}}, a hierarchical high-performance transactional
backend; {{SHELL}}, a backend interface to arbitrary shell scripts;
and PASSWD, a simple backend interface to the {{passwd}}(5) file.
The BDB and HDB backends utilize {{ORG:Sleepycat}} {{PRD:Berkeley
The BDB and HDB backends utilize {{ORG:Oracle}} {{PRD:Berkeley
DB}}.
{{B:Multiple database instances}}: {{slapd}} can be configured to
@ -272,7 +283,7 @@ well-defined {{TERM:C}} {{TERM:API}}, you can write your own
customized modules which extend {{slapd}} in numerous ways. Also,
a number of {{programmable database}} modules are provided. These
allow you to expose external data sources to {{slapd}} using popular
programming languages ({{PRD:Perl}}, {{shell}}, {{PRD:SQL}}, and
programming languages ({{PRD:Perl}}, {{shell}}, {{TERM:SQL}}, and
{{PRD:TCL}}).
{{B:Threads}}: {{slapd}} is threaded for high performance. A single
@ -284,8 +295,8 @@ required while providing high performance.
copies of directory information. This {{single-master/multiple-slave}}
replication scheme is vital in high-volume environments where a
single {{slapd}} just doesn't provide the necessary availability
or reliability. {{slapd}} supports two replication methods: {{LDAP
Sync}}-based and {{slurpd}}(8)-based replication.
or reliability. {{slapd}} includes support for {{LDAP Sync}}-based
replication.
{{B:Proxy Cache}}: {{slapd}} can be configured as a caching
LDAP proxy service.
@ -295,22 +306,3 @@ single configuration file which allows you to change just about
everything you'd ever want to change. Configuration options have
reasonable defaults, making your job much easier.
H2: What is slurpd and what can it do?
{{slurpd}}(8) is a daemon that, with {{slapd}} help, provides
replicated service. It is responsible for distributing changes
made to the master {{slapd}} database out to the various {{slapd}}
replicas. It frees {{slapd}} from having to worry that some replicas
might be down or unreachable when a change comes through; {{slurpd}}
handles retrying failed requests automatically. {{slapd}} and
{{slurpd}} communicate through a simple text file that is used to
log changes.
See the {{SECT:Replication with slurpd}} chapter for information
about how to configure and run {{slurpd}}(8).
Alternatively, {{LDAP-Sync}}-based replication may be used to provide
a replicated service. See the {{SECT:LDAP Sync Replication}} chapter
for details.

View file

@ -1,5 +1,5 @@
# $OpenLDAP$
# Copyright 1999-2006 The OpenLDAP Foundation, All Rights Reserved.
# Copyright 1999-2007 The OpenLDAP Foundation, All Rights Reserved.
# COPYING RESTRICTIONS APPLY, see COPYRIGHT.
#
# master file for the OpenLDAP Administrator's Guide
@ -60,8 +60,8 @@ PB:
!include "tls.sdf"; chapter
PB:
#!include "monitoringslapd.sdf"; chapter
#PB:
!include "monitoringslapd.sdf"; chapter
PB:
#!include "tuning.sdf"; chapter
#PB:
@ -79,6 +79,11 @@ PB:
PB:
# Appendices
# Terms
!include "glossary.sdf"; appendix
PB:
# Autoconf
!include "../release/autoconf.sdf"; appendix
PB:

View file

@ -1,111 +1,500 @@
# $OpenLDAP$
# Copyright 1999-2006 The OpenLDAP Foundation, All Rights Reserved.
# Copyright 1999-2007 The OpenLDAP Foundation, All Rights Reserved.
# COPYING RESTRICTIONS APPLY, see COPYRIGHT.
H1: Monitoring Slapd
H1: Monitoring
Slapd supports a monitoring interface you can use to find out
many useful bits of information about what slapd is currently
doing, how many connections it has, how many threads are
working, etc. You can access the monitor feature by doing a
base object search of the SLAPD_MONITOR_DN from
include/ldapconfig.h with any kind of valid filter (e.g.,
"(objectclass=*)"). By default, this DN is set to "cn=monitor".
You will get one entry returned to you, with the following
{{slapd}}(8) supports an optional {{TERM:LDAP}} monitoring interface
you can use to obtain information regarding the current state of
your {{slapd}} instance. For instance, the interface allows you
to determine how many clients are connected to the server currently.
The monitoring information is provided by a specialized backend,
the {{monitor}} backend. A manual page, {{slapd-monitor}}(5) is
available.
When the monitoring interface is enabled, LDAP clients may be used
to access information provided by the {{monitor}} backend, subject
to access and other controls.
When enabled, the {{monitor}} backend dynamically generates and
returns objects in response to search requests in the {{cn=Monitor}}
subtree. Each object contains information about a particular aspect
of the server. The information is held in a combination of user
applications and operational attributes. This information can be
access with {{ldapsearch(1)}}, with any general-purpose LDAP browser,
or with specialized monitoring tools. The {{SECT:Accessing Monitoring
Information}} section provides a brief tutorial on how to use
{{ldapsearch}}(1) to access monitoring information, while the
{{SECT:Monitor information}} section details monitoring information
base and its organization.
While support for the monitor backend is included in default builds
of slapd(8), this support requires some configuration to become
active. This may be done using either {{EX:cn=config}} or
{{slapd.conf}}(5). The former is discussed in the {{SECT:Monitor
configuration via cn=config}} section of this of this chapter. The
latter is discussed in the {{SECT:Monitor configuration via
slapd.conf(5)}} section of this chapter. These sections assume
monitor backend is built into {{slapd}} (e.g., {{EX:--enable-monitor=yes}},
the default). If the monitor backend was built as a module (e.g.,
{{EX:--enable-monitor=mod}}, this module must loaded. Loading of
modules is discussed in the {{SECT:Configuring slapd}} and {{SECT:The
slapd Configuration File}} chapters.
H2: Monitor configuration via cn=config(5)
{{This section has yet to be written.}}
H2: Monitor configuration via slapd.conf(5)
Configuration of the slapd.conf(5) to support LDAP monitoring
is quite simple.
First, ensure {{core.schema}} schema configuration file is included
by your {{slapd.conf}}(5) file. The {{monitor}} backend requires
it.
Second, instanticate the {{monitor backend}} by adding a
{{database monitor}} directive below your existing database
sections. For instance:
> database monitor
Lastly, add additional global or database directives as needed.
Like most other database backends, the monitor backend does honor
slapd(8) access and other adminstrative controls. As some monitor
information may be sensitive, it is generally recommend access to
cn=monitor be restricted to directory administrators and their
monitoring agents. Adding an {{access}} directive immediately below
the {{database monitor}} directive is a clear and effective approach
for controlling access. For instance, the addition of the following
{{access}} directive immediately below the {{database monitor}}
directive restricts access to monitoring information to the specified
directory manager.
> access to *
> by dn.exact="cn=Manager,dc=example,dc=com
> by * none
More information on {{slapd}}(8) access controls, see {{The access
Control Directive}} section of the {{SECT:The slapd Configuration
File}} chapter and {{slapd.access}}(5).
After restarting {{slapd}}(8), you are ready to start exploring the
monitoring information provided in {{EX:cn=config}} as discussed
in the {{SECT:Accessing Monitoring Information}} section of this
chapter.
One can verify slapd(8) is properly configured to provide monitoring
information by attempting to read the {{EX:cn=monitor}} object.
For instance, if the following {{ldapsearch}}(1) command returns the
cn=monitor object (with, as requested, no attributes), it's working.
> ldapsearch -x -D 'cn=Manager,dc=example,dc=com' -W \
> -b 'cn=Monitor' -s base 1.1
Note that unlike general purpose database backends, the database
suffix is hardcoded. It's always {{EX:cn=Monitor}}. So no {{suffix}}
directive should be provided. Also note that general purpose
database backends, the monitor backend cannot be instantiated
multiple times. That is, there can only be one (or zero) occurances
of {{EX:database monitor}} in the server's configuration.
H2: Accessing Monitoring Information
As previously discussed, when enabled, the {{monitor}} backend
dynamically generates and returns objects in response to search
requests in the {{cn=Monitor}} subtree. Each object contains
information about a particular aspect of the server. The information
is held in a combination of user applications and operational
attributes. This information can be access with {{ldapsearch(1)}},
with any general-purpose LDAP browser, or with specialized monitoring
tools.
This section provides a provides a brief tutorial on how to use
{{ldapsearch}}(1) to access monitoring information.
To inspect any particular monitor object, one performs search
operation on the object with a baseObject scope and a
{{EX:(objectClass=*)}} filter. As the monitoring information is
contained in a combination of user applications and operational
attributes, the return all user applications attributes (e.g.,
{{EX:'*'}}) and all operational attributes (e.g., {{EX:'+'}}) should
be requested. For instance, to read the {{EX:cn=Monitor}} object
itself, the {{ldapsearch}}(1) command (modified to fit your configuration)
can be used:
> ldapsearch -x -D 'cn=Manager,dc=example,dc=com' -W \
> -b 'cn=Monitor' -s base '(objectClass=*)' '*' '+'
When run against your server, this should produce output
similar to:
> dn: cn=Monitor
> objectClass: monitorServer
> structuralObjectClass: monitorServer
> cn: Monitor
> creatorsName:
> modifiersName:
> createTimestamp: 20061208223558Z
> modifyTimestamp: 20061208223558Z
> description: This subtree contains monitoring/managing objects.
> description: This object contains information about this server.
> description: Most of the information is held in operational attributes, which
> must be explicitly requested.
> monitoredInfo: OpenLDAP: slapd 2.4 (Dec 7 2006 17:30:29)
> entryDN: cn=Monitor
> subschemaSubentry: cn=Subschema
> hasSubordinates: TRUE
To reduce the number of uninteresting attributes returned, one
can be more selective when requesting which attributes are to be
returned. For instance, one could request the return of all
attributes allowed by the {{monitorServer}} object class (e.g.,
{{EX:@objectClass}}) instead of all user and all operational
attributes:
E: version: slapd <version> (<date>)
> ldapsearch -x -D 'cn=Manager,dc=example,dc=com' -W \
> -b 'cn=Monitor' -s base '(objectClass=*)' '@monitorServer'
This attribute identifies the slapd server software by name,
version, and build date, e.g., {{EX: slapd 3.3 (Thu May 21 14:19:03
EDT 1996)}}
This limits the output as follows:
E: threads: <integer>
> dn: cn=Monitor
> objectClass: monitorServer
> cn: Monitor
> description: This subtree contains monitoring/managing objects.
> description: This object contains information about this server.
> description: Most of the information is held in operational attributes, which
> must be explicitly requested.
> monitoredInfo: OpenLDAP: slapd 2.X (Dec 7 2006 17:30:29)
This attribute indicates the number of threads (operations)
currently outstanding in slapd.
To return the names of all the monitoring objects, one performs a
search of {{EX:cn=Monitor}} with subtree scope and {{EX:(objectClass=*)}}
filter and requesting no attributes (e.g., {{EX:1.1}}) be returned.
E: connection: <fd> : <opentime> : <opsinitiated> :
E: <opscompleted> : <binddn> : [ <rw> ]
> ldapsearch -x -D 'cn=Manager,dc=example,dc=com' -W -b 'cn=Monitor' -s sub 1.1
This multi-valued attribute summarizes information for each
open connection. The information given is {{EX: <fd>}}, the file
descriptor; {{EX: <opentime>}}, the time the connection was opened
in UTC format; {{EX: <opsinitiated>}}, the number of operations
initiated over the connection; {{EX: <opscompleted>}}, the number
of operations completed over the connection; {{EX: <binddn>}}, the
DN currently bound to the connection; and optionally {{EX: <rw>}},
indicating whether the connection is currently blocked for
read or write..
If you run this command you will discover that there are many objects
in the {{cn=Monitor}} subtree. The following section describes
some of the commonly available monitoring objects.
E: currentconnections: <integer>
The current number of connections.
H2: Monitor Information
E: totalconnections: <integer>
The {{monitor}} backend provides a wealth of information useful
for monitoring the slapd(8) contained in set of monitor objects.
Each object contains information about a particular aspect of
the server, such as a backends, a connection, or a thread.
Some objects serve as containers for other objects and used
to construct a hierarchy of objects.
The total number of connections handled by slapd since it
started.
In this hierarchy, the most superior object is {cn=Monitor}.
While this object primarily serves as a container for other
objects, most of which are containers, this object provides
information about this server. In particular, it provides the
slapd(8) version string. Example:
E: dtablesize: <integer>
> dn: cn=Monitor
> monitoredInfo: OpenLDAP: slapd 2.X (Dec 7 2006 17:30:29)
The size of slapd's file descriptor table.
Note: Examples in this section (and its subsections) have been
trimmed to show only key information.
E: writewaiters: <integer>
The number of threads blocked waiting to write data to a
client.
H3: Backends
E: readwaiters: <integer>
The {{EX:cn=Backends,cn=Monitor}} object, itself, provides a list
of available backends. The list of available backends all builtin
backends, as well as backends loaded by modules. For example:
The number of threads blocked waiting to read data from a
client.
> dn: cn=Backends,cn=Monitor
> monitoredInfo: config
> monitoredInfo: ldif
> monitoredInfo: monitor
> monitoredInfo: bdb
> monitoredInfo: hdb
E: opsinitiated: <integer>
This indicates the {{config}}, {{ldif}}, {{monitor}}, {{bdb}},
and {{hdb}} backends are available.
The total number of operations initiated by slapd since it
started.
The {{EX:cn=Backends,cn=Monitor}} object is also a container
for available backend objects. Each available backend object
contains information about a particular backend. For example:
E: opscompleted: <integer>
> dn: cn=Backend 0,cn=Backends,cn=Monitor
> monitoredInfo: config
> monitorRuntimeConfig: TRUE
> supportedControl: 2.16.840.1.113730.3.4.2
> seeAlso: cn=Database 0,cn=Databases,cn=Monitor
>
> dn: cn=Backend 1,cn=Backends,cn=Monitor
> monitoredInfo: ldif
> monitorRuntimeConfig: TRUE
> supportedControl: 2.16.840.1.113730.3.4.2
>
> dn: cn=Backend 2,cn=Backends,cn=Monitor
> monitoredInfo: monitor
> monitorRuntimeConfig: TRUE
> supportedControl: 2.16.840.1.113730.3.4.2
> seeAlso: cn=Database 2,cn=Databases,cn=Monitor
>
> dn: cn=Backend 3,cn=Backends,cn=Monitor
> monitoredInfo: bdb
> monitorRuntimeConfig: TRUE
> supportedControl: 1.3.6.1.1.12
> supportedControl: 2.16.840.1.113730.3.4.2
> supportedControl: 1.3.6.1.4.1.4203.666.5.2
> supportedControl: 1.2.840.113556.1.4.319
> supportedControl: 1.3.6.1.1.13.1
> supportedControl: 1.3.6.1.1.13.2
> supportedControl: 1.3.6.1.4.1.4203.1.10.1
> supportedControl: 1.2.840.113556.1.4.1413
> supportedControl: 1.3.6.1.4.1.4203.666.11.7.2
> seeAlso: cn=Database 1,cn=Databases,cn=Monitor
>
> dn: cn=Backend 4,cn=Backends,cn=Monitor
> monitoredInfo: hdb
> monitorRuntimeConfig: TRUE
> supportedControl: 1.3.6.1.1.12
> supportedControl: 2.16.840.1.113730.3.4.2
> supportedControl: 1.3.6.1.4.1.4203.666.5.2
> supportedControl: 1.2.840.113556.1.4.319
> supportedControl: 1.3.6.1.1.13.1
> supportedControl: 1.3.6.1.1.13.2
> supportedControl: 1.3.6.1.4.1.4203.1.10.1
> supportedControl: 1.2.840.113556.1.4.1413
> supportedControl: 1.3.6.1.4.1.4203.666.11.7.2
The total number of operations completed by slapd since it
started.
For each of these objects, monitorInfo indicates which backend the
information in the object is about. For instance, the {{EX:cn=Backend
3,cn=Backends,cn=Monitor}} object contains (in the example) information
about the {{bdb}} backend.
E: entriessent: <integer>
!block table
Attribute|Description
monitoredInfo|Name of backend
supportedControl|supported LDAP control extensions
seeAlso|Database objects of instances of this backend
!endblock
The total number of entries sent to clients by slapd since it
started.
H3: Connections
E: bytessent: <integer>
The main entry is empty; it should contain some statistics on the number
of connections.
The total number of bytes sent to clients by slapd since it
started.
Dynamic child entries are created for each open connection, with stats on
the activity on that connection (the format will be detailed later).
There are two special child entries that show the number of total and
current connections respectively.
E: currenttime: <UTC time>
For example:
Slapd's idea of the current time.
Total Connections:
E: starttime: <integer>
> dn: cn=Total,cn=Connections,cn=Monitor
> structuralObjectClass: monitorCounterObject
> monitorCounter: 4
> entryDN: cn=Total,cn=Connections,cn=Monitor
> subschemaSubentry: cn=Subschema
> hasSubordinates: FALSE
The time slapd was started.
Current Connections:
E: nbackends: <integer>
> dn: cn=Current,cn=Connections,cn=Monitor
> structuralObjectClass: monitorCounterObject
> monitorCounter: 2
> entryDN: cn=Current,cn=Connections,cn=Monitor
> subschemaSubentry: cn=Subschema
> hasSubordinates: FALSE
The number of backends currently being served by slapd.
E: concurrency: <integer>
H3: Databases
Under Solaris 2.x only, an indication of the current level of
thread concurrency.
The main entry contains the naming context of each configured database;
the child entries contain, for each database, the type and the naming
context.
Note that slapd takes a snapshot of this information and
returns it to you. No attempt is made to ensure that the
information is consistent (i.e., if an operation thread is
modifying one of these things when the monitor thread is
reading it, strange results could be returned).
For example:
You should be able to use any LDAP client to retrieve this
information. Here's how you might do it using the
{{I: ldapsearch}}(1) client:
> dn: cn=Database 2,cn=Databases,cn=Monitor
> structuralObjectClass: monitoredObject
> monitoredInfo: monitor
> monitorIsShadow: FALSE
> monitorContext: cn=Monitor
> readOnly: FALSE
> entryDN: cn=Database 2,cn=Databases,cn=Monitor
> subschemaSubentry: cn=Subschema
> hasSubordinates: FALSE
E: ldapsearch -x -s base -b cn=monitor 'objectclass=*'
H3: Listener
It contains the description of the devices the server is currently
listening on:
> dn: cn=Listener 0,cn=Listeners,cn=Monitor
> structuralObjectClass: monitoredObject
> monitorConnectionLocalAddress: IP=0.0.0.0:389
> entryDN: cn=Listener 0,cn=Listeners,cn=Monitor
> subschemaSubentry: cn=Subschema
> hasSubordinates: FALSE
H3: Log
It contains the currently active log items. The {{Log}} subsystem allows
user modify operations on the {{description}} attribute, whose values {{MUST}}
be in the list of admittable log switches:
> Trace
> Packets
> Args
> Conns
> BER
> Filter
> Config (useless)
> ACL
> Stats
> Stats2
> Shell
> Parse
> Cache (deprecated)
> Index
These values can be added, replaced or deleted; they affect what
messages are sent to the syslog device.
H3: Operations
It shows some statistics on the operations performed by the server:
> Initiated
> Completed
and for each operation type, i.e.:
> Bind
> Unbind
> Add
> Delete
> Modrdn
> Modify
> Compare
> Search
> Abandon
> Extended
There are too many types to list example here, so please try for yourself
using {{SECT: Monitor search example}}
H3: Overlays
The main entry contains the type of overlays available at run-time;
the child entries, for each overlay, contain the type of the overlay.
It should also contain the modules that have been loaded if dynamic
overlays are enabled:
> # Overlays, Monitor
> dn: cn=Overlays,cn=Monitor
> structuralObjectClass: monitorContainer
> monitoredInfo: syncprov
> monitoredInfo: accesslog
> monitoredInfo: glue
> entryDN: cn=Overlays,cn=Monitor
> subschemaSubentry: cn=Subschema
> hasSubordinates: TRUE
H3: SASL
Currently empty.
H3: Statistics
It shows some statistics on the data sent by the server:
> Bytes
> PDU
> Entries
> Referrals
e.g.
> # Entries, Statistics, Monitor
> dn: cn=Entries,cn=Statistics,cn=Monitor
> structuralObjectClass: monitorCounterObject
> monitorCounter: 612248
> entryDN: cn=Entries,cn=Statistics,cn=Monitor
> subschemaSubentry: cn=Subschema
> hasSubordinates: FALSE
H3: Threads
It contains the maximum number of threads enabled at startup and the
current backload.
e.g.
> # Max, Threads, Monitor
> dn: cn=Max,cn=Threads,cn=Monitor
> structuralObjectClass: monitoredObject
> monitoredInfo: 16
> entryDN: cn=Max,cn=Threads,cn=Monitor
> subschemaSubentry: cn=Subschema
> hasSubordinates: FALSE
H3: Time
It contains two child entries with the start time and the current time
of the server.
e.g.
Start time:
> dn: cn=Start,cn=Time,cn=Monitor
> structuralObjectClass: monitoredObject
> monitorTimestamp: 20061205124040Z
> entryDN: cn=Start,cn=Time,cn=Monitor
> subschemaSubentry: cn=Subschema
> hasSubordinates: FALSE
Current time:
> dn: cn=Current,cn=Time,cn=Monitor
> structuralObjectClass: monitoredObject
> monitorTimestamp: 20061207120624Z
> entryDN: cn=Current,cn=Time,cn=Monitor
> subschemaSubentry: cn=Subschema
> hasSubordinates: FALSE
H3: TLS
Currently empty.
H3: Waiters
It contains the number of current read waiters.
e.g.
Read waiters:
> dn: cn=Read,cn=Waiters,cn=Monitor
> structuralObjectClass: monitorCounterObject
> monitorCounter: 7
> entryDN: cn=Read,cn=Waiters,cn=Monitor
> subschemaSubentry: cn=Subschema
> hasSubordinates: FALSE
Write waiters:
> dn: cn=Write,cn=Waiters,cn=Monitor
> structuralObjectClass: monitorCounterObject
> monitorCounter: 0
> entryDN: cn=Write,cn=Waiters,cn=Monitor
> subschemaSubentry: cn=Subschema
> hasSubordinates: FALSE

View file

@ -1,5 +1,5 @@
# $OpenLDAP$
# Copyright 1999-2006 The OpenLDAP Foundation, All Rights Reserved.
# Copyright 1999-2007 The OpenLDAP Foundation, All Rights Reserved.
# COPYING RESTRICTIONS APPLY, see COPYRIGHT.
#
@ -9,7 +9,7 @@ P1: Preface
# document's copyright
P2[notoc] Copyright
Copyright 1998-2005, The {{ORG[expand]OLF}}, {{All Rights Reserved}}.
Copyright 1998-2006, The {{ORG[expand]OLF}}, {{All Rights Reserved}}.
Copyright 1992-1996, Regents of the {{ORG[expand]UM}}, {{All Rights Reserved}}.
@ -17,21 +17,21 @@ This document is considered a part of OpenLDAP Software. This
document is subject to terms of conditions set forth in {{SECT:OpenLDAP
Software Copyright Notices}} and the {{SECT:OpenLDAP Public License}}.
Complete copies of the notices and associated license can be found
in Appendix B and C, respectively.
in Appendix C and D, respectively.
P2[notoc] Scope of this Document
This document provides a guide for installing [[DOC_NAME]]
({{URL:http://www.openldap.org/software/}})
on {{TERM:UNIX}} (and UNIX-like) systems. The document is aimed at
experienced system administrators but who may not have prior experience
operating {{TERM:LDAP}}-based directory software.
({{URL:http://www.openldap.org/software/}}) on {{TERM:UNIX}} (and
UNIX-like) systems. The document is aimed at experienced system
administrators with basic understanding of {{TERM:LDAP}}-based
directory services.
This document is meant to be used in conjunction with other OpenLDAP
information resources provided with the software package and on
the project's extensive site ({{URL:http://www.OpenLDAP.org/}}) on
the World Wide Web. The site makes available a number of resources.
information resources provided with the software package and on the
project's site ({{URL:http://www.OpenLDAP.org/}}) on the
{{TERM[expand]WWW}}. The site makes available a number of resources.
!block table; align=Center; coltags="N,URL"; \
title="OpenLDAP Resources"
@ -40,6 +40,7 @@ Document Catalog|http://www.OpenLDAP.org/doc/
Frequently Asked Questions|http://www.OpenLDAP.org/faq/
Issue Tracking System|http://www.OpenLDAP.org/its/
Mailing Lists|http://www.OpenLDAP.org/lists/
Manual Pages|http://www.OpenLDAP.org/software/man.cgi
Software Pages|http://www.OpenLDAP.org/software/
Support Pages|http://www.OpenLDAP.org/support/
!endblock
@ -47,26 +48,28 @@ Support Pages|http://www.OpenLDAP.org/support/
P2[notoc] Acknowledgments
The {{ORG[expand]OLP}} is comprised of a team of volunteers. This document
would not be possible without their contribution of time and energy.
The {{ORG[expand]OLP}} is comprised of a team of volunteers. This
document would not be possible without their contribution of time
and energy.
The OpenLDAP Project would also like to thank the {{ORG[expand]UMLDAP}}
for building the foundation of LDAP software and information to
which OpenLDAP Software is built upon. This document is based upon
U-Mich LDAP document: {{The SLAPD and SLURPD Administrators Guide}}.
University of Michigan document: {{REF[expand]UM-GUIDE}}.
P2[notoc] Amendments
Suggested enhancements and corrections to this document should
be submitted using the {{ORG:OpenLDAP}}
{{{{TERM[expand]ITS}}}} ({{URL: http://www.openldap.org/its/}}).
Suggested enhancements and corrections to this document should be
submitted using the {{PRD:OpenLDAP}} {{TERM[expand]ITS}}
({{URL: http://www.openldap.org/its/}}).
P2[notoc] About this document
This document was produced using the {{Simple Document Format}}
({{URL:http://search.cpan.org/src/IANC/sdf-2.001/doc/}}) documentation
system developed by {{Ian Clatworthy}}. Tools for {{SDF}} are
available from CPAN ({{URL:http://search.cpan.org/search?query=SDF}}).
This document was produced using the {{TERM[expand]SDF}} ({{TERM:SDF}})
documentation system
({{URL:http://search.cpan.org/src/IANC/sdf-2.001/doc/catalog.html}})
developed by {{Ian Clatworthy}}. Tools for SDF are available from
{{ORG:CPAN}} ({{URL:http://search.cpan.org/search?query=SDF}}).

View file

@ -1,15 +1,15 @@
# $OpenLDAP$
# Copyright 2003-2006 The OpenLDAP Foundation, All Rights Reserved.
# Copyright 2003-2007 The OpenLDAP Foundation, All Rights Reserved.
# COPYING RESTRICTIONS APPLY, see COPYRIGHT.
H1: The Proxy Cache Engine
LDAP servers typically hold one or more subtrees of a DIT. Replica
(or shadow) servers hold shadow copies of entries held by one or
more master servers. Changes are propagated from the master server
to replica (slave) servers using LDAP Sync or {{slurpd}}(8). An
LDAP cache is a special type of replica which holds entries
corresponding to search filters instead of subtrees.
{{TERM:LDAP}} servers typically hold one or more subtrees of a
{{TERM:DIT}}. Replica (or shadow) servers hold shadow copies of
entries held by one or more master servers. Changes are propagated
from the master server to replica (slave) servers using LDAP Sync
replication. An LDAP cache is a special type of replica which holds
entries corresponding to search filters instead of subtrees.
H2: Overview

View file

@ -1,33 +1,34 @@
# $OpenLDAP$
# Copyright 1999-2006 The OpenLDAP Foundation, All Rights Reserved.
# Copyright 1999-2007 The OpenLDAP Foundation, All Rights Reserved.
# COPYING RESTRICTIONS APPLY, see COPYRIGHT.
H1: A Quick-Start Guide
The following is a quick start guide to [[DOC_NAME]],
including the stand-alone LDAP daemon, {{slapd}}(8).
including the Standalone {{TERM:LDAP}} Daemon, {{slapd}}(8).
It is meant to walk you through the basic steps needed to install
and configure OpenLDAP Software. It should be used in conjunction
with the other chapters of this document, manual pages, and other
materials provided with the distribution (e.g. the {{F:INSTALL}}
document) or on the OpenLDAP web site (in particular, the OpenLDAP
Software {{TERM:FAQ}}).
and configure {{PRD:OpenLDAP Software}}. It should be used in
conjunction with the other chapters of this document, manual pages,
and other materials provided with the distribution (e.g. the
{{F:INSTALL}} document) or on the {{PRD:OpenLDAP}} web site
({{URL: http://www.OpenLDAP.org}}), in particular the OpenLDAP
Software {{TERM:FAQ}} ({{URL: http://www.OpenLDAP.org/faq/?file=2}}).
If you intend to run OpenLDAP Software seriously, you should review
all of this document before attempting to install the software.
Note: This quick start guide does not use strong authentication
nor any integrity or confidential protection services. These
services are described in other chapters of the OpenLDAP Administrator's
Guide.
services are described in other chapters of the
OpenLDAP Administrator's Guide.
.{{S: }}
^{{B: Get the software}}
. You can obtain a copy of the software by following the
instructions on the OpenLDAP download page
instructions on the OpenLDAP Software download page
({{URL: http://www.openldap.org/software/download/}}). It is
recommended that new users start with the latest {{release}}.
@ -56,7 +57,7 @@ name of the release.
{{F:README}} and {{F:INSTALL}} documents provided with the distribution.
The {{F:COPYRIGHT}} and {{F:LICENSE}} provide information on
acceptable use, copying, and limitation of warranty of OpenLDAP
software.
Software.
.{{S: }}
. You should also review other chapters of this document.
@ -85,9 +86,9 @@ what's best:
. Assuming {{EX:configure}} doesn't dislike your system, you can
proceed with building the software. If {{EX:configure}} did
complain, well, you'll likely need to go to the FAQ Installation
Section ({{URL:http://www.openldap.org/faq/}} and/or actually
read the {{SECT:Building and Installing OpenLDAP Software}}
complain, well, you'll likely need to go to the Software FAQ
{{Installation}} section ({{URL:http://www.openldap.org/faq/?file=8}})
and/or actually read the {{SECT:Building and Installing OpenLDAP Software}}
chapter of this document.
@ -171,7 +172,7 @@ specified directory must exist prior to starting {{slapd}}(8).
.{{S: }}
+{{B:Start SLAPD}}.
. You are now ready to start the stand-alone LDAP server, {{slapd}}(8),
. You are now ready to start the Standalone LDAP Daemon, {{slapd}}(8),
by running the command:
..{{EX:su root -c /usr/local/libexec/slapd}}
@ -179,7 +180,7 @@ by running the command:
. To check to see if the server is running and configured correctly,
you can run a search against it with {{ldapsearch}}(1). By default,
ldapsearch is installed as {{F:/usr/local/bin/ldapsearch}}:
{{ldapsearch}} is installed as {{F:/usr/local/bin/ldapsearch}}:
..{{EX:ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts}}
@ -198,7 +199,8 @@ in the {{slapd}}(8) manual page and the
+{{B:Add initial entries to your directory}}.
. You can use {{ldapadd}}(1) to add entries to your LDAP directory.
{{ldapadd}} expects input in LDIF form. We'll do it in two steps:
{{ldapadd}} expects input in {{TERM:LDIF}} form. We'll do it in two
steps:
^^ create an LDIF file
++ run ldapadd
@ -269,10 +271,10 @@ Note that by default, the {{slapd}}(8) database grants {{read access
to everybody}} excepting the {{super-user}} (as specified by the
{{EX:rootdn}} configuration directive). It is highly recommended
that you establish controls to restrict access to authorized users.
Access controls are discussed in the {{SECT:Access Control}} section
of {{SECT:The slapd Configuration File}} chapter. You are also
encouraged to read the {{SECT:Security Considerations}}, {{SECT:Using
SASL}} and {{SECT:Using TLS}} sections.
Access controls are discussed in the {{SECT:The access Configuration
Directive}} section of {{SECT:The slapd Configuration File}} chapter.
You are also encouraged to read the {{SECT:Security Considerations}},
{{SECT:Using SASL}} and {{SECT:Using TLS}} sections.
The following chapters provide more detailed information on making,
installing, and running {{slapd}}(8).

View file

@ -1,5 +1,5 @@
# $OpenLDAP$
# Copyright 1999-2006 The OpenLDAP Foundation, All Rights Reserved.
# Copyright 1999-2007 The OpenLDAP Foundation, All Rights Reserved.
# COPYING RESTRICTIONS APPLY, see COPYRIGHT.
H1: Constructing a Distributed Directory Service
@ -51,7 +51,7 @@ object would be added to {{EX:a.example.net}}:
The server uses this information to generate referrals and
search continuations to subordinate servers.
For those familiar with X.500, a {{named referral}} object is
For those familiar with {{TERM:X.500}}, a {{named referral}} object is
similar to an X.500 knowledge reference held in a {{subr}}
{{TERM:DSE}}.
@ -75,8 +75,8 @@ that A holds the immediate superior naming context.
The server uses this information to generate referrals to
management operations.
For those familiar with X.500, this use of the {{EX:ref}} attribute
is similar to an X.500 knowledge reference held in a
For those familiar with {{TERM:X.500}}, this use of the {{EX:ref}}
attribute is similar to an X.500 knowledge reference held in a
{{immSupr}} {{TERM:DSE}}.
!endif
@ -99,12 +99,12 @@ as follows:
> referral ldap://a.example.net/
The server uses this information to generate referrals for
operations acting upon entries not within or subordinate
to any of the naming contexts held by the server.
The server uses this information to generate referrals for operations
acting upon entries not within or subordinate to any of the naming
contexts held by the server.
For those familiar with X.500, this use of the {{EX:ref}} attribute
is similar to an X.500 knowledge reference held in a
For those familiar with {{TERM:X.500}}, this use of the {{EX:ref}}
attribute is similar to an X.500 knowledge reference held in a
{{Supr}} {{TERM:DSE}}.

View file

@ -1,8 +1,13 @@
# $OpenLDAP$
# Copyright 1999-2006 The OpenLDAP Foundation, All Rights Reserved.
# Copyright 1999-2007 The OpenLDAP Foundation, All Rights Reserved.
# COPYING RESTRICTIONS APPLY, see COPYRIGHT.
H1: Replication with slurpd
Note: this section is provided for historical reasons. {{slurpd}}(8)
is deprecated in favor of LDAP Sync based replication, commonly
referred to as {{syncrepl}}. Syncrepl is discussed in
{{SECT:LDAP Sync Replication}} section of this document.
In certain configurations, a single {{slapd}}(8) instance may be
insufficient to handle the number of clients requiring
directory service via LDAP. It may become necessary to

View file

@ -1,12 +1,12 @@
# $OpenLDAP$
# Copyright 1999-2006 The OpenLDAP Foundation, All Rights Reserved.
# Copyright 1999-2007 The OpenLDAP Foundation, All Rights Reserved.
# COPYING RESTRICTIONS APPLY, see COPYRIGHT.
H1: Running slapd
{{slapd}}(8) is designed to be run as a stand-alone server. This allows
the server to take advantage of caching, manage concurrency issues
with underlying databases, and conserve system resources. Running
from {{inetd}}(8) is {{NOT}} an option.
{{slapd}}(8) is designed to be run as a standalone service. This
allows the server to take advantage of caching, manage concurrency
issues with underlying databases, and conserve system resources.
Running from {{inetd}}(8) is {{NOT}} an option.
H2: Command-Line Options
@ -22,16 +22,17 @@ The default is normally {{F:/usr/local/etc/openldap/slapd.conf}}.
> -h <URLs>
This option specifies alternative listener configurations. The
default is {{EX:ldap:///}} which implies LDAP over TCP on all
interfaces on the default LDAP port 389. You can specify
specific host-port pairs or other protocol schemes (such as
ldaps:// or ldapi://). For example,
{{EX:-h "ldaps:// ldap://127.0.0.1:666"}} will create
two listeners: one for LDAP over SSL on all interfaces on
the default LDAP/SSL port 636, and one for LDAP over TCP on
the {{EX:localhost}} ({{loopback}}) interface on port 666.
Hosts may be specified using IPv4 dotted-decimal form or
using host names. Port values must be numeric.
default is {{EX:ldap:///}} which implies {{TERM:LDAP}} over
{{TERM:TCP}} on all interfaces on the default LDAP port 389. You
can specify specific host-port pairs or other protocol schemes (such
as {{EX:ldaps://}} or {{EX:ldapi://}}). For example, {{EX:-h
"ldaps:// ldap://127.0.0.1:666"}} will create two listeners: one
for the (non-standard) {{EX:ldaps://}} scheme on all interfaces on
the default {{EX:ldaps://}} port 636, and one for the standard
{{EX:ldap://}} scheme on the {{EX:localhost}} ({{loopback}}) interface
on port 666. Hosts may be specified using using hostnames or
{{TERM:IPv4}} or {{TERM:IPv6}} addresses. Port values must be
numeric.
> -n <service-name>
@ -67,7 +68,7 @@ exits, regardless of any other options you give it. Current
debugging levels are
!block table; colaligns="RL"; align=Center; \
title="Table 6.1: Debugging Levels"
title="Table 7.1: Debugging Levels"
Level Description
-1 enable all debugging
0 no debugging
@ -113,11 +114,11 @@ terminal and run in the background.
H2: Stopping slapd
To kill off slapd safely, you should give a command like this
To kill off {{slapd}}(8) safely, you should give a command like this
> kill -INT `cat /usr/local/var/slapd.pid`
where {{F:/usr/local/var}} is determined by {{EX:configure}}.
Killing slapd by a more drastic method may cause information
loss or database corruption.
Killing slapd by a more drastic method may cause information loss or
database corruption.

View file

@ -1,4 +1,4 @@
# Copyright 1999-2006 The OpenLDAP Foundation, All Rights Reserved.
# Copyright 1999-2007 The OpenLDAP Foundation, All Rights Reserved.
# COPYING RESTRICTIONS APPLY, see COPYRIGHT.
H1: Using SASL
@ -10,21 +10,21 @@ SASL in OpenLDAP.
There are several industry standard authentication mechanisms that
can be used with SASL, including {{TERM:GSSAPI}} for {{TERM:Kerberos}}
V, DIGEST-MD5, and PLAIN and EXTERNAL for use with {{TERM[expand]TLS}}
(TLS).
V, {{TERM:DIGEST-MD5}}, and {{TERM:PLAIN}} and {{TERM:EXTERNAL}}
for use with {{TERM[expand]TLS}} (TLS).
The standard client tools provided with OpenLDAP Software, such as
{{ldapsearch}}(1) and {{ldapmodify}}(1), will by default attempt
to authenticate the user to the {{slapd}}(8) server using SASL.
Basic authentication service can be set up by the LDAP administrator
with a few steps, allowing users to be authenticated to the slapd
server as their LDAP entry. With a few extra steps, some users and
services can be allowed to exploit SASL's proxy authorization
feature, allowing them to authenticate themselves and then switch
their identity to that of another user or service.
to authenticate the user to the {{TERM:LDAP}} directory server using
SASL. Basic authentication service can be set up by the LDAP
administrator with a few steps, allowing users to be authenticated
to the slapd server as their LDAP entry. With a few extra steps,
some users and services can be allowed to exploit SASL's proxy
authorization feature, allowing them to authenticate themselves and
then switch their identity to that of another user or service.
This chapter assumes you have read {{Cyrus SASL for System
Administrators}}, provided with the {{PRD:Cyrus}} {{PRD:SASL}}
Administrators}}, provided with the {{PRD:Cyrus SASL}}
package (in {{FILE:doc/sysadmin.html}}) and have a working Cyrus
SASL installation. You should use the Cyrus SASL {{EX:sample_client}}
and {{EX:sample_server}} to test your SASL installation before
@ -56,19 +56,19 @@ document.
The DIGEST-MD5 mechanism is the mandatory-to-implement authentication
mechanism for LDAPv3. Though DIGEST-MD5 is not a strong authentication
mechanism in comparison with trusted third party authentication
systems (such as Kerberos or public key systems), it does offer
significant protections against a number of attacks. Unlike the
CRAM-MD5 mechanism, it prevents chosen plaintext attacks. DIGEST-MD5
is favored over the use of plaintext password mechanisms. The
CRAM-MD5 mechanism is deprecated in favor of DIGEST-MD5. Use of
{{SECT:DIGEST-MD5}} is discussed below.
systems (such as {{TERM:Kerberos}} or public key systems), it does
offer significant protections against a number of attacks. Unlike
the {{TERM:CRAM-MD5}} mechanism, it prevents chosen plaintext
attacks. DIGEST-MD5 is favored over the use of plaintext password
mechanisms. The CRAM-MD5 mechanism is deprecated in favor of
DIGEST-MD5. Use of {{SECT:DIGEST-MD5}} is discussed below.
The GSSAPI mechanism utilizes Kerberos V to provide secure
authentication services. The KERBEROS_V4 mechanism is available
for those using Kerberos IV. Kerberos is viewed as a secure,
distributed authentication system suitable for both small and large
enterprises. Use of {{SECT:GSSAPI}} and {{SECT:KERBEROS_V4}} are
discussed below.
The GSSAPI mechanism utilizes {{TERM:GSS-API}} {{TERM:Kerberos}} V
to provide secure authentication services. The KERBEROS_V4 mechanism
is available for those using Kerberos IV. Kerberos is viewed as a
secure, distributed authentication system suitable for both small
and large enterprises. Use of {{SECT:GSSAPI}} and {{SECT:KERBEROS_V4}}
are discussed below.
The EXTERNAL mechanism utilizes authentication services provided
by lower level network services such as {{TERM:TLS}} (TLS). When
@ -85,18 +85,18 @@ document.
H2: SASL Authentication
Getting basic SASL authentication running involves a few steps.
The first step configures your slapd server environment so
that it can communicate with client programs using the security
system in place at your site. This usually involves setting up a
service key, a public key, or other form of secret. The second step
concerns mapping authentication identities to LDAP DN's, which
The first step configures your slapd server environment so that it
can communicate with client programs using the security system in
place at your site. This usually involves setting up a service key,
a public key, or other form of secret. The second step concerns
mapping authentication identities to LDAP {{TERM:DN}}'s, which
depends on how entries are laid out in your directory. An explanation
of the first step will be given in the next section using Kerberos
V4 as an example mechanism. The steps necessary for your site's
authentication mechanism will be similar, but a guide to every
mechanism available under SASL is beyond the scope of this chapter.
The second step is described in the section
{{SECT:Mapping Authentication Identities}}.
The second step is described in the section {{SECT:Mapping
Authentication Identities}}.
H3: GSSAPI

View file

@ -1,5 +1,5 @@
# $OpenLDAP$
# Copyright 1999-2006 The OpenLDAP Foundation, All Rights Reserved.
# Copyright 1999-2007 The OpenLDAP Foundation, All Rights Reserved.
# COPYING RESTRICTIONS APPLY, see COPYRIGHT.
H1: Schema Specification
@ -28,7 +28,7 @@ indirectly).
H2: Distributed Schema Files
OpenLDAP is distributed with a set of schema specifications for
OpenLDAP Software is distributed with a set of schema specifications for
your use. Each set is defined in a file suitable for inclusion
(using the {{EX:include}} directive) in your {{slapd.conf}}(5)
file. These schema files are normally installed in the
@ -55,7 +55,7 @@ desired file in the global definitions portion of your
> include /usr/local/etc/openldap/schema/inetorgperson.schema
Additional files may be available. Please consult the OpenLDAP
FAQ ({{URL:http://www.openldap.org/faq/}}).
{{TERM:FAQ}} ({{URL:http://www.openldap.org/faq/}}).
Note: You should not modify any of the schema items defined
in provided files.
@ -114,9 +114,9 @@ see {{URL:http://www.alvestrand.no/harald/objectid/}}.
.{{Under no circumstances should you hijack OID namespace!}}
To obtain a registered OID at {{no cost}}, apply for an OID under
the {{ORG[expand]IANA}} (IANA) maintained {{Private Enterprise}}
the {{ORG[expand]IANA}} (ORG:IANA) maintained {{Private Enterprise}}
arc. Any private enterprise (organization) may request an OID to
be assigned under this arc. Just fill out the {{ORG:IANA}} form
be assigned under this arc. Just fill out the IANA form
at {{URL: http://www.iana.org/cgi-bin/enterprise.pl}} and your
official OID will be sent to you usually within a few days. Your
base OID will be something like {{EX:1.3.6.1.4.1.X}} where {{EX:X}}
@ -181,7 +181,7 @@ attribute found in the subschema subentry, e.g.:
E: attributetype <{{REF:RFC4512}} Attribute Type Description>
where Attribute Type Description is defined by the following
{{TERM:BNF}}:
{{TERM:ABNF}}:
> AttributeTypeDescription = "(" whsp
> numericoid whsp ; AttributeType identifier
@ -229,22 +229,22 @@ and a brief description. Each name is an alias for the OID.
{{slapd}}(8) returns the first listed name when returning results.
The first attribute, {{EX:name}}, holds values of {{EX:directoryString}}
(UTF-8 encoded Unicode) syntax. The syntax is specified by OID
(1.3.6.1.4.1.1466.115.121.1.15 identifies the directoryString
syntax). A length recommendation of 32768 is specified. Servers
should support values of this length, but may support longer values
The field does NOT specify a size constraint, so is ignored on
servers (such as slapd) which don't impose such size limits. In
addition, the equality and substring matching uses case ignore
rules. Below are tables listing commonly used syntax and
matching rules (OpenLDAP supports these and many more).
({{TERM:UTF-8}} encoded Unicode) syntax. The syntax is
specified by OID (1.3.6.1.4.1.1466.115.121.1.15 identifies the
directoryString syntax). A length recommendation of 32768 is
specified. Servers should support values of this length, but may
support longer values The field does NOT specify a size constraint,
so is ignored on servers (such as slapd) which don't impose such
size limits. In addition, the equality and substring matching uses
case ignore rules. Below are tables listing commonly used syntax
and matching rules ({{slapd}}(8) supports these and many more).
!block table; align=Center; coltags="EX,EX,N"; \
title="Table 8.3: Commonly Used Syntaxes"
Name OID Description
boolean 1.3.6.1.4.1.1466.115.121.1.7 boolean value
directoryString 1.3.6.1.4.1.1466.115.121.1.15 Unicode (UTF-8) string
distinguishedName 1.3.6.1.4.1.1466.115.121.1.12 LDAP DN
distinguishedName 1.3.6.1.4.1.1466.115.121.1.12 LDAP {{TERM:DN}}
integer 1.3.6.1.4.1.1466.115.121.1.27 integer
numericString 1.3.6.1.4.1.1466.115.121.1.36 numeric string
OID 1.3.6.1.4.1.1466.115.121.1.38 object identifier
@ -301,9 +301,9 @@ description, e.g:
> SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
> SINGLE-VALUE )
However, if we want this name to be included in
{{EX:name}} assertions [e.g. {{EX:(name=*Jane*)}}], the attribute
could alternatively be defined as a subtype of {{EX:name}}, e.g.:
However, if we want this name to be used in {{EX:name}} assertions,
e.g. {{EX:(name=*Jane*)}}, the attribute could alternatively be
defined as a subtype of {{EX:name}}, e.g.:
> attributetype ( 1.1.2.1.1 NAME 'x-my-UniqueName'
> DESC 'unique name with my organization'
@ -354,7 +354,7 @@ attribute found in the subschema subentry, e.g.:
E: objectclass <{{REF:RFC4512}} Object Class Description>
where Object Class Description is defined by the following
{{TERM:BNF}}:
{{TERM:ABNF}}:
> ObjectClassDescription = "(" whsp
> numericoid whsp ; ObjectClass identifier
@ -369,7 +369,7 @@ where Object Class Description is defined by the following
> whsp ")"
where whsp is a space ('{{EX: }}'), numericoid is a globally unique
OID in numeric form (e.g. {{EX:1.1.0}}), qdescrs is one or more
OID in dotted-decimal form (e.g. {{EX:1.1.0}}), qdescrs is one or more
names, and oids is one or more names and/or OIDs.
@ -406,8 +406,8 @@ and {{EX:givenName}} and allows {{EX:x-my-Photo}}.
H2: Transferring Schema
Since the {{slapd.conf}}(5) schema directives use {{REF:RFC4512}}
format values, you can extract schema elements published by
any LDAPv3 server and easily construct directives for use with
format values, you can extract schema elements published by any
{{TERM:LDAPv3}} server and easily construct directives for use with
{{slapd}}(8).
LDAPv3 servers publish schema elements in special {{subschema}}

View file

@ -1,4 +1,4 @@
# Copyright 1999-2006 The OpenLDAP Foundation, All Rights Reserved.
# Copyright 1999-2007 The OpenLDAP Foundation, All Rights Reserved.
# COPYING RESTRICTIONS APPLY, see COPYRIGHT.
H1: Security Considerations
@ -76,9 +76,10 @@ confidentiality protection. OpenLDAP supports negotiation of
See the {{SECT:Using TLS}} chapter for more information. StartTLS
is the standard track mechanism.
A number of {{TERM[expand]SASL}} (SASL) mechanisms, such as DIGEST-MD5
and {{TERM:GSSAPI}}, also provide data integrity and confidentiality
protection. See the {{SECT:Using SASL}} chapter for more information.
A number of {{TERM[expand]SASL}} (SASL) mechanisms, such as
{{TERM:DIGEST-MD5}} and {{TERM:GSSAPI}}, also provide data integrity
and confidentiality protection. See the {{SECT:Using SASL}} chapter
for more information.
H3: Security Strength Factors
@ -102,9 +103,9 @@ requires integrity protection for all operations and encryption
protection, 3DES equivalent, for update operations (e.g. add, delete,
modify, etc.). See {{slapd.conf}}(5) for details.
For fine-grained control, SSFs may be used in access controls. See
{{SECT:Access Control}} section of the {{SECT:The slapd Configuration
File}} for more information.
For fine-grained control, SSFs may be used in access controls.
See {{SECT:The access Configuration Directive}} section of the
{{SECT:The slapd Configuration File}} for more information.
H2: Authentication Methods
@ -144,13 +145,14 @@ the session. User/password authenticated bind is enabled by default.
However, as this mechanism itself offers no evesdropping protection
(e.g., the password is set in the clear), it is recommended that
it be used only in tightly controlled systems or when the LDAP
session is protected by other means (e.g., TLS, {{TERM:IPSEC}}).
session is protected by other means (e.g., TLS, {{TERM:IPsec}}).
Where the administrator relies on TLS to protect the password, it
is recommended that unprotected authentication be disabled. This
is done by setting "{{EX:disallow bind_simple_unprotected}}" in
{{slapd.conf}}(5). The {{EX:security}} directive's {{EX:simple_bind}}
option provides fine grain control over the level of confidential
is done using the {{EX:security}} directive's {{EX:simple_bind}}
option, which provides fine grain control over the level of confidential
protection to require for {{simple}} user/password authentication.
E.g., using {{EX:security simple_bind=56}} would require {{simple}}
binds to use encryption of DES equivalent or better.
The user/password authenticated bind mechanism can be completely
disabled by setting "{{EX:disallow bind_simple}}".

View file

@ -1,29 +1,32 @@
# $OpenLDAP$
# Copyright 2005-2006 The OpenLDAP Foundation, All Rights Reserved.
# Copyright 2005-2007 The OpenLDAP Foundation, All Rights Reserved.
# COPYING RESTRICTIONS APPLY, see COPYRIGHT.
H1: Configuring slapd
Once the software has been built and installed, you are ready
to configure {{slapd}}(8) for use at your site. Unlike previous
OpenLDAP releases, the slapd runtime configuration in 2.3 is
fully LDAP-enabled and can be managed using the standard LDAP
OpenLDAP releases, the slapd(8) runtime configuration in 2.3 (and later)
is fully LDAP-enabled and can be managed using the standard LDAP
operations with data in {{TERM:LDIF}}. The LDAP configuration engine
allows all of slapd's configuration options to be changed on the fly,
generally without requiring a server restart for the changes
to take effect. The old style {{slapd.conf}}(5) file is still
supported, but must be converted to the new {{slapd.d}}(5) format
supported, but must be converted to the new {{slapd-config}}(5) format
to allow runtime changes to be saved. While the old style
configuration uses a single file, normally installed as
{{F:/usr/local/etc/openldap/slapd.conf}}, the new style
uses a slapd backend database to store the configuration. The
configuration database normally resides in the
{{F:/usr/local/etc/openldap/slapd.d}} directory.
{{F:/usr/local/etc/openldap/slapd.d}} directory. When
converting from the slapd.conf format to slapd.d format, any
include files will also be integrated into the resulting configuration
database.
An alternate configuration directory (or file) can be specified via a
command-line option to {{slapd}}(8) or {{slurpd}}(8). This chapter
describes the general format of the configuration system, followed by a
detailed description of commonly used config settings.
An alternate configuration directory (or file) can be specified via
a command-line option to {{slapd}}(8). This chapter describes the
general format of the configuration system, followed by a detailed
description of commonly used config settings.
Note: some of the backends and of the distributed overlays
do not support runtime configuration yet. In those cases,
@ -49,13 +52,9 @@ FT[align="Center"] Figure 5.1: Sample configuration tree.
Other objects may be part of the configuration but were omitted from
the illustration for clarity.
The {{slapd.d}} configuration tree has a very specific structure. The
The {{slapd-config}} configuration tree has a very specific structure. The
root of the tree is named {{EX:cn=config}} and contains global configuration
settings. Additional settings are contained in separate child entries:
* Include files
.. Usually these are just pathnames left over from a converted
{{EX:slapd.conf}} file.
.. Otherwise use of Include files is deprecated.
* Dynamically loaded modules
.. These may only be used if the {{EX:--enable-modules}} option was
used to configure the software.
@ -146,7 +145,7 @@ and object classes) are also provided in the
H2: Configuration Directives
This section details commonly used configuration directives. For
a complete list, see the {{slapd.d}}(5) manual page. This section
a complete list, see the {{slapd-config}}(5) manual page. This section
will treat the configuration directives in a top-down order, starting
with the global directives in the {{EX:cn=config}} entry. Each
directive will be described along with its default value (if any) and
@ -244,39 +243,6 @@ H4: Sample Entry
>olcReferral: ldap://root.openldap.org
H3: cn=include
An include entry holds the pathname of one include file. Include files
are part of the old style slapd.conf configuration system and must be in
slapd.conf format. Include files were commonly used to load schema
specifications. While they are still supported, their use is deprecated.
Include entries must have the {{EX:olcIncludeFile}} objectClass.
H4: olcInclude: <filename>
This directive specifies that slapd should read additional
configuration information from the given file.
Note: You should be careful when using this directive - there is
no small limit on the number of nested include directives, and no
loop detection is done.
H4: Sample Entries
>dn: cn=include{0},cn=config
>objectClass: olcIncludeFile
>cn: include{0}
>olcInclude: ./schema/core.schema
>
>dn: cn=include{1},cn=config
>objectClass: olcIncludeFile
>cn: include{1}
>olcInclude: ./schema/cosine.schema
H3: cn=module
If support for dynamically loaded modules was enabled when configuring
@ -504,8 +470,8 @@ to the slave slapd.
Simple authentication should not be used unless adequate data
integrity and confidentiality protections are in place (e.g. TLS
or IPSEC). Simple authentication requires specification of
{{EX:binddn}} and {{EX:credentials}} parameters.
or {{TERM:IPsec}}). Simple authentication requires specification
of {{EX:binddn}} and {{EX:credentials}} parameters.
SASL authentication is generally recommended. SASL authentication
requires specification of a mechanism using the {{EX:saslmech}} parameter.
@ -522,11 +488,12 @@ H4: olcReplogfile: <filename>
This directive specifies the name of the replication log file to
which slapd will log changes. The replication log is typically
written by slapd and read by slurpd. Normally, this directive is
only used if slurpd is being used to replicate the database.
However, you can also use it to generate a transaction log, if
slurpd is not running. In this case, you will need to periodically
truncate the file, since it will grow indefinitely otherwise.
written by {{slapd}}(8) and read by {{slurpd}}(8). Normally, this
directive is only used if {{slurpd}}(8) is being used to replicate
the database. However, you can also use it to generate a transaction
log, if {{slurpd}}(8) is not running. In this case, you will need to
periodically truncate the file, since it will grow indefinitely
otherwise.
See the chapter entitled {{SECT:Replication with slurpd}} for more
information on how to use this directive.
@ -612,7 +579,7 @@ H4: olcSyncrepl
> [type=refreshOnly|refreshAndPersist]
> [interval=dd:hh:mm:ss]
> [retry=[<retry interval> <# of retries>]+]
> [searchbase=<base DN>]
> searchbase=<base DN>
> [filter=<filter str>]
> [scope=sub|one|base]
> [attrs=<attr list>]
@ -628,6 +595,17 @@ H4: olcSyncrepl
> [credentials=<passwd>]
> [realm=<realm>]
> [secprops=<properties>]
> [starttls=yes|critical]
> [tls_cert=<file>]
> [tls_key=<file>]
> [tls_cacert=<file>]
> [tls_cacertdir=<path>]
> [tls_reqcert=never|allow|try|demand]
> [tls_ciphersuite=<ciphers>]
> [tls_crlcheck=none|peer|all]
> [logbase=<base DN>]
> [logfilter=<filter str>]
> [syncdata=default|accesslog|changelog]
This directive specifies the current database as a replica of the
@ -636,8 +614,8 @@ replication consumer site running a syncrepl replication engine.
The master database is located at the replication provider site
specified by the {{EX:provider}} parameter. The replica database is
kept up-to-date with the master content using the LDAP Content
Synchronization protocol. See {{EX:draft-zeilenga-ldup-sync-xx.txt}}
({{a work in progress}}) for more information on the protocol.
Synchronization protocol. See {{REF:RFC4533}}
for more information on the protocol.
The {{EX:rid}} parameter is used for identification of the current
{{EX:syncrepl}} directive within the replication consumer server,
@ -672,7 +650,7 @@ attributes, and {{EX:attrsonly}} is unset by default. Both {{EX:sizelimit}}
and {{EX:timelimit}} default to "unlimited", and only positive integers
or "unlimited" may be specified.
The LDAP Content Synchronization protocol has two operation
The {{TERM[expand]LDAP Sync}} protocol has two operation
types: {{EX:refreshOnly}} and {{EX:refreshAndPersist}}.
The operation type is specified by the {{EX:type}} parameter.
In the {{EX:refreshOnly}} operation, the next synchronization search operation
@ -680,7 +658,7 @@ is periodically rescheduled at an interval time after each
synchronization operation finishes. The interval is specified
by the {{EX:interval}} parameter. It is set to one day by default.
In the {{EX:refreshAndPersist}} operation, a synchronization search
remains persistent in the provider slapd. Further updates to the
remains persistent in the provider {{slapd}} instance. Further updates to the
master replica will generate {{EX:searchResultEntry}} to the consumer slapd
as the search responses to the persistent synchronization search.
@ -708,11 +686,11 @@ master database.
The {{EX:bindmethod}} is {{EX:simple}} or {{EX:sasl}},
depending on whether simple password-based authentication or
{{TERM:SASL}} authentication is to be used when connecting
to the provider slapd.
to the provider {{slapd}} instance.
Simple authentication should not be used unless adequate data
integrity and confidentiality protections are in place (e.g. TLS
or IPSEC). Simple authentication requires specification of {{EX:binddn}}
or IPsec). Simple authentication requires specification of {{EX:binddn}}
and {{EX:credentials}} parameters.
SASL authentication is generally recommended. SASL authentication
@ -726,11 +704,31 @@ The {{EX:realm}} parameter specifies a realm which a certain
mechanisms authenticate the identity within. The {{EX:secprops}}
parameter specifies Cyrus SASL security properties.
The syncrepl replication mechanism is supported by the
two native backends: back-bdb and back-hdb.
The {{EX:starttls}} parameter specifies use of the StartTLS extended
operation to establish a TLS session before authenticating to the provider.
If the {{EX:critical}} argument is supplied, the session will be aborted
if the StartTLS request fails. Otherwise the syncrepl session continues
without TLS. Note that the main slapd TLS settings are not used by the
syncrepl engine; by default the TLS parameters from a {{ldap.conf}}(5)
configuration file will be used. TLS settings may be specified here,
in which case any {{ldap.conf}}(5) settings will be completely ignored.
See the {{SECT:LDAP Sync Replication}} chapter of the admin guide
for more information on how to use this directive.
Rather than replicating whole entries, the consumer can query logs
of data modifications. This mode of operation is referred to as
{{delta syncrepl}}. In addition to the above parameters, the
{{EX:logbase}} and {{EX:logfilter}} parameters must be set appropriately
for the log that will be used. The {{EX:syncdata}} parameter must
be set to either {{EX:"accesslog"}} if the log conforms to the
{{slapo-accesslog}}(5) log format, or {{EX:"changelog"}} if the log
conforms to the obsolete {{changelog}} format. If the {{EX:syncdata}}
parameter is omitted or set to {{EX:"default"}} then the log
parameters are ignored.
The {{syncrepl}} replication mechanism is supported by the {{bdb}} and
{{hdb}} backends.
See the {{SECT:LDAP Sync Replication}} chapter of this guide for
more information on how to use this directive.
H4: olcTimeLimit: <integer>
@ -848,6 +846,14 @@ is multi-valued, to accomodate multiple configuration directives. No default
is provided, but it is essential to use proper settings here to get the
best server performance.
Any changes made to this attribute will be written to the {{EX:DB_CONFIG}}
file and will cause the database environment to be reset so the changes
can take immediate effect. If the environment cache is large and has not
been recently checkpointed, this reset operation may take a long time. It
may be advisable to manually perform a single checkpoint using the Berkeley DB
{{db_checkpoint}} utility before using LDAP Modify to change this
attribute.
\Example:
> olcDbConfig: set_cachesize 0 10485760 0
@ -861,7 +867,7 @@ in the /var/tmp/bdb-log directory. Also a flag is set to tell BDB to
delete transaction log files as soon as their contents have been
checkpointed and they are no longer needed. Without this setting the
transaction log files will continue to accumulate until some other
cleanup procedure removes them. See the SleepyCat documentation for the
cleanup procedure removes them. See the Berkeley DB documentation for the
{{EX:db_archive}} command for details.
Ideally the BDB cache must be
@ -870,7 +876,7 @@ should be large enough to accomodate most transactions without overflowing,
and the log directory must be on a separate physical disk from the main
database files. And both the database directory and the log directory
should be separate from disks used for regular system activities such as
the root, boot, or swap filesystems. See the FAQ-o-Matic and the SleepyCat
the root, boot, or swap filesystems. See the FAQ-o-Matic and the Berkeley DB
documentation for more details.
@ -900,7 +906,8 @@ H4: olcDbIndex: {<attrlist> | default} [pres,eq,approx,sub,none]
This directive specifies the indices to maintain for the given
attribute. If only an {{EX:<attrlist>}} is given, the default
indices are maintained.
indices are maintained. The index keywords correspond to the
common types of matches that may be used in an LDAP search filter.
\Example:
@ -917,11 +924,37 @@ be maintained for {{EX:cn}} and {{EX:sn}} attribute types. The
fourth line causes an equality index for the {{EX:objectClass}}
attribute type.
There is no index keyword for inequality matches. Generally these
matches do not use an index. However, some attributes do support
indexing for inequality matches, based on the equality index.
A substring index can be more explicitly specified as {{EX:subinitial}},
{{EX:subany}}, or {{EX:subfinal}}, corresponding to the three
possible components
of a substring match filter. A subinitial index only indexes
substrings that appear at the beginning of an attribute value.
A subfinal index only indexes substrings that appear at the end
of an attribute value, while subany indexes substrings that occur
anywhere in a value.
Note that by default, setting an index for an attribute also
affects every subtype of that attribute. E.g., setting an equality
index on the {{EX:name}} attribute causes {{EX:cn}}, {{EX:sn}}, and every other
attribute that inherits from {{EX:name}} to be indexed.
By default, no indices are maintained. It is generally advised
that minimally an equality index upon objectClass be maintained.
> olcDbindex: objectClass eq
Additional indices should be configured corresponding to the
most common searches that are used on the database.
Presence indexing should not be configured for an attribute
unless the attribute occurs very rarely in the database, and
presence searches on the attribute occur very frequently during
normal use of the directory. Most applications don't use presence
searches, so usually presence indexing is not very useful.
If this setting is changed while slapd is running, an internal task
will be run to generate the changed index data. All server operations
can continue as normal while the indexer does its work. If slapd is

View file

@ -1,5 +1,5 @@
# $OpenLDAP$
# Copyright 1999-2006 The OpenLDAP Foundation, All Rights Reserved.
# Copyright 1999-2007 The OpenLDAP Foundation, All Rights Reserved.
# COPYING RESTRICTIONS APPLY, see COPYRIGHT.
H1: The slapd Configuration File
@ -10,10 +10,10 @@ runtime configuration is primarily accomplished through the
{{slapd.conf}}(5) file, normally installed in the
{{EX:/usr/local/etc/openldap}} directory.
An alternate configuration file can be specified via a
command-line option to {{slapd}}(8) or {{slurpd}}(8). This chapter
describes the general format of the config file, followed by a
detailed description of commonly used config file directives.
An alternate configuration file location can be specified via a command-line
option to {{slapd}}(8). This chapter describes the general format
of the {{slapd.conf}}(5) configuration file, followed by a detailed
description of commonly used config file directives.
H2: Configuration File Format
@ -89,11 +89,11 @@ by actual text are shown in brackets {{EX:<>}}.
H4: access to <what> [ by <who> [<accesslevel>] [<control>] ]+
This directive grants access (specified by <accesslevel>) to a
set of entries and/or attributes (specified by <what>) by one or
more requesters (specified by <who>).
See the {{SECT:Access Control}} section of this chapter for a
summary of basic usage.
This directive grants access (specified by <accesslevel>) to a set
of entries and/or attributes (specified by <what>) by one or more
requesters (specified by <who>). See the {{SECT:The access
Configuration Directive}} section of this chapter for a summary of
basic usage.
!if 0
More details discussion of this directive can be found in the
@ -142,7 +142,7 @@ correspond to what kind of debugging, invoke slapd with {{EX:-?}}
or consult the table below. The possible values for <integer> are:
!block table; colaligns="RL"; align=Center; \
title="Table 5.1: Debugging Levels"
title="Table 6.1: Debugging Levels"
Level Description
-1 enable all debugging
0 no debugging
@ -229,7 +229,7 @@ H4: backend <type>
This directive marks the beginning of a backend declaration.
{{EX:<type>}} should be one of the
supported backend types listed in Table 5.2.
supported backend types listed in Table 6.2.
!block table; align=Center; coltags="EX,N"; \
title="Table 5.2: Database Backends"
@ -264,7 +264,7 @@ H4: database <type>
This directive marks the beginning of a database instance
declaration.
{{EX:<type>}} should be one of the
supported backend types listed in Table 5.2.
supported backend types listed in Table 6.2.
\Example:
@ -321,7 +321,7 @@ authentication is to be used when connecting to the slave slapd.
Simple authentication should not be used unless adequate data
integrity and confidentiality protections are in place (e.g. TLS
or IPSEC). Simple authentication requires specification of
or {{TERM:IPsec}}). Simple authentication requires specification of
{{EX:binddn}} and {{EX:credentials}} parameters.
SASL authentication is generally recommended. SASL authentication
@ -334,7 +334,6 @@ an authorization identity.
See the chapter entitled {{SECT:Replication with slurpd}} for more
information on how to use this directive.
H4: replogfile <filename>
This directive specifies the name of the replication log file to
@ -415,7 +414,7 @@ H4: syncrepl
> [type=refreshOnly|refreshAndPersist]
> [interval=dd:hh:mm:ss]
> [retry=[<retry interval> <# of retries>]+]
> [searchbase=<base DN>]
> searchbase=<base DN>
> [filter=<filter str>]
> [scope=sub|one|base]
> [attrs=<attr list>]
@ -439,8 +438,8 @@ replication consumer site running a syncrepl replication engine.
The master database is located at the replication provider site
specified by the {{EX:provider}} parameter. The replica database is
kept up-to-date with the master content using the LDAP Content
Synchronization protocol. See {{EX:draft-zeilenga-ldup-sync-xx.txt}}
({{a work in progress}}) for more information on the protocol.
Synchronization protocol. See {{REF:RFC4533}}
for more information on the protocol.
The {{EX:rid}} parameter is used for identification of the current
{{EX:syncrepl}} directive within the replication consumer server,
@ -515,7 +514,7 @@ to the provider slapd.
Simple authentication should not be used unless adequate data
integrity and confidentiality protections are in place (e.g. TLS
or IPSEC). Simple authentication requires specification of {{EX:binddn}}
or IPsec). Simple authentication requires specification of {{EX:binddn}}
and {{EX:credentials}} parameters.
SASL authentication is generally recommended. SASL authentication
@ -538,11 +537,13 @@ for more information on how to use this directive.
H4: updatedn <DN>
This directive is only applicable in a slave slapd. It specifies
the DN allowed to make changes to the replica. This may be the DN
This directive is only applicable in a {{slave}} (or {{shadow}})
{{slapd(8)}} instance. It specifies the DN allowed to make changes to
the replica. This may be the DN
{{slurpd}}(8) binds as when making changes to the replica or the DN
associated with a SASL identity.
Entry-based Example:
> updatedn "cn=Update Daemon,dc=example,dc=com"
@ -556,7 +557,8 @@ on how to use this directive.
H4: updateref <URL>
This directive is only applicable in a slave slapd. It
This directive is only applicable in a {{slave}} (or {{shadow}})
{{slapd}}(8) instance. It
specifies the URL to return to clients which submit update
requests upon the replica.
If specified multiple times, each {{TERM:URL}} is provided.
@ -586,9 +588,9 @@ containing the database and associated indices live.
> directory /usr/local/var/openldap-data
H2: Access Control
H2: The access Configuration Directive
Access to slapd entries and attributes is controlled by the
Access to entries and attributes is controlled by the
access configuration file directive. The general form of an
access line is:
@ -716,7 +718,7 @@ access. Note that access is granted to "entities" not "entries."
The following table summarizes entity specifiers:
!block table; align=Center; coltags="EX,N"; \
title="Table 5.3: Access Entity Specifiers"
title="Table 6.3: Access Entity Specifiers"
Specifier|Entities
*|All, including anonymous and authenticated users
anonymous|Anonymous (non-authenticated) users
@ -749,7 +751,7 @@ H3: The access to grant
The kind of <access> granted can be one of the following:
!block table; colaligns="LRL"; coltags="EX,EX,N"; align=Center; \
title="Table 5.4: Access Levels"
title="Table 6.4: Access Levels"
Level Privileges Description
none =0 no access
disclose =d needed for information disclosure on error

View file

@ -1,17 +1,17 @@
# $OpenLDAP$
# Copyright 2003-2006 The OpenLDAP Foundation, All Rights Reserved.
# Copyright 2003-2007 The OpenLDAP Foundation, All Rights Reserved.
# COPYING RESTRICTIONS APPLY, see COPYRIGHT.
H1: LDAP Sync Replication
The LDAP Sync replication engine, syncrepl for short, is a consumer-side
replication engine that enables the consumer LDAP server to maintain
a shadow copy of a DIT fragment. A syncrepl engine resides at the
consumer-side as one of the {{slapd}} (8) threads. It creates and
maintains a consumer replica by connecting to the replication
provider to perform the initial DIT content load followed either
by periodic content polling or by timely updates upon content
changes.
The {{TERM:LDAP Sync}} Replication engine, {{TERM:syncrepl}} for
short, is a consumer-side replication engine that enables the
consumer {{TERM:LDAP}} server to maintain a shadow copy of a
{{TERM:DIT}} fragment. A syncrepl engine resides at the consumer-side
as one of the {{slapd}}(8) threads. It creates and maintains a
consumer replica by connecting to the replication provider to perform
the initial DIT content load followed either by periodic content
polling or by timely updates upon content changes.
Syncrepl uses the LDAP Content Synchronization (or LDAP Sync for
short) protocol as the replica synchronization protocol. It provides
@ -66,9 +66,7 @@ The LDAP Sync protocol allows a client to maintain a synchronized
copy of a DIT fragment. The LDAP Sync operation is defined as a set
of controls and other protocol elements which extend the LDAP search
operation. This section introduces the LDAP Content Sync protocol
only briefly. For more information, refer to the Internet Draft
{{The LDAP Content Synchronization Operation
<draft-zeilenga-ldup-sync-05.txt>}}.
only briefly. For more information, refer to {{REF:RFC4533}}.
The LDAP Sync protocol supports both polling and listening for
changes by defining two respective synchronization operations:
@ -157,13 +155,14 @@ H2: Syncrepl Details
The syncrepl engine utilizes both the {{refreshOnly}} and the
{{refreshAndPersist}} operations of the LDAP Sync protocol. If a
syncrepl specification is included in a database definition, {{slapd}}
(8) launches a syncrepl engine as a {{slapd}} (8) thread and schedules
its execution. If the {{refreshOnly}} operation is specified, the
syncrepl engine will be rescheduled at the interval time after a
synchronization operation is completed. If the {{refreshAndPersist}}
operation is specified, the engine will remain active and process
the persistent synchronization messages from the provider.
syncrepl specification is included in a database definition,
{{slapd}}(8) launches a syncrepl engine as a {{slapd}}(8) thread
and schedules its execution. If the {{refreshOnly}} operation is
specified, the syncrepl engine will be rescheduled at the interval
time after a synchronization operation is completed. If the
{{refreshAndPersist}} operation is specified, the engine will remain
active and process the persistent synchronization messages from the
provider.
The syncrepl engine utilizes both the present phase and the delete
phase of the refresh synchronization. It is possible to configure
@ -262,7 +261,7 @@ this change without the use of the session log.
H2: Configuring Syncrepl
Because syncrepl is a consumer-side replication engine, the syncrepl
specification is defined in {{slapd.conf}} (5) of the consumer
specification is defined in {{slapd.conf}}(5) of the consumer
server, not in the provider server's configuration file. The initial
loading of the replica content can be performed either by starting
the syncrepl engine with no synchronization cookie or by populating
@ -286,7 +285,7 @@ syncrepl.
H3: Set up the provider slapd
The provider is implemented as an overlay, so the overlay itself
must first be configured in {{slapd.conf}} (5) before it can be
must first be configured in {{slapd.conf}}(5) before it can be
used. The provider has only two configuration directives, for setting
checkpoints on the {{EX:contextCSN}} and for configuring the session
log. Because the LDAP Sync search is subject to access control,
@ -315,7 +314,7 @@ Note that using the session log requires searching on the {{entryUUID}}
attribute. Setting an eq index on this attribute will greatly benefit
the performance of the session log on the provider.
A more complete example of the {{slapd.conf}} content is thus:
A more complete example of the {{slapd.conf}}(5) content is thus:
> database bdb
> suffix dc=Example,dc=com
@ -331,7 +330,7 @@ A more complete example of the {{slapd.conf}} content is thus:
H3: Set up the consumer slapd
The syncrepl replication is specified in the database section of
{{slapd.conf}} (5) for the replica context. The syncrepl engine
{{slapd.conf}}(5) for the replica context. The syncrepl engine
is backend independent and the directive can be defined with any
database type.
@ -354,7 +353,7 @@ database type.
> binddn="cn=syncuser,dc=example,dc=com"
> credentials=secret
In this example, the consumer will connect to the provider slapd
In this example, the consumer will connect to the provider {{slapd}}(8)
at port 389 of {{FILE:ldap://provider.example.com}} to perform a
polling ({{refreshOnly}}) mode of synchronization once a day. It
will bind as {{EX:cn=syncuser,dc=example,dc=com}} using simple
@ -371,8 +370,8 @@ entries whose objectClass is organizationalPerson in the entire
subtree rooted at {{EX:dc=example,dc=com}}. The requested attributes
are {{EX:cn}}, {{EX:sn}}, {{EX:ou}}, {{EX:telephoneNumber}},
{{EX:title}}, and {{EX:l}}. The schema checking is turned off, so
that the consumer {{slapd}} (8) will not enforce entry schema
checking when it process updates from the provider {{slapd}} (8).
that the consumer {{slapd}}(8) will not enforce entry schema
checking when it process updates from the provider {{slapd}}(8).
For more detailed information on the syncrepl directive, see the
{{SECT:syncrepl}} section of {{SECT:The slapd Configuration File}}
@ -381,7 +380,7 @@ chapter of this admin guide.
H3: Start the provider and the consumer slapd
The provider {{slapd}} (8) is not required to be restarted.
The provider {{slapd}}(8) is not required to be restarted.
{{contextCSN}} is automatically generated as needed: it might be
originally contained in the {{TERM:LDIF}} file, generated by
{{slapadd}} (8), generated upon changes in the context, or generated
@ -391,7 +390,7 @@ LDIF file is being loaded which did not previously contain the
(8) to cause it to be generated. This will allow the server to
startup a little quicker the first time it runs.
When starting a consumer {{slapd}} (8), it is possible to provide
When starting a consumer {{slapd}}(8), it is possible to provide
a synchronization cookie as the {{-c cookie}} command line option
in order to start the synchronization from a specific state. The
cookie is a comma separated list of name=value pairs. Currently
@ -399,7 +398,7 @@ supported syncrepl cookie fields are {{csn=<csn>}} and {{rid=<rid>}}.
{{<csn>}} represents the current synchronization state of the
consumer replica. {{<rid>}} identifies a consumer replica locally
within the consumer server. It is used to relate the cookie to the
syncrepl definition in {{slapd.conf}} (5) which has the matching
syncrepl definition in {{slapd.conf}}(5) which has the matching
replica identifier. The {{<rid>}} must have no more than 3 decimal
digits. The command line cookie overrides the synchronization
cookie stored in the consumer replica database.

View file

@ -6,6 +6,7 @@
# Master: master.sdf
#
!define DOC_TOC 3
!define DOC_TYPE "Administrator's Guide"
!build_title

View file

@ -1,4 +1,4 @@
# Copyright 1999-2006 The OpenLDAP Foundation, All Rights Reserved.
# Copyright 1999-2007 The OpenLDAP Foundation, All Rights Reserved.
# COPYING RESTRICTIONS APPLY, see COPYRIGHT.
H1: Using TLS
@ -6,25 +6,26 @@ H1: Using TLS
OpenLDAP clients and servers are capable of using the
{{TERM[expand]TLS}} ({{TERM:TLS}}) framework to provide
integrity and confidentiality protections and to support
LDAP authentication using the {{TERM:SASL}} EXTERNAL mechanism.
LDAP authentication using the {{TERM:SASL}} {{TERM:EXTERNAL}} mechanism.
TLS is defined in {{REF:RFC4346}}.
H2: TLS Certificates
TLS uses {{TERM:X.509}} certificates to carry client and server
identities. All servers are required to have valid certificates,
whereas client certificates are optional. Clients must have a
identities. All servers are required to have valid certificates,
whereas client certificates are optional. Clients must have a
valid certificate in order to authenticate via SASL EXTERNAL.
For more information on creating and managing certificates,
see the {{PRD:OpenSSL}} documentation.
H3: Server Certificates
The DN of a server certificate must use the CN attribute
to name the server, and the {{EX:CN}} must carry the server's
fully qualified domain name. Additional alias names and wildcards
may be present in the {{EX:subjectAltName}} certificate extension.
More details on server certificate names are in {{REF:RFC4513}}.
The {{TERM:DN}} of a server certificate must use the {{EX:CN}}
attribute to name the server, and the {{EX:CN}} must carry the
server's fully qualified domain name. Additional alias names and
wildcards may be present in the {{EX:subjectAltName}} certificate
extension. More details on server certificate names are in
{{REF:RFC4513}}.
H3: Client Certificates
@ -117,29 +118,29 @@ and {{EX:SSLv2}}.
H4: TLSRandFile <filename>
This directive specifies the file to obtain random bits from when
{{EX:/dev/urandom}} is not available. If the
system provides {{EX:/dev/urandom}} then this option is not needed,
otherwise a source of random data must be configured.
Some systems (e.g. Linux)
provide {{EX:/dev/urandom}} by default, while others (e.g. Solaris)
{{FILE:/dev/urandom}} is not available. If the system provides
{{FILE:/dev/urandom}} then this option is not needed, otherwise a
source of random data must be configured. Some systems (e.g. Linux)
provide {{FILE:/dev/urandom}} by default, while others (e.g. Solaris)
require the installation of a patch to provide it, and others may
not support it at all. In the latter case, EGD or PRNGD should be
installed, and this directive should specify the name of the EGD/PRNGD
socket. The environment variable {{EX:RANDFILE}} can also be used to specify
the filename. Also, in the absence of these options, the {{EX:.rnd}}
file in the slapd user's home directory may be used if it exists. To
use the {{EX:.rnd}} file, just create the file and copy a few hundred
bytes of arbitrary data into the file. The file is only used to
provide a seed for the pseudo-random number generator, and it doesn't
need very much data to work.
socket. The environment variable {{EX:RANDFILE}} can also be used
to specify the filename. Also, in the absence of these options, the
{{EX:.rnd}} file in the slapd user's home directory may be used if
it exists. To use the {{EX:.rnd}} file, just create the file and
copy a few hundred bytes of arbitrary data into the file. The file
is only used to provide a seed for the pseudo-random number generator,
and it doesn't need very much data to work.
H4: TLSEphemeralDHParamFile <filename>
This directive specifies the file that contains parameters for Diffie-Hellman
ephemeral key exchange. This is required in order to use a DSA certificate on
the server side (i.e. {{EX:TLSCertificateKeyFile}} points to a DSA key).
Multiple sets of parameters can be included in the file; all of them will
be processed. Parameters can be generated using the following command
This directive specifies the file that contains parameters for
Diffie-Hellman ephemeral key exchange. This is required in order
to use a DSA certificate on the server side (i.e.
{{EX:TLSCertificateKeyFile}} points to a DSA key). Multiple sets
of parameters can be included in the file; all of them will be
processed. Parameters can be generated using the following command
> openssl dhparam [-dsaparam] -out <filename> <numbits>
@ -177,8 +178,8 @@ be configured on a system-wide basis, they may all be overridden by
individual users in their {{.ldaprc}} files.
The LDAP Start TLS operation is used in LDAP to initiate TLS
negotatation. All OpenLDAP command line tools support a {{E:-Z}}
and {{E:-ZZ}} flag to indicate whether a Start TLS operation is to
negotatation. All OpenLDAP command line tools support a {{EX:-Z}}
and {{EX:-ZZ}} flag to indicate whether a Start TLS operation is to
be issued. The latter flag indicates that the tool is to cease
processing if TLS cannot be started while the former allows the
command to continue.
@ -186,7 +187,7 @@ command to continue.
In LDAPv2 environments, TLS is normally started using the LDAP
Secure URI scheme ({{EX:ldaps://}}) instead of the normal LDAP URI
scheme ({{EX:ldap://}}). OpenLDAP command line tools allow either
scheme to used with the {{EX:-U}} flag and with the {{EX:URI}}
scheme to used with the {{EX:-H}} flag and with the {{EX:URI}}
{{ldap.conf}}(5) option.

View file

@ -1,5 +1,5 @@
# $OpenLDAP$
# Copyright 1999-2006 The OpenLDAP Foundation, All Rights Reserved.
# Copyright 1999-2007 The OpenLDAP Foundation, All Rights Reserved.
# COPYING RESTRICTIONS APPLY, see COPYRIGHT.
H1: Performance Tuning

View file

@ -1,5 +1,5 @@
# $OpenLDAP$
# Copyright 1999-2006 The OpenLDAP Foundation, All Rights Reserved.
# Copyright 1999-2007 The OpenLDAP Foundation, All Rights Reserved.
# COPYING RESTRICTIONS APPLY, see COPYRIGHT.
# template for plain documents

Some files were not shown because too many files have changed in this diff Show more