for managing Directory Server instances
Edition 8.2.8
Copyright © 2010 Red Hat, Inc.
Legal Notice
Abstract
- Preface
- 1. Basic Red Hat Directory Server Settings
- 1.1. System Requirements
- 1.2. Directory Server File Locations
- 1.3. LDAP Tool Locations
- 1.4. Starting and Stopping Servers
- 1.5. Starting the Console
- 1.6. Enabling LDAPI
- 1.7. Changing Directory Server Port Numbers
- 1.8. Creating a New Directory Server Instance
- 1.9. Setting the Directory Manager Information
- 1.10. Using Directory Server Plug-ins
- 2. Configuring Directory Databases
- 3. Creating Directory Entries
- 4. Populating Directory Databases
- 5. Managing Attributes and Values
- 5.1. Enforcing Attribute Uniqueness
- 5.2. Assigning Class of Service
- 5.2.1. About the CoS Definition Entry
- 5.2.2. About the CoS Template Entry
- 5.2.3. How a Pointer CoS Works
- 5.2.4. How an Indirect CoS Works
- 5.2.5. How a Classic CoS Works
- 5.2.6. Handling Physical Attribute Values
- 5.2.7. Handling Multi-valued Attributes with CoS
- 5.2.8. Searches for CoS-Specified Attributes
- 5.2.9. Access Control and CoS
- 5.2.10. Managing CoS Using the Console
- 5.2.11. Managing CoS from the Command Line
- 5.2.12. Creating Role-Based Attributes
- 5.3. Linking Attributes to Manage Attribute Values
- 5.4. Assigning and Managing Unique Numeric Attribute Values
- 6. Managing the Directory Schema
- 6.1. Overview of Schema
- 6.2. Managing Object Identifiers
- 6.3. Directory Server Attribute Syntaxes
- 6.4. Managing Custom Schema in the Console
- 6.5. Managing Schema Using ldapmodify
- 6.6. Creating Custom Schema Files
- 6.7. Dynamically Reloading Schema
- 6.8. Turning Schema Checking On and Off
- 6.9. Using Syntax Validation
- 7. Managing Indexes
- 8. Finding Directory Entries
- 8.1. Finding Entries Using the Directory Server Console
- 8.2. Using ldapsearch
- 8.3. LDAP Search Filters
- 8.4. Examples of Common ldapsearches
- 8.4.1. Returning All Entries
- 8.4.2. Specifying Search Filters on the Command Line
- 8.4.3. Searching the Root DSE Entry
- 8.4.4. Searching the Schema Entry
- 8.4.5. Using LDAP_BASEDN
- 8.4.6. Displaying Subsets of Attributes
- 8.4.7. Searching for Operational Attributes
- 8.4.8. Specifying Search Filters Using a File
- 8.4.9. Specifying DNs That Contain Commas in Search Filters
- 8.4.10. Using Client Authentication When Searching
- 8.4.11. Searching with Specified Controls
- 8.4.12. Searching with Language Matching Rules
- 8.4.13. Searching for Attributes with Bit Field Values
- 8.5. Using Persistent Search
- 8.6. Performing Dereferencing Searches
- 8.7. Using Simple Paged Results
- 9. Managing Replication
- 9.1. Replication Overview
- 9.1.1. What Directory Units Are Replicated
- 9.1.2. Read-Write and Read-Only Replicas
- 9.1.3. Suppliers and Consumers
- 9.1.4. Changelog
- 9.1.5. Replication Identity
- 9.1.6. Replication Agreement
- 9.1.7. Replicating a Subset of Attributes with Fractional Replication
- 9.1.8. Compatibility with Earlier Versions of Directory Server
- 9.2. Replication Scenarios
- 9.3. Creating the Supplier Bind DN Entry
- 9.4. Configuring Single-Master Replication
- 9.5. Configuring Multi-Master Replication
- 9.6. Configuring Cascading Replication
- 9.7. Configuring Replication from the Command Line
- 9.8. Making a Replica Updatable
- 9.9. Deleting the Changelog
- 9.10. Initializing Consumers
- 9.11. Forcing Replication Updates
- 9.12. Replication over SSL
- 9.13. Setting Replication Timeout Periods
- 9.14. Replicating o=NetscapeRoot for Admin Server Failover
- 9.15. Replication with Earlier Releases
- 9.16. Using the Retro Changelog Plug-in
- 9.17. Monitoring Replication Status
- 9.18. Solving Common Replication Conflicts
- 9.19. Troubleshooting Replication-Related Problems
- 10. Synchronizing Red Hat Directory Server with Microsoft Active Directory
- 10.1. About Windows Sync
- 10.2. Configuring Windows Sync
- 10.2.1. Step 1: Configure SSL on Directory Server
- 10.2.2. Step 2: Configure the Active Directory Domain
- 10.2.3. Step 3: Select or Create the Sync Identity
- 10.2.4. Step 4: Install the Password Sync Service
- 10.2.5. Step 5: Configure the Password Sync Service
- 10.2.6. Step 6: Configure the Directory Server Database for Synchronization
- 10.2.7. Step 7: Create the Synchronization Agreement
- 10.2.8. Step 8: Configure Directory Server User and Group Entries for Synchronization
- 10.2.9. Step 9: Begin Synchronization
- 10.3. Synchronizing Users
- 10.4. Synchronizing Groups
- 10.4.1. About Windows Group Types
- 10.4.2. Group Attributes Synchronized between Directory Server and Active Directory
- 10.4.3. Group Schema Differences between Red Hat Directory Server and Active Directory
- 10.4.4. Configuring Group Sync for Directory Server Groups
- 10.4.5. Configuring Group Sync for Active Directory Groups
- 10.5. Deleting and Resurrecting Entries
- 10.6. Sending Synchronization Updates
- 10.7. Modifying the Sync Agreement
- 10.8. Configuring Unidirectional Synchronization
- 10.9. Managing the Password Sync Service
- 10.10. Troubleshooting
- 11. Organizing Entries with Groups, Roles, and Views
- 11.1. Using Groups
- 11.2. Using Roles
- 11.2.1. About Roles
- 11.2.2. Creating a Managed Role
- 11.2.3. Creating a Filtered Role
- 11.2.4. Creating a Nested Role
- 11.2.5. Editing and Assigning Roles to an Entry
- 11.2.6. Viewing Roles for an Entry through the Command Line
- 11.2.7. Making a Role Inactive or Active
- 11.2.8. Viewing the Activation Status for Entries
- 11.2.9. About Deleting Roles
- 11.2.10. Using Roles Securely
- 11.3. Using Views
- 12. Managing Access Control
- 12.1. Access Control Principles
- 12.2. Default ACIs
- 12.3. Creating ACIs Manually
- 12.4. Bind Rules
- 12.4.1. Bind Rule Syntax
- 12.4.2. Defining User Access - userdn Keyword
- 12.4.3. Defining Group Access - groupdn Keyword
- 12.4.4. Defining Role Access - roledn Keyword
- 12.4.5. Defining Access Based on Value Matching
- 12.4.6. Defining Access from a Specific IP Address
- 12.4.7. Defining Access from a Specific Domain
- 12.4.8. Requiring a Certain Level of Security in Connections
- 12.4.9. Defining Access at a Specific Time of Day or Day of Week
- 12.4.10. Defining Access Based on Authentication Method
- 12.4.11. Using Boolean Bind Rules
- 12.5. Creating ACIs from the Console
- 12.6. Viewing ACIs
- 12.7. Checking Access Rights on Entries (Get Effective Rights)
- 12.8. Logging Access Control Information
- 12.9. Access Control Usage Examples
- 12.9.1. Granting Anonymous Access
- 12.9.2. Granting Write Access to Personal Entries
- 12.9.3. Restricting Access to Key Roles
- 12.9.4. Granting a Group Full Access to a Suffix
- 12.9.5. Granting Rights to Add and Delete Group Entries
- 12.9.6. Granting Conditional Access to a Group or Role
- 12.9.7. Denying Access
- 12.9.8. Setting a Target Using Filtering
- 12.9.9. Allowing Users to Add or Remove Themselves from a Group
- 12.9.10. Setting an ACI to Require a Certain Security Strength Factor for Some Operations
- 12.9.11. Defining Permissions for DNs That Contain a Comma
- 12.9.12. Proxied Authorization ACI Example
- 12.10. Advanced Access Control: Using Macro ACIs
- 12.11. Access Control and Replication
- 12.12. Compatibility with Earlier Releases
- 13. Managing User Authentication
- 13.1. Managing the Password Policy
- 13.2. Configuring the Account Lockout Policy
- 13.3. Synchronizing Passwords
- 13.4. Setting Resource Limits Based on the Bind DN
- 13.5. Enabling Different Types of Binds
- 13.6. Using Pass-through Authentication
- 13.7. Using PAM for Pass-through Authentication
- 13.8. Inactivating Users and Roles
- 14. Configuring Secure Connections
- 14.1. Requiring Secure Connections
- 14.2. Using TLS/SSL
- 14.2.1. Enabling TLS/SSL: Summary of Steps
- 14.2.2. Obtaining and Installing Server Certificates
- 14.2.3. Configuring the Directory Server to Run in SSL/TLS
- 14.2.4. Command-Line Functions for Start TLS
- 14.2.5. Using certutil
- 14.2.6. Managing Certificates Used by the Directory Server Console
- 14.2.7. Updating Attribute Encryption for New SSL/TLS Certificates
- 14.2.8. Using External Security Devices
- 14.2.9. Setting Security Preferences
- 14.2.10. Using Certificate-Based Authentication
- 14.2.11. Managing Certificates for the Directory Server
- 14.3. Using SASL
- 14.3.1. About SASL Identity Mapping
- 14.3.2. Default SASL Mappings for Directory Server
- 14.3.3. Authentication Mechanisms for SASL in Directory Server
- 14.3.4. About Kerberos with Directory Server
- 14.3.5. Configuring SASL Identity Mapping
- 14.3.6. Configuring SASL Authentication at Directory Server Startup
- 14.3.7. Using an External Keytab
- 15. Monitoring Server and Database Activity
- 16. Monitoring Directory Server Using SNMP
- 17. Planning for Disaster
- A. LDAP Data Interchange Format
- B. LDAP URLs
- C. Internationalization
- Glossary
- Index
- Multi-master replication — Provides a highly available directory service for both read and write operations. Multi-master replication can be combined with simple and cascading replication scenarios to provide a highly flexible and scalable replication environment.
- Chaining and referrals — Increases the power of your directory by storing a complete logical view of your directory on a single server while maintaining data on a large number of Directory Servers transparently for clients.
- Roles and classes of service — Provides a flexible mechanism for grouping and sharing attributes between entries in a dynamic fashion.
- Improved access control mechanisms — Provides support for macros that dramatically reduce the number of access control statements used in the directory and increase the scalability of access control evaluation.
- Resource-limits by bind DN — Grants the power to control the amount of server resources allocated to search operations based on the bind DN of the client.
- Multiple databases — Provides a simple way of breaking down your directory data to simplify the implementation of replication and chaining in your directory service.
- Password policy and account lockout — Defines a set of rules that govern how passwords and user accounts are managed in the Directory Server.
- TLS and SSL — Provides secure authentication and communication over the network, using the Mozilla Network Security Services (NSS) libraries for cryptography.
- An LDAP server — The LDAP v3-compliant network daemon.
- Directory Server Console — A graphical management console that dramatically reduces the effort of setting up and maintaining your directory service.
- SNMP agent — Can monitor the Directory Server using the Simple Network Management Protocol (SNMP).
/usr/bin and the /usr/sbin directories. These tools can be run from any location without specifying the tool location.
/usr/lib64/mozldap directory on Red Hat Enterprise Linux 5 (64-bit) (or /usr/lib/mozldap for Red Hat Enterprise Linux 5 (32-bit) systems).
/usr/bin directory. It is possible to use the OpenLDAP commands as shown in the examples, but you must use the -x argument to disable SASL, which OpenLDAP tools use by default.
| Formatting Style | Purpose |
|---|---|
Monospace font
| Monospace is used for commands, package names, files and directory paths, and any text displayed in a prompt. |
Monospace with a background | This type of formatting is used for anything entered or returned in a command prompt. |
| Italicized text | Any text which is italicized is a variable, such as instance_name or hostname. Occasionally, this is also used to emphasize a new term or other phrase. |
| Bolded text | Most phrases which are in bold are application names, such as Cygwin, or are fields or options in a user interface, such as a User Name Here: field or button. |
NOTE
IMPORTANT
WARNING
- Red Hat Directory Server Release Notes contain important information on new features, fixed bugs, known issues and workarounds, and other important deployment information for this specific version of Directory Server.
- Red Hat Directory Server Deployment Guide provides an overview for planning a deployment of the Directory Server.
- Red Hat Directory Server Administrator's Guide contains procedures for the day-to-day maintenance of the directory service. Includes information on configuring server-side plug-ins.
- Red Hat Directory Server Configuration and Command-Line Tool Reference provides reference information on the command-line scripts, configuration attributes, and log files shipped with Directory Server.
- Red Hat Directory Server Installation Guide contains procedures for installing your Directory Server as well as procedures for migrating from a previous installation of Directory Server.
- Red Hat Directory Server Schema Reference provides reference information about the Directory Server schema.
- Red Hat Directory Server Plug-in Programmer's Guide describes how to write server plug-ins in order to customize and extend the capabilities of Directory Server.
- Using Red Hat Console gives an overview of the primary user interface and how it interacts with the Directory Server and Admin Server, as well as how to perform basic management tasks through the main Console window.
- Using the Admin Server describes the different tasks and tools associated with the Admin Server and how to use the Admin Server with the Configuration and User Directory Server instances.
- Select the Red Hat Directory Server product.
- Set the component to
Doc - administration-guide. - Set the version number to 8.2.
- For errors, give the page number (for the PDF) or URL (for the HTML), and give a succinct description of the problem, such as incorrect procedure or typo.For enhancements, put in what information needs to be added and why.
- Give a clear title for the bug. For example,
"Incorrect command example for setup script options"is better than"Bad example".
| Revision History | ||||||
|---|---|---|---|---|---|---|
| Revision 8.2.8-3.400 | 2013-10-31 | |||||
| ||||||
| Revision 8.2.8-3 | 2012-07-18 | |||||
| ||||||
| Revision 8.2-15 | April 2, 2012 | |||||
| ||||||
| Revision 8.2-14 | January 31, 2012 | |||||
| ||||||
| Revision 8.2-13 | July 1, 2011 | |||||
| ||||||
| Revision 8.2-12 | June 3, 2011 | |||||
| ||||||
| Revision 8.2-11 | June 3, 2011 | |||||
| ||||||
| Revision 8.2-10 | May 23, 2011 | |||||
| ||||||
| Revision 8.2-9 | April 4, 2011 | |||||
| ||||||
| Revision 8.2-8 | February 24, 2011 | |||||
| ||||||
| Revision 8.2-7 | January 6, 2011 | |||||
| ||||||
| Revision 8.2-6 | November 19, 2010 | |||||
| ||||||
| Revision 8.2-5 | November 15, 2010 | |||||
| ||||||
| Revision 8.2-4 | November 1, 2010 | |||||
| ||||||
| Revision 8.2-3 | October 12, 2010 | |||||
| ||||||
| Revision 8.2-2 | September 17, 2010 | |||||
| ||||||
| Revision 8.2-1 | August 10, 2010 | |||||
| ||||||
| Revision 8.2-0 | August 3, 2010 | |||||
| ||||||
- 1.1. System Requirements
- 1.2. Directory Server File Locations
- 1.3. LDAP Tool Locations
- 1.4. Starting and Stopping Servers
- 1.5. Starting the Console
- 1.6. Enabling LDAPI
- 1.7. Changing Directory Server Port Numbers
- 1.8. Creating a New Directory Server Instance
- 1.9. Setting the Directory Manager Information
- 1.10. Using Directory Server Plug-ins
ns-slapd daemon on the host machine. The server manages the directory databases and responds to client requests.
- The Directory Server is the core LDAP server daemon. It is compliant with LDAP v3 standards. This component includes command-line server management and administration programs and scripts for common operations like export and backing up databases.
- The Directory Server Console is the user interface that simplifies managing users, groups, and other LDAP data for your enterprise. The Console is used for all aspects of server management, including making backups; configuring security, replication, and databases; adding entries; and monitoring servers and viewing statistics.
- The Admin Server is the management agent which administers Directory Server instances. It communicates with the Directory Server Console and performs operations on the Directory Server instances. It also provides a simple HTML interface and online help pages.
IMPORTANT
- Red Hat Enterprise Linux 4 i386 (32-bit)
- Red Hat Enterprise Linux 4 x86_64 (64-bit)
- Red Hat Enterprise Linux 5 i386 (32-bit)
- Red Hat Enterprise Linux 5 x86_64 (64-bit)
NOTE
Red Hat Directory Server 8.2 is supported running on a virtual guest on a Red Hat Enterprise Linux virtual server. - Solaris 9 SPARC (64-bit)
- Red Hat Enterprise Linux 4 i386 (32-bit)
- Red Hat Enterprise Linux 4 x86_64 (64-bit)
- Red Hat Enterprise Linux 5 i386 (32-bit)
- Red Hat Enterprise Linux 5 x86_64 (64-bit)
- Solaris 9 SPARC (64-bit)
- Windows XP Professional
- Windows Server 2003
- Windows Server 2008 (32-bit)
- Windows Server 2008 (64-bit)
- Windows 2003 Active Directory (32-bit)
- Windows 2003 Active Directory (64-bit)
- Windows 2008 Active Directory (32-bit)
- Windows 2008 Active Directory (64-bit)
ldap.example.com, the instance name is ldap by default.
admin-serv. For any directory or folder named slapd-instance, substitute admin-serv, such as /etc/dirsrv/slapd-example and /etc/dirsrv/admin-serv.
Table 1.1. Red Hat Enterprise Linux 4 and 5 (x86)
| File or Directory | Location |
|---|---|
| Log files |
/var/log/dirsrv/slapd-instance
|
| Configuration files |
/etc/dirsrv/slapd-instance
|
| Instance directory |
/usr/lib/dirsrv/slapd-instance
|
| Database files |
/var/lib/dirsrv/slapd-instance
|
| Runtime files |
/var/lock/dirsrv/slapd-instance
/var/run/dirsrv/slapd-instance
|
| Initscripts |
/etc/rc.d/init.d/dirsrv and /etc/sysconfig/dirsrv
/etc/rc.d/init.d/dirsrv-admin and /etc/sysconfig/dirsrv-admin
|
| Tools |
/usr/bin/
/usr/sbin/
|
Table 1.2. Red Hat Enterprise Linux 4 and 5 (x86_64)
| File or Directory | Location |
|---|---|
| Log files |
/var/log/dirsrv/slapd-instance
|
| Configuration files |
/etc/dirsrv/slapd-instance
|
| Instance directory |
/usr/lib64/dirsrv/slapd-instance
|
| Database files |
/var/lib/dirsrv/slapd-instance
|
| Runtime files |
/var/lock/dirsrv/slapd-instance
/var/run/dirsrv/slapd-instance
|
| Initscripts |
/etc/rc.d/init.d/dirsrv and /etc/sysconfig/dirsrv
/etc/rc.d/init.d/dirsrv-admin and /etc/sysconfig/dirsrv-admin
|
| Tools |
/usr/bin/
/usr/sbin/
|
ldapsearch, ldapmodify, and ldapdelete — for command-line operations. The MozLDAP tools are installed with Directory Server.
| Platform | Directory Location |
|---|---|
| Red Hat Enterprise Linux 4 and 5 i386 | /usr/lib/mozldap |
| Red Hat Enterprise Linux 4 and 5 x86_64 | /usr/lib64/mozldap |
ldapsearch and ldapmodify, are the Mozilla LDAP tools. For most Linux systems, OpenLDAP tools are already installed in the /usr/bin/ directory. These OpenLDAP tools are not supported for Directory Server operations. For the best results with the Directory Server, make sure the path to the Mozilla LDAP tools comes first in the PATH or use the full path and file name for every LDAP operation.
- The output of the other tools may be different, so it may not look like the examples in the documentation.
- The OpenLDAP tools require a
-xargument to disable SASL so that it can be used for a simple bind, meaning the-Dand-warguments or an anonymous bind. - The OpenLDAP tools' arguments for using TLS/SSL and SASL are quite different than the Mozilla LDAP arguments. See the OpenLDAP documentation for instructions on those arguments.
setup-ds-admin.pl script completes. Avoid stopping and starting the server to prevent interrupting replication, searches, and other server operations.
- If the Directory Server has SSL enabled, you cannot restart the server from the Console; you must use the command-line. It is possible to restart without being prompted for a password; see Section 14.2.3.3, “Creating a Password File for the Directory Server” for more information.
- Rebooting the host system can automatically start the
ns-slapdprocess. The directory provides startup or run command (rc) scripts. Use thechkconfigcommand to enable the Directory Server and Admin Server to start on boot.
- Start the Directory Server Console.
redhat-idm-console -a http://localhost:9830
- In the Tasks tab, click Start the Directory Server, Stop the Directory Server, or Restart the Directory Server.

service tool:
service dirsrv {start|stop|restart} instanceNOTE
dirsrv.
/usr/sbin directory and are run similar to the service start/stop command:
/usr/sbin/{start|stop|restart}-dirsrv instance/etc/dirsrv/slapd-instance_name/{start|stop|restart}-slapd- There are scripts in the
/usr/sbindirectory./usr/sbin/{start|stop|restart}-ds-admin - The Admin Server service can also be stopped and started using system tools on Red Hat Enterprise Linux. For example, on Red Hat Enterprise Linux 5 (64-bit), the command is
service:service dirsrv-admin {start|stop|restart}NOTE
The service name for the Admin Server process on Red Hat Enterprise Linux isdirsrv-admin.
/usr/bin directory, so it can be run as follows:
redhat-idm-console
NOTE
PATH before launching the Console. Run the following to see if the Java program is in the PATH and to get the version and vendor information:
java -version
redhat-idm-console -a http://localhost:9830 -u "cn=Directory Manager" -w secret
Table 1.3. redhat-idm-console Options
| Option | Description | |||
|---|---|---|---|---|
| -a adminURL | Specifies a base URL for the instance of Admin Server to log into. | |||
| -f fileName | Writes errors and system messages to fileName. | |||
| -h |
Prints out the help message for redhat-idm-console.
| |||
| -s |
Specifies the directory instance to access, either by specifying the DN of the server instance entry (SIE) or the instance name, such as slapd-example.
| |||
| -u | Gives the user DN to use to log into the Console. | |||
| -w | Gives the password to use to log into the Console. | |||
| -w - | Reads the password from the standard output. | |||
| -x options |
Specifies extra options. There are three values for extraOptions:
| |||
| -y file | Reads the password from the specified input file. |
admin entry created during installation has access to only configuration entries, not user entries. Regular user accounts are more limited.

- In the Directory Server Console, select the Tasks tab.
- Click Log on to the Directory Server as a New User.

- A login dialog box appears.
Enter the full distinguished name of the entry with which to bind to the server. For example, to bind as user Barbara Jensen, enter her full DN in the login box:cn=Barbara Jensen,ou=People,dc=example,dc=com
nsslapd-ldapilistento enable LDAPI for Directory Servernsslapd-ldapifilepathto point to the Unix socket file
- Modify the
nsslapd-ldapilistento turn LDAPI on and add the socket file attribute./usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 -h server.example.com dn: cn=config changetype: modify replace: nsslapd-ldapilisten nsslapd-ldapilisten: on - add: nsslapd-ldapifilepath nsslapd-ldapifilepath: /var/run/slapd-example.socket
- Restart the server to apply the new configuration.
service dirsrv restart example
nsslapd-port or nsslapd-secureport attribute under the cn=config entry in the dse.ldif.
NOTE
o=NetscapeRoot subtree should be done through the Directory Server Console.
- The Directory Server port number must also be updated in the Admin Server configuration.
- If there are other Directory Server instances that point to the configuration or user directory, update those servers to point to the new port number.
- In the Directory Server Console, select the Configuration tab, and then select the top entry in the navigation tree in the left pane.
- Select the Settings tab in the right pane.

- Change the port numbers. The port number for the server to use for non-SSL communications in the Port field, with a default value of
389. The port number for the server to use for SSL communications is in the Encrypted Port field, with a default value of636. - Click .
- The Console returns a warning, You are about to change the port number for the Configuration Directory. This will affect all Administration Servers that use this directory and you'll need to update them with the new port number. Are you sure you want to change the port number? Click .
- Then a dialog appears, reading that the changes will not take effect until the server is restarted. Click .
NOTE
Do not restart the Directory Server at this point. If you do, you will not be able to make the necessary changes to the Admin Server through the Console. - Open the Admin Server Console.
- In the Configuration tab, select the Configuration DS tab.

- In the LDAP Port field, type in the new LDAP port number for your Directory Server instance.
- Check the Secure Connection box if this is a secure port.
NOTE
If you try to save these changes at this step, you will get a warning box that reads, Invalid LDAP Host/LDAP Port, can not connect. Click , and ignore this warning. - In the Tasks tab of the Directory Server Console, click Restart Directory Server. A dialog to confirm that you want to restart the server. Click .

- Open the Configuration DS tab of the Admin Server Console and select .A dialog will appear, reading The Directory Server setting has been modified. You must shutdown and restart your Admin Server and all the servers in the Server Group for the changes to take effect. Click .
- In the Tasks tab of the Admin Server Console, click Restart Admin Server. A dialog opens reading that the Admin Server has been successfully restarted. Click .
NOTE
You must close and reopen the Console before you can do anything else in the Console. Refresh may not update the Console, and, if you try to do anything, you will get a warning that reads Unable to contact LDAP server.
setup-ds.pl script. For information on using the setup-ds.pl script, see the Directory Server Installation Guide. To create an instance using the Directory Server Console:
- In the Red Hat Console window, select Server Group in the navigation tree, and then right-click.
- From the pop-up menu, select Create Instance and then Directory Server.

- Fill in the instance information.

- A unique name for the server. This name must only have alphanumeric characters, a dash (
-), or an underscore (_). - A port number for LDAP communications.
- The root suffix for the new Directory Server instance.
- A DN for the Directory Manager. This user has total access to every entry in the directory, without normal usage constraints (such as search timeouts); this is described in Section 1.9, “Setting the Directory Manager Information”.
- The password for the Directory Manager.
- The user ID as which to run the Directory Server daemon.
- Click .
root user in UNIX. Access control does not apply to the Directory Manager entry; likewise, limits on searches and other operations do not apply. The Directory Manager entry is created during installation; the default DN is cn=Directory Manager. The password for this user is defined in the nsslapd-rootdn attribute.
- Log in to the Directory Server Console as Directory Manager. For information on changing the bind DN, see Section 1.5.3, “Changing Login Identity”.
- In the Directory Server Console, select the Configuration tab, and then select the top entry in the navigation tree in the left pane.
- Select the Manager tab in the right pane.

- Change the Directory Manager settings:
- Change the distinguished name for the Directory Manager in the Root DN field. The default value is
cn=Directory Manager. - Set the storage scheme for the server to use to store the password for Directory Manager in the Manager Password Encryption pull-down menu.
- Enter a new password, and confirm it.
- In the Directory Server Console, select the Configuration tab.
- Double-click the Plugins folder in the navigation tree.
- Select the plug-in from the Plugins list.
- To disable the plug-in, clear the Enabled checkbox. To enable the plug-in, check this checkbox.

- Click .
- Restart the Directory Server.
service dirsrv restart
instance_name
ldapmodify utility to edit the value of the nsslapd-pluginEnabled attribute. For example: [1]
/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 -h server.example.com dn: cn=ACL Plugin,cn=plugins,cn=config changetype: modify replace: nsslapd-pluginEnabled nsslapd-pluginEnabled: on
nsslapd-pluginPrecedence attribute on the plug-in's configuration entry. This attribute has a value of 1 (highest priority) to 99 (lowest priority). If the attribute is not set, it has a default value of 50.
nsslapd-pluginPrecedence attribute is set using the ldapmodify command. For example:
/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 -h server.example.com dn: cn=My Example Plugin,cn=plugins,cn=config changetype: modify replace: nsslapd-pluginPrecedence nsslapd-pluginPrecedence: 1
IMPORTANT
/usr/lib64/mozldap directory on Red Hat Enterprise Linux 5 (64-bit); directories for other platforms are listed in Section 1.3, “LDAP Tool Locations”. However, Red Hat Enterprise Linux systems also include LDAP tools from OpenLDAP. It is possible to use the OpenLDAP commands as shown in the examples, but you must use the -x argument to disable SASL and allow simple authentication.
ou=people suffix and all the entries and nodes below it might be stored in one database, the ou=groups suffix on another database, and the ou=contractors suffix on yet another database.
example.com and one for redhat.com. The ISP would create two root suffixes, one corresponding to the dc=example,dc=com naming context and one corresponding to the dc=redhat,dc=com naming context, as shown in Figure 2.2, “A Directory Tree with Two Root Suffixes”.
dc=example,dc=com, and one root suffix corresponds to the European branch of their directory tree, l=europe,dc=example,dc=com. From a client application's perspective, the directory tree looks as illustrated in Figure 2.3, “A Directory Tree with a Root Suffix Off Limits to Search Operations”.
dc=example,dc=com branch of Example Corporation's directory will not return entries from the l=europe,dc=example,dc=com branch of the directory, as it is a separate root suffix.
dc=example,dc=com, and then create a sub suffix beneath it for their European directory entries, l=europe,dc=example,dc=com. From a client application's perspective, the directory tree appears as illustrated in Figure 2.4, “A Directory Tree with a Sub Suffix”.
- In the Directory Server Console, select the Configuration tab.
- Right-click Data in the left navigation pane, and select New Root Suffix from the pop-up menu.

- Enter a unique suffix in the New suffix field.The suffix must be named with
dcnaming conventions, such asdc=example,dc=com.
- Select the Create associated database automatically to create a database at the same time as the new root suffix, and enter a unique name for the new database in the Database name field, such as
example2. The name can be a combination of alphanumeric characters, dashes (-), and underscores (_). No other characters are allowed.Deselect the checkbox to create a database for the new root suffix later. This option specifies a directory where the database will be created. The new root suffix will be disabled until a database is created.

- In the Directory Server Console, select the Configuration tab.
- Under the Data in the left navigation pane, select the suffix under which to add a new sub suffix. Right-click the suffix, and select New Sub Suffix from the pop-up menu.
The Create new sub suffix dialog box is displayed. - Enter a unique suffix name in the New suffix field. The suffix must be named in line with
dcnaming conventions, such asou=groups.
The root suffix is automatically added to the name. For example, it the sub suffixou=groupsis created under thedc=example,dc=comsuffix, the Console automatically names itou=groups,dc=example,dc=com. - Select the Create associated database automatically checkbox to create a database at the same time as the new sub suffix, and enter a unique name for the new database in the Database name field, such as
example2. The name can be a combination of alphanumeric characters, dashes (-), and underscores (_). No other characters are allowed.If the checkbox is not selected, than the database for the new sub suffix must be created later. The new sub suffix is disabled until a database is created.

ldapmodify command-line utility to add new suffixes to the directory configuration file. The suffix configuration information is stored in the cn=mapping tree,cn=config entry.
NOTE
cn=config entry in the dse.ldif file. The cn=config entry in the simple, flat dse.ldif configuration file is not stored in the same highly scalable database as regular entries. As a result, if many entries, particularly entries that are likely to be updated frequently, are stored under cn=config, performance will suffer.
/usr/lib64/mozldap/ldapmodify
-a-D "cn=directory manager" -w secret -p 389 -h server.example.comldapmodifybinds to the server and prepares it to add an entry to the configuration file.- Create the root suffix entry.
Example 2.1. Example Root Suffix Entry
dn: cn=dc=example\,dc=com,cn=mapping tree,cn=config objectclass: top objectclass: extensibleObject objectclass: nsMappingTree nsslapd-state: backend nsslapd-backend: UserData cn: dc=example,dc=com
- Create a sub suffix for groups under this root suffix using
ldapmodifyto add the sub suffix entry:dn: cn=ou=groups\,dc=example\,dc=com,cn=mapping tree,cn=config objectclass: top objectclass: extensibleObject objectclass: nsMappingTree nsslapd-state: backend nsslapd-backend: GroupData nsslapd-parent-suffix: dc=example,dc=com cn: ou=groups,dc=example,dc=com
NOTE
ou=groups ,dc=example,dc=com, with two spaces after groups, any sub suffixes created under this root will need to specify two spaces after ou=groups, as well.
Table 2.1. Suffix Attributes
| Attribute Name | Value |
|---|---|
| dn |
Defines the DN for the suffix. The DN is contained in quotes. The value entered takes the form cn=dc=example\,dc=com,cn=mapping tree,cn=config. This attribute is required.
|
| cn | Defines the relative DN (RDN) of the entry. This attribute is required. |
| objectclass |
Tells the server that the entry is root or sub suffix entry. It always takes the value nsMappingTree. This attribute is required.
|
| nsslapd-state |
Determines how the suffix handles operations. This attribute takes the following values:
disabled.
|
| nsslapd-referral |
Defines the LDAP URL of the referral to be returned by the suffix. This attribute can be multi-valued, with one referral per value. This attribute is required when the value of the nsslapd-state attribute is referral or referral on update.
|
| nsslapd-backend |
Gives the name of the database or database link used to process requests. This attribute can be multi-valued, with one database or database link per value. See Section 2.3, “Creating and Maintaining Database Links” for more information about database links. This attribute is required when the value of the nsslapd-state attribute is set to backend or referral on update.
|
| nsslapd-distribution-plugin |
Specifies the shared library to be used with the custom distribution function. This attribute is required only when more than one database is specified in the nsslapd-backend attribute. See Section 2.2, “Creating and Maintaining Databases” for more information about the custom distribution function.
|
| nsslapd-distribution-funct |
Specifies the name of the custom distribution function. This attribute is required only when more than one database is specified in the nsslapd-backend attribute. See Section 2.2, “Creating and Maintaining Databases” for more information about the custom distribution function.
|
| nsslapd-parent-suffix |
Provides the DN of the parent entry for a sub suffix. By default, this attribute is not present, which means that the suffix is regarded as a root suffix. For example, to create a sub suffix names o=sales,dc=example,dc=com under the root suffix dc=example,dc=com, add nsslapd-parent-suffix: dc=example,dc=com to the sub suffix.
|
- In the Directory Server Console, select the Configuration tab.
- Under Data in the left navigation pane, click the suffix to disable.
- Click the Suffix Setting tab, and deselect the Enable this suffix checkbox.

WARNING
- In the Directory Server Console, select the Configuration tab.
- Under Data in the left navigation pane, select the suffix to delete.
- Right-click the suffix, and select Delete from the menu.

- Select either Delete this suffix and all of its sub suffixes or Delete this suffix only.

- One database per suffix. The data for each suffix is contained in a separate database.
Three databases are added to store the data contained in separate suffixes.
This division of the tree corresponds to three databases.
Database one contains the data forou=peopleplus the data fordc=example,dc=com, so that clients can conduct searches based atdc=example,dc=com. Database two contains the data forou=groups, and database three contains the data forou=contractors. - Multiple databases for one suffix.Suppose the number of entries in the
ou=peoplebranch of the directory tree is so large that two databases are needed to store them. In this case, the data contained byou=peoplecould be distributed across two databases.
DB1contains people with names from A-K, andDB2contains people with names from L-Z.DB3contains theou=groupsdata, andDB4contains theou=contractorsdata.Custom distribution plug-in distributes data from a single suffix across multiple databases. Contact Red Hat Professional Services for information on how to create distribution logic for Directory Server.
- In the Directory Server Console, select the Configuration tab.
- In the left pane, expand Data, then click the suffix to which to add the new database.
- Right-click the suffix, and select New Database from the pop-up menu.

- Enter a unique name for the database, such as
example2. The database name can be a combination of alphanumeric characters, dashes (-), and underscores (_).
The Create database in field is automatically filled with the default database directory (/var/lib/dirsrv/slapd-) and the name of the new database. It is also possible to enter or browse for a different directory location.instance_name/db
ldapmodify command-line utility to add a new database to the directory configuration file. The database configuration information is stored in the cn=ldbm database,cn=plugins,cn=config entry.
example1:
- Run
ldapmodify:[2]/usr/lib64/mozldap/ldapmodify
-a-D "cn=directory manager" -w secret -p 389 -h server.example.comTheldapmodifyutility binds to the server and prepares it to add an entry to the configuration file. - Create the entry for the new database.
dn: cn=UserData,cn=ldbm database,cn=plugins,cn=config objectclass: extensibleObject objectclass: nsBackendInstance nsslapd-suffix: ou=people,dc=example,dc=com
The entry added corresponds to a database namedUserDatathat contains the data for the root or sub suffixou=people,dc=example,dc=com. - Create a root or sub suffix, as described in Section 2.1.1.3, “Creating Root and Sub Suffixes from the Command Line”. The database name, given in the DN attribute, must correspond with the value in the
nsslapd-backendattribute of the suffix entry.
NOTE
- The distribution function cannot be changed once entry distribution has been deployed.
- The LDAP
modrdnoperation cannot be used to rename entries if that would cause them to be distributed into a different database. - Distributed local databases cannot be replicated.
- The
ldapmodifyoperation cannot be used to change entries if that would cause them to be distributed into a different database.
- In the Directory Server Console, select the Configuration tab.
- Expand Data in the left navigation pane. Select the suffix to which to apply the distribution function.
- Select the Databases tab in the right window.

- The databases associated with the suffix are already listed in the Databases tab. Click to associate additional databases with the suffix.
- Enter the path to the distribution library.
- Enter the name of the distribution function in the Function name field.
- Run
ldapmodify.[2]/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 -h server.example.com
- Add the following attributes to the suffix entry itself, supplying the information about the custom distribution logic:
changetype: modify add: nsslapd-backend nsslapd-backend: Database1 - add: nsslapd-backend nsslapd-backend: Database2 - add: nsslapd-backend nsslapd-backend: Database3 - add: nsslapd-distribution-plugin nsslapd-distribution-plugin: /full/name/of/a/shared/library - add: nsslapd-distribution-funct nsslapd-distribution-funct: distribution-function-name
Thensslapd-backendattribute specifies all of the databases associated with this suffix. Thensslapd-distribution-pluginattribute specifies the name of the library that the plug-in uses. Thensslapd-distribution-functattribute provides the name of the distribution function itself.
ldapmodify command-line utility, see Section 3.2.4, “Adding and Modifying Entries Using ldapmodify”.
- In the Directory Server Console, select the Configuration tab.
- Expand Data in the left pane. Expand the suffix containing the database to put in read-only mode.
- Select the database to put into read-only mode.
- Select the Database Settings tab in the right pane.

- Select the database is read-only checkbox.
- Run
ldapmodify.[2]/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 -h server.example.com
- Change the read-only attribute to
ondn: cn=
database_name,cn=ldbm database,cn=plugins,cn=config changetype: modify replace: nsslapd-readonly nsslapd-readonly: on
NOTE
userRoot.
WARNING
NOTE
- In the Directory Server Console, select the Configuration tab, and then select the top entry in the navigation tree in the left pane.
- Select the Settings tab in the right pane.

- Select the Make Entire Server Read-Only checkbox.
- Click , and then restart the server.
- In the Directory Server Console, select the Configuration tab.
- Expand the Data folder, and then select the suffix.
- Select the database to delete.
- Right-click the database and select Delete from the pop-up menu.

- Confirm that the database should be deleted in the Delete Database dialog box.
- Stop the Directory Server instance.
service dirsrv stop example
- Create the new directory, if necessary, where the transaction logs will be located.
mkdir /home/exampledb-txnlogs
- Set the appropriate file permissions on the directory so that the Directory Server user can access it; the default Directory Server user and group are
nobody:nobody.chown nobody:nobody /home/exampledb-txnlogs
- Open the Directory Server instance's configuration directory.
cd /etc/dirsrv/slapd-
instance_name - Edit the
dse.ldiffile, and change thensslapd-db-logdirectorydirective for the new log file path:nsslapd-db-logdirectory: /home/exampledb-txnlogs
This attribute goes on the same entry that has thensslapd-dbcachesizeattribute. - Open the database directory.
cd /var/lib/dirsrv/slapd-
instance_name/db - Remove all of the
__db.*files. - Move the
log.*files to the new location. - Start the Directory Server instance again.
service dirsrv start example
NOTE
WARNING
WARNING
- Advanced Encryption Standard (AES)
- Triple Data Encryption Standard (3DES)
- In the Configuration tab, select the Data node.
- Expand the suffix, and select the database to edit.
- Select the Attribute Encryption tab.


NOTE
For existing attribute values to be encrypted, the information must be exported from the database, then re-imported. See Section 2.2.3.5, “Exporting and Importing an Encrypted Database”.
NOTE
- Run the
ldapmodifycommand[2]:/usr/lib64/mozldap/ldapmodify
-a-D "cn=directory manager" -w secret -p 389 -h server.example.com - Add an encryption entry for the attribute being encrypted. For example, this entry encrypts the
telephoneNumberattribute with the AES cipher:dn: cn=telephoneNumber,cn=encrypted attributes,cn=Database1,cn=ldbm database,cn=plugins,cn=config objectclass: top objectclass: nsAttributeEncryption cn: telephoneNumber nsEncryptionAlgorithm: AES
- For existing attributes in entries to be encrypted, the information must be exported, then re-imported. See Section 2.2.3.5, “Exporting and Importing an Encrypted Database”.
-E option when running the db2ldif and ldif2db scripts will decrypt the data on export and re-encrypt it on import.
- Export the data using the
db2ldifscript, as follows:db2ldif -n Database1 -E -a /path/to/output.ldif -s "dc=example,dc=com" -s "o=userRoot"
See Section 4.2.3, “Exporting to LDIF from the Command Line” for more information. - Make any configuration changes.
- Re-import the data using the
ldif2dbscript, as follows:ldif2db -n Database1 -E -i /path/to/output.ldif
NOTE
- It is possible for old, unencrypted data to persist in the server's database page pool backing file, even after a successful re-import with encryption. To remove this data, stop the server and delete the
db/guardianfile, then re-start the server. This will force recovery, a side-effect of which is deleting the backing file. However, it is possible that the data from the deleted file could still be recovered from the hard drive unless steps are taken to overwrite the disk blocks that it occupied. - After enabling encryption and importing data, be sure to delete the LDIF file because it contains plain text values for the now-encrypted data. Ensure that the disk blocks that it occupied are overwritten.
- The unencrypted data previously stored in the server's database may persist on disk after a successful re-import with encryption. This is because the old database files are deleted as part of the import process. Ensure that the disk blocks that those files occupied are overwritten.
- Data stored in the server's replication log database is never encrypted; therefore, care should be taken to protect those files if replication is used.
- The server does not attempt to protect unencrypted data stored in memory. This data may be copied into a system page file by the operating system. For this reason, ensure that any page or swap files are adequately protected.
Apr 4 13:00:35 smtp1 logger: [04/Apr/2010:13:00:34 -0700] - attrcrypt_unwrap_key: failed to unwrap key for cipher AES Apr 4 13:00:35 smtp1 logger: [04/Apr/2010:13:00:34 -0700] - Failed to retrieve key for cipher AES in attrcrypt_cipher_init Apr 4 13:00:35 smtp1 logger: [04/Apr/2010:13:00:34 -0700] - Failed to initialize cipher AES in attrcrypt_init Apr 4 13:00:35 smtp1 logger: [04/Apr/2010:13:00:34 -0700] - attrcrypt_unwrap_key: failed to unwrap key for cipher AES Apr 4 13:00:35 smtp1 logger: [04/Apr/2010:13:00:34 -0700] - Failed to retrieve key for cipher AES in attrcrypt_cipher_init Apr 4 13:00:35 smtp1 logger: [04/Apr/2010:13:00:34 -0700] - Failed to initialize cipher AES in attrcrypt_init
- Stop the server.
service dirsrv stop
- Open the
dse.ldiffile.vim /etc/dirsrv/dse.ldif
- There are special encryption key entries for the encryption ciphers used for attribute encryption under the database configuration. For example:
dn:
cn=AES,cn=encrypted attribute keys,cn=userRoot,cn=ldbm database,cn=plugins,cn=config objectClass: top objectClass: extensibleObject cn: AES nssymmetrickey:: mSLm/RlCLvPZrSdARHPowedF9zKx+kjVTww5ARE4w0lbl2YlYvrI3bNg=Delete these entries. - Start the server again.
service dirsrv start
- Suffix information. A suffix is created in the directory tree that is managed by the database link, not a regular database. This suffix corresponds to the suffix on the remote server that contains the data.
- Bind credentials. When the database link binds to a remote server, it impersonates a user, and this specifies the DN and the credentials for each database link to use to bind with remote servers.
- LDAP URL. This supplies the LDAP URL of the remote server to which the database link connects.
- List of failover servers. This supplies a list of alternative servers for the database link to contact in the event of a failure. This configuration item is optional.
NOTE
- In the Directory Server Console, select the Configuration tab.
- Create a new suffix as described in Section 2.1.1, “Creating Suffixes”.Deselect the Create associated database automatically checkbox. It is simpler to configure a database link on a suffix without a database associated with it because having both a database and database link requires custom distribution functions to distribute directory data.

- In the left pane, right-click the new suffix, and select New Database Link from the pop-up menu.

- Fill in the database link name. The name can be a combination of alphanumeric characters, dashes (
-), and underscores (_). No other characters, like spaces, are allowed. - Set the radio button for the appropriate method for authentication.
There are four authentication methods:- Simple means that the server connects over the standard port with no encryption. The only required information is the bind DN and password for the user as whom the server connects to the remote server.
- Server TLS/SSL Certificate uses the local server's SSL certificate to authenticate to the remote server. A certificate must be installed on the local server for certificate-based authentication, and the remote server must have certificate mapping configured so that it can map the subject DN in the local server's certificate to the corresponding user entry.Configuring SSL and certificate mapping is described in Section 14.2, “Using TLS/SSL”.
NOTE
When the database link and remote server are configured to communicate using SSL, this does not mean that the client application making the operation request must also communicate using SSL. The client can bind using a normal port. - SASL/DIGEST-MD5 requires only the bind DN and password to authenticate.
- SASL/GSSAPI requires the local server to have a Kerberos keytab (as in Section 14.3.4.2, “About the KDC Server and Keytabs”), and the remote server to have a SASL mapping to map the local server's principal to the real user entry (as in Section 14.3.5.1, “Configuring SASL Identity Mapping from the Console”).
- In the Remote Server Information section, select the connection type for the local server to use to connect to the remote server. There are three options:
- Use LDAP. This sets a standard, unencrypted connection.
- Use TLS/SSL. This uses a secure connection over the server's secure LDAPS port, such as
636. This setting is required to use TLS/SSL.When using SSL/TLS, make sure that the remote server's port number is set to its secure port. - Use Start TLS. This uses Start TLS to establish a secure connection over the server's standard port.
NOTE
If secure binds are required for simple password authentication (Section 13.5.1, “Requiring Secure Binds”), then any chaining operations will fail unless they occur over a secure connection. Using a secure connection (SSL/TLS and Start TLS connections or SASL authentication) is recommended, anyway. - In the Remote Server Information section, fill in the name and port number for the remote server.For any failover servers, fill in the hostname and port number, and click the button. A failover server is a backup server, so that if the primary remote server fails, the database link contacts the first server in the failover servers list and cycles through the list until a server is accessed.

NOTE
- Use the
ldapmodifycommand-line utility to create a new database link from the command line. The new instance must be located in thecn=chaining database,cn=plugins,cn=configentry./usr/lib64/mozldap/ldapmodify
-a-D "cn=directory manager" -w secret -p 389 -h server.example.com - Specify the configuration information for the database link:
dn: cn=examplelink,cn=chaining database,cn=plugins,cn=config objectclass: top objectclass: extensibleObject objectclass: nsBackendInstance nsslapd-suffix: ou=people,dc=example,dc=com suffix being chained nsfarmserverurl: ldap://people.example.com:389/ LDAP URL to remote server nsmultiplexorbinddn: cn=proxy admin,cn=config bind DN nsmultiplexorcredentials: secret bind password cn: examplelink
NOTE
cn=default instance config,cn=chaining database,cn=plugins,cn=config entry. These configuration attributes apply to all database links at creation time. Changes to the default configuration only affect new database links. The default configuration attributes on existing database links cannot be changed.
cn=database_link, cn=chaining database,cn=plugins,cn=config. For more information about configuration attributes, refer to the Directory Server Configuration and Command-Line Tool Reference.
nsslapd-suffix attribute to define the suffix managed by the database link. For example, for the database link to point to the people information for a remote site of the company, enter the following suffix information:
nsslapd-suffix: l=Zanzibar,ou=people,dc=example,dc=com
cn=database_link, cn=chaining database,cn=plugins,cn=config entry.
NOTE
nsslapd-nsslapd-suffix attribute are applied only after the server containing the database link is restarted.
anonymous.
- On the remote server:
- Create an administrative user for the database link.For information on adding entries, see Chapter 3, Creating Directory Entries.
- Provide proxy access rights for the administrative user created in step 1 on the subtree chained to by the database link.For more information on configuring ACIs, see Chapter 12, Managing Access Control
- On the server containing the database link, use
ldapmodifyto provide a user DN for the database link in thensMultiplexorBindDNattribute of thecn=database_link,cn=chaining database,cn=plugins,cn=configentry.WARNING
ThensMultiplexorBindDNcannot be that of the Directory Manager.Useldapmodifyto provide a user password for the database link in thensMultiplexorCredentialsattribute of thecn=database_link,cn=chaining database,cn=plugins,cn=configentry.

nsMultiplexorBindDN attribute and a user password as defined in the nsMultiplexorCredentials attribute. In this example, Server A uses the following bind credentials:
nsMultiplexorBindDN: cn=proxy admin,cn=config nsMultiplexorCredentials: secret

nsMultiplexorBindDN, and set the proxy authentication rights for this user. To set the proxy authorization correctly, set the proxy ACI as any other ACI.
WARNING
NOTE
creatorsName and modifiersName do not reflect the real creator or modifier of the entries. These attributes contain the name of the administrative user granted proxied authorization rights on the remote data server.
ldap://hostname:port.
nsFarmServerURL attribute is set in the cn=database_link, cn=chaining database,cn=plugins,cn=config entry of the configuration file.
nsFarmServerURL: ldap://example.com:389/
NOTE
nsFarmServerURL: ldaps://africa.example.com:636/
NOTE
nsFarmServerURL attribute, separated by spaces.
nsFarmServerURL: ldap://example.com us.example.com:389 africa.example.com:1000/
example.com on the standard port to service an operation. If it does not respond, the database link then contacts the server us.example.com on port 389. If this server fails, it then contacts africa.example.com on port 1000.
- Over the standard LDAP port
- Over a dedicated TLS/SSL port
- Using Start TLS, which is a secure connection over a standard port
NOTE
nsUseStartTLS attribute. When this is on, then the server initiates a Start TLS connect over the standard port. If this is off, then the server either uses the LDAP port or the TLS/SSL port, depending on what is configured for the remote server in the nsFarmServerURL attribute.
nsUseStartTLS: on
nsUseStartTLS: off
- empty. If there is no bind mechanism set, then the server performs simple authentication and requires the
nsMultiplexorBindDNandnsMultiplexorCredentialsattributes to give the bind information. - EXTERNAL. This uses an SSL certificate to authenticate the farm server to the remote server. Either the farm server URL must be set to the secure URL (
ldaps) or thensUseStartTLSattribute must be set toon.Additionally, the remote server must be configured to map the farm server's certificate to its bind identity, as described in Section 14.2.10.2, “Mapping DNs to Certificates”. - DIGEST-MD5. This uses SASL authentication with DIGEST-MD5 encryption. As with simple authentication, this requires the
nsMultiplexorBindDNandnsMultiplexorCredentialsattributes to give the bind information. - GSSAPI. This uses Kerberos-based authentication over SASL.The farm server must be configured with a Kerberos keytab, and the remote server must have a defined SASL mapping for the farm server's bind identity. Setting up Kerberos keytabs and SASL mappings is described in Section 14.3, “Using SASL”.
NOTE
nsBindMechanism: EXTERNAL
NOTE
/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 -h server.example.com dn: cn=config,cn=chaining database,cn=plugins,cn=config changetype: modify add: nsActiveChainingComponents nsActiveChainingComponents: cn=password policy,cn=components,cn=config - add: nsActiveChainingComponents nsActiveChainingComponents: cn=sasl,cn=components,cn=config ^D
cn=database_link, cn=chaining database,cn=plugins,cn=config entry.
Table 2.2. Database Link Configuration Attributes
| Attributes | Value | ||||
|---|---|---|---|---|---|
| nsTransmittedControls [†] | Gives the OID of LDAP controls forwarded by the database link to the remote data server. | ||||
| nsslapd-suffix | The suffix managed by the database link. Any changes to this attribute after the entry has been created take effect only after the server containing the database link is restarted. | ||||
| nsslapd-timelimit |
Default search time limit for the database link, given in seconds. The default value is 3600 seconds.
| ||||
| nsslapd-sizelimit |
Default size limit for the database link, given in number of entries. The default value is 2000 entries.
| ||||
| nsFarmServerURL | Gives the LDAP URL of the remote server (or farm server) that contains the data. This attribute can contain optional servers for failover, separated by spaces. If using cascading chaining, this URL can point to another database link. | ||||
| nsUseStartTLS |
Sets whether to use Start TLS to establish a secure connection over a standard port. The default is off, which is used for both simple (standard) connections and TLS/SSL connections.
| ||||
| nsBindMethod |
Sets the authentication method to use to authenticate (bind) to the remote server. The default, if this attribute is not given, is to authenticate using a simple bind, requiring the nsMultiplexorBindDN and nsMultiplexorCredentials attributes for the bind information.
| ||||
| nsMultiplexorBindDN |
DN of the administrative entry used to communicate with the remote server. The term multiplexor in the name of the attribute means the server which contains the database link and communicates with the remote server. This bind DN cannot be the Directory Manager. If this attribute is not specified, the database link binds as anonymous.
| ||||
| nsMultiplexorCredentials |
Password for the administrative user, given in plain text. If no password is provided, it means that users can bind as anonymous. The password is encrypted in the configuration file.
| ||||
| nsCheckLocalACI |
Reserved for advanced use only. Controls whether ACIs are evaluated on the database link as well as the remote data server. Takes the values on or off. Changes to this attribute occur only after the server has been restarted. The default value is off.
| ||||
| nsProxiedAuthorization |
Reserved for advanced use only. Disables proxied authorization. A value of off means proxied authorization is disabled. The default value is on.
| ||||
| nsActiveChainingComponents[†] |
Lists the components using chaining. A component is any functional unit in the server. The value of this attribute in the database link instance overrides the value in the global configuration attribute. To disable chaining on a particular database instance, use the value none. The default policy is not to allow chaining. For more information, see Section 2.3.2.1, “Chaining Component Operations”.
| ||||
| nsReferralOnScopedSearch |
Controls whether referrals are returned by scoped searches. This attribute is for optimizing the directory because returning referrals in response to scoped searches is more efficient. Takes the values on or off. The default value is off.
| ||||
| nsHopLimit |
Maximum number of times a request can be forwarded from one database link to another. The default value is 10.
| ||||
[†]
Can be both a global and instance attribute. This global configuration attribute is located in the cn=config,cn=chaining database,cn=plugins,cn=config entry. The global attributes are dynamic, meaning any changes made to them automatically take effect on all instances of the database link within the directory.
| |||||
us.example.com domain contains the subtree l=Walla Walla,ou=people,dc=example,dc=com on a database and that operation requests for the l=Zanzibar,ou=people,dc=example,dc=com subtree should be chained to a different server in the africa.example.com domain.

- Run
ldapmodify[2] to add a database link to Server A:/usr/lib64/mozldap/ldapmodify
-a-D "cn=directory manager" -w secret -p 389 -h server.example.com - Specify the configuration information for the database link:
dn: cn=DBLink1,cn=chaining database,cn=plugins,cn=config objectclass: top objectclass: extensibleObject objectclass: nsBackendInstance nsslapd-suffix: c=africa,ou=people,dc=example,dc=com nsfarmserverurl: ldap://africa.example.com:389/ nsmultiplexorbinddn: cn=proxy admin,cn=config nsmultiplexorcredentials: secret cn: DBLink1 dn: cn=c=africa\,ou=people\,dc=example\,dc=com,cn=mapping tree,cn=config objectclass: top objectclass: extensibleObject objectclass: nsMappingTree nsslapd-state: backend nsslapd-backend: DBLink1 nsslapd-parent-suffix: ou=people,dc=example,dc=com cn: c=africa\,ou=people\,dc=example\,dc=com
In the first entry, thensslapd-suffixattribute contains the suffix on Server B to which to chain from Server A. ThensFarmServerURLattribute contains the LDAP URL of Server B.The second entry creates a new suffix, allowing the server to route requests made to the new database link. Thecnattribute contains the same suffix specified in thensslapd-suffixattribute of the database link. Thensslapd-backendattribute contains the name of the database link. Thensslapd-parent-suffixattribute specifies the parent of this new suffix,ou=people,dc=example,dc=com. - Create an administrative user on Server B, as follows:
dn: cn=proxy admin,cn=config objectclass: person objectclass: organizationalPerson objectclass: inetOrgPerson cn: proxy admin sn: proxy admin userPassword: secret description: Entry for use by database links
WARNING
Do not use the Directory Manager user as the proxy administrative user on the remote server. This creates a security hole. - Add the following proxy authorization ACI to the
l=Zanzibar,ou=people,dc=example,dc=comentry on Server B:aci: (targetattr = "*")(version 3.0; acl "Proxied authorization for database links"; allow (proxy) userdn = "ldap:///cn=proxy admin,cn=config";)This ACI gives the proxy admin user read-only access to the data contained on the remote server within thel=Zanzibar,ou=people,dc=example,dc=comsubtree only.NOTE
When a user binds to a database link, the user's identity is sent to the remote server. Access controls are always evaluated on the remote server. For the user to modify or write data successfully to the remote server, set up the correct access controls on the remote server. For more information about how access controls are evaluated in the context of chained operations, see Section 2.3.6, “Database Links and Access Control Evaluation”.
Table 2.3. Components Allowed to Chain
| Component Name | Description | Permissions |
|---|---|---|
| ACI plug-in |
This plug-in implements access control. Operations used to retrieve and update ACI attributes are not chained because it is not safe to mix local and remote ACI attributes. However, requests used to retrieve user entries may be chained by setting the chaining components attribute, nsActiveChainingComponents: cn=ACI Plugin,cn=plugins,cn=config.
| Read, search, and compare |
| Resource limit component | This component sets server limits depending on the user bind DN. Resource limits can be applied on remote users if the resource limitation component is allowed to chain. To chain resource limit component operations, add the chaining component attribute, nsActiveChainingComponents: cn=resource limits,cn=components,cn=config. | Read, search, and compare |
| Certificate-based authentication checking component | This component is used when the external bind method is used. It retrieves the user certificate from the database on the remote server. Allowing this component to chain means certificate-based authentication can work with a database link. To chain this component's operations, add the chaining component attribute, nsActiveChainingComponents: cn=certificate-based authentication,cn=components,cn=config. | Read, search, and compare |
| Password policy component | This component is used to allow SASL binds to the remote server. Some forms of SASL authentication require authenticating with a username and password. Enabling the password policy allows the server to verify and implement the specific authentication method requested and to apply the appropriate password policies. To chain this component's operations, add the chaining component attribute, nsActiveChainingComponents: cn=password policy,cn=components,cn=config. | Read, search, and compare |
| SASL component | This component is used to allow SASL binds to the remote server. To chain this component's operations, add the chaining component attribute, nsActiveChainingComponents: cn=password policy,cn=components,cn=config. | Read, search, and compare |
| Referential Integrity plug-in | This plug-in ensures that updates made to attributes containing DNs are propagated to all entries that contain pointers to the attribute. For example, when an entry that is a member of a group is deleted, the entry is automatically removed from the group. Using this plug-in with chaining helps simplify the management of static groups when the group members are remote to the static group definition. To chain this component's operations, add the chaining component attribute, nsActiveChainingComponents: cn=referential integrity postoperation,cn=plugins,cn=config. | Read, write, search, and compare |
| Attribute Uniqueness plug-in | This plug-in checks that all the values for a specified attribute are unique (no duplicates). If this plug-in is chained, it confirms that attribute values are unique even on attributes changed through a database link. To chain this component's operations, add the chaining component attribute, nsActiveChainingComponents: cn=attribute uniqueness,cn=plugins,cn=config | Read, search, and compare |
| Roles component | This component chains the roles and roles assignments for the entries in a database. Chaining this component maintains the roles even on chained databases. To chain this component's operations, add the chaining component attribute, nsActiveChainingComponents: cn=roles,cn=components,cn=config. | Read, write, search, and compare |
NOTE
- Roles plug-in
- Password policy component
- Replication plug-ins
- Referential Integrity plug-in
- In the Directory Server Console, select the Configuration tab.
- Expand Data in the left pane, and click Database Link Settings.
- Select the Settings tab in the right window.

- Click the button in the Components allowed to chain section.
- Select the component to chain from the list, and click .

- Restart the server in order for the change to take effect.
aci: (targetattr "*")(target="ldap:///ou=customers,l=us,dc=example,dc=com")
(version 3.0; acl "RefInt Access for chaining"; allow
(read,write,search,compare) userdn = "ldap:///cn=referential integrity
postoperation,cn=plugins,cn=config";)- Specify components to include in chaining using the
nsActiveChainingComponentsattribute in thecn=config,cn=chaining database,cn=plugins,cn=configentry of the configuration file.For example, to allow the referential integrity component to chain operations, add the following to the database link configuration file:nsActiveChainingComponents: cn=referential integrity postoperation,cn=components,cn=config
See Table 2.3, “Components Allowed to Chain” for a list of the components which can be chained. - Restart the server for the change to take effect.
service dirsrv restart
instance - Create an ACI in the suffix on the remote server to which the operation will be chained. For example, this creates an ACI for the Referential Integrity plug-in:
aci: (targetattr "*")(target="ldap:///ou=customers,l=us,dc=example,dc=com") (version 3.0; acl "RefInt Access for chaining"; allow (read,write,search,compare) userdn = "ldap:///cn=referential integrity postoperation,cn=plugins,cn=config";)
- Virtual List View (VLV). This control provides lists of parts of entries rather than returning all entry information.
- Server-side sorting. This control sorts entries according to their attribute values, usually using a specific matching rule.
- Simple paged results. This control breaks entry results into smaller pages, where the user specifies the page size. This is similar to VLV indexes for results, only without maintaining an index.
- Dereferencing. This control tracks back over references in entry attributes in a search and pulls specified attribute information from the referenced entry and returns it with the rest of the search results.
- Managed DSA. This controls returns smart referrals as entries, rather than following the referral, so the smart referral itself can be changed or deleted.
- Loop detection. This control keeps track of the number of times the server chains with another server. When the count reaches the configured number, a loop is detected, and the client application is notified. For more information about using this control, see Section 2.4.4, “Detecting Loops”.
NOTE
- In the Directory Server Console, select the Configuration tab.
- Expand the Data folder in the left pane, and click Database Link Settings.
- Select the Settings tab in the right window.

- Click the button in the LDAP Controls forwarded by the database link section to add an LDAP control to the list.
- Select the OID of a control to add to the list, and click .

nsTransmittedControls attribute of the cn=config,cn=chaining database,cn=plugins,cn=config entry. For example, to forward the virtual list view control, add the following to the database link entry in the configuration file:
nsTransmittedControls: 2.16.840.1.113730.3.4.9
nsTransmittedControls attribute.
Table 2.4. LDAP Controls and Their OIDs
| Control Name | OID |
|---|---|
| Virtual list view (VLV) | 2.16.840.1.113730.3.4.9 |
| Server-side sorting | 1.2.840.113556.1.4.473 |
| Simple paged results | 1.2.840.113556.1.4.319 |
| Managed DSA | 2.16.840.1.113730.3.4.2 |
| Loop detection | 1.3.6.1.4.1.1466.29539.12 |
| Dereferencing searches | 1.3.6.1.4.1.4203.666.5.16 |
- In the Directory Server Console, select the Configuration tab.
- In the left pane, expand the Data folder, and select the database link under the suffix.
- In the right navigation pane, click the Authentication tab.

- Change the connection information.
- The LDAP URL for the remote server.[2]
- The bind DN and password used by the database link to bind to the remote server.
- Select the Configuration tab.
- Expand the Data folder in the left pane, and click Database Link Settings. Open the Default Creation Parameters tab.

- Fill in the new configuration parameters.

NOTE
- In the Directory Server Console, select the Configuration tab.
- Under Data in the left navigation pane, open the suffix and select the database link to delete.
- Right-click the database link, and select Delete from the menu.

- Not all types of access control can be used.For example, role-based or filter-based ACIs need access to the user entry. Because the data are accessed through database links, only the data in the proxy control can be verified. Consider designing the directory in a way that ensures the user entry is located in the same database as the user's data.
- All access controls based on the IP address or DNS domain of the client may not work since the original domain of the client is lost during chaining. The remote server views the client application as being at the same IP address and in the same DNS domain as the database link.
- ACIs must be located with any groups they use. If the groups are dynamic, all users in the group must be located with the ACI and the group. If the group is static, it may refer to remote users.
- ACIs must be located with any role definitions they use and with any users intended to have those roles.
- ACIs that refer to values of a user's entry (for example,
userattrsubject rules) will work if the user is remote.
- During access control evaluation, contents of user entries are not necessarily available (for example, if the access control is evaluated on the server containing the database link and the entry is located on a remote server).For performance reasons, clients cannot do remote inquiries and evaluate access controls.
- The database link does not necessarily have access to the entries being modified by the client application.When performing a modify operation, the database link does not have access to the full entry stored on the remote server. If performing a delete operation, the database link is only aware of the entry's DN. If an access control specifies a particular attribute, then a delete operation will fail when being conducted through a database link.
NOTE
nsCheckLocalACI attribute in the cn=database_link, cn=chaining database,cn=plugins,cn=config entry. However, evaluating access controls on the server containing the database link is not recommended except with cascading chaining.


dc=example,dc=comand the ou=people and ou=groups sub suffixes are stored on Server A. The l=europe,dc=example,dc=com and ou=groups suffixes are stored in on Server B, and the ou=people branch of the l=europe,dc=example,dc=com suffix is stored on Server C.
ou=people,l=europe,dc=example,dc=com entry would be routed by the directory as follows:

ou=people,l=europe,dc=example,dc=com branch. Because at least two hops are required for the directory to service the client request, this is considered a cascading chain.
- Select the Configuration tab. Expand the Data folder in the left pane, and select the suffix, then the database link.

- Click the Limits and Controls tab in the right navigation pane.
- Select the Check local ACI checkbox to enable the evaluation of local ACIs on the intermediate database links involved in the cascading chain. Selecting this checkbox may require adding the appropriate local ACIs to the database link.

- Enter the maximum number of times a database link can point to another database link in the Maximum hops field.By default, the maximum is ten hops. After ten hops, a loop is detected by the server, and an error is returned to the client application.
- Point one database link to the URL of the server containing the intermediate database link.To create a cascading chain, the
nsFarmServerURLattribute of one database link must contain the URL of the server containing another database link. Suppose the database link on the server calledexample1.compoints to a database link on the server calledafrica.example.com. For example, thecn=database_link,cn=chaining database,cn=plugins,cn=configentry of the database link on Server 1 would contain the following:nsFarmServerURL: ldap://africa.example.com:389/
- Configure the intermediate database link or links (in the example, Server 2) to transmit the Proxy Authorization Control.By default, a database link does not transmit the Proxy Authorization Control. However, when one database link contacts another, this control is used to transmit information needed by the final destination server. The intermediate database link needs to transmit this control. To configure the database link to transmit the proxy authorization control, add the following to the
cn=config,cn=chaining database,cn=plugins,cn=configentry of the intermediate database link:nsTransmittedControls: 2.16.840.1.113730.3.4.12
The OID value represents the Proxy Authorization Control. For more information about chaining LDAP controls, see Section 2.3.2.2, “Chaining LDAP Controls”. - Create a proxy administrative user ACI on all intermediate database links.The ACI must exist on the server that contains the intermediate database link that checks the rights of the first database link before translating the request to another server. For example, if Server 2 does not check the credentials of Server 1, then anyone could bind as
anonymousand pass a proxy authorization control allowing them more administrative privileges than appropriate. The proxy ACI prevents this security breach.- Create a database, if one does not already exist, on the server containing the intermediate database link. This database will contain the admin user entry and the ACI. For information about creating a database, see Section 2.2.1, “Creating Databases”.
- Create an entry that corresponds to the administrative user in the database.
- Create an ACI for the administrative user that targets the appropriate suffix. This ensures the administrator has access only to the suffix of the database link. For example:
aci: (targetattr = "*")(version 3.0; acl "Proxied authorization for database links"; allow (proxy) userdn = "ldap:///cn=proxy admin,cn=config";)This ACI is like the ACI created on the remote server when configuring simple chaining.
WARNING
Carefully examine access controls when enabling chaining to avoid giving access to restricted areas of the directory. For example, if a default proxy ACI is created on a branch, the users that connect through the database link will be able to see all entries below the branch. There may be cases when not all of the subtrees should be viewed by a user. To avoid a security hole, create an additional ACI to restrict access to the subtree. - Enable local ACI evaluation on all intermediate database links.To confirm that the proxy administrative ACI is used, enable evaluation of local ACIs on all intermediate database links involved in chaining. Add the following attribute to the
cn=database_link,cn=chaining database,cn=plugins,cn=configentry of each intermediate database link:nsCheckLocalACI: on
Setting this attribute toonin thecn=default instance config,cn=chaining database,cn=plugins,cn=configentry means that all new database link instances will have thensCheckLocalACIattribute set toonin theircn=database_link,cn=chaining database,cn=plugins,cn=configentry. - Create client ACIs on all intermediate database links and the final destination database.Because local ACI evaluation is enabled, the appropriate client application ACIs must be created on all intermediate database links, as well as the final destination database. To do this on the intermediate database links, first create a database that contains a suffix that represents a root suffix of the final destination suffix.For example, if a client request made to the
c=africa,ou=people,dc=example,dc=comsuffix is chained to a remote server, all intermediate database links need to contain a database associated with thedc=example,dc=comsuffix.Add any client ACIs to this superior suffix entry. For example:aci: (targetattr = "*")(version 3.0; acl "Client authentication for database link users"; allow (all) userdn = "ldap:///uid=* ,cn=config";)This ACI allows client applications that have auidin thecn=configentry of Server 1 to perform any type of operation on the data below theou=people,dc=example,dc=comsuffix on server three.
0, it determines that a loop has been detected and notifies the client application.
nsHopLimit attribute. If not specified, the default value is 10.
nsTransmittedControl attribute in the cn=config,cn=chaining database,cn=plugins,cn=config entry:
nsTransmittedControl: 1.3.6.1.4.1.1466.29539.12
Table 2.5. Cascading Chaining Configuration Attributes
| Attribute | Description |
|---|---|
| nsFarmServerURL | URL of the server containing the next database link in the cascading chain. |
| nsTransmittedControls |
Enter the following OIDs to the database links involved in the cascading chain:
nsTransmittedControls: 2.16.840.1.113730.3.4.12 nsTransmittedControls: 1.3.6.1.4.1.1466.29539.12The first OID corresponds to the Proxy Authorization Control. The second OID corresponds to the Loop Detection Control. |
| aci |
This attribute must contain the following ACI:
aci: (targetattr = "*")(version 3.0; acl "Proxied
authorization for database links";
allow (proxy) userdn = "ldap:///cn=proxy admin,cn=config";)
|
| nsCheckLocalACI |
To enable evaluation of local ACIs on all database links involved in chaining, turn local ACI evaluation on, as follows:
nsCheckLocalACI: on |

- Run
ldapmodify[2]:/usr/lib64/mozldap/ldapmodify
-a-D "cn=directory manager" -w secret -p 389 -h server.example.com - Then specify the configuration information for the database link, DBLink1, on Server 1, as follows:
dn: cn=DBLink1,cn=chaining database,cn=plugins,cn=config objectclass: top objectclass: extensibleObject objectclass: nsBackendInstance nsslapd-suffix: c=africa,ou=people,dc=example,dc=com nsfarmserverurl: ldap://africa.example.com:389/ nsmultiplexorbinddn: cn=server1 proxy admin,cn=config nsmultiplexorcredentials: secret cn: DBLink1 nsCheckLocalACI:off dn: cn=c=africa\,ou=people\,dc=example\,dc=com,cn=mapping tree,cn=config objectclass: nsMappingTree nsslapd-state: backend nsslapd-backend: DBLink1 nsslapd-parent-suffix: ou=people,dc=example,dc=com cn: c=africa\,ou=people\,dc=example\,dc=com
The first section creates the entry associated withDBLink1. The second section creates a new suffix, allowing the server to direct requests made to the database link to the correct server. ThensCheckLocalACIattribute does not need to be configured to check local ACIs, as this is only required on the database link,DBLink2, on Server 2. - To implement loop detection, to specify the OID of the loop detection control in the
nsTransmittedControlattribute stored incn=config,cn=chaining database,cn=plugins,cn=configentry on Server 1.dn: cn=config,cn=chaining database,cn=plugins,cn=config changetype: modify add: nsTransmittedControl nsTransmittedControl: 1.3.6.1.4.1.1466.29539.12
As thensTransmittedControlattribute is usually configured by default with the loop detection control OID1.3.6.1.4.1.1466.29539.12value, it is wise to check beforehand whether it already exists. If it does exist, this step is not necessary.
- Create a proxy administrative user on Server 2. This administrative user will be used to allow Server 1 to bind and authenticate to Server 2. It is useful to choose a proxy administrative user name which is specific to Server 1, as it is the proxy administrative user which will allow server one to bind to Server 2. Create the proxy administrative user, as follows:
dn: cn=server1 proxy admin,cn=config objectclass: person objectclass: organizationalPerson objectclass: inetOrgPerson cn: server1 proxy admin sn: server1 proxy admin userPassword: secret description: Entry for use by database links
WARNING
Do not use the Directory Manager or Administrator ID user as the proxy administrative user on the remote server. This creates a security hole. - Configure the database link,
DBLink2, on Server 2, usingldapmodify:dn: cn=DBLink2,cn=chaining database,cn=plugins,cn=config objectclass: top objectclass: extensibleObject objectclass: nsBackendInstance nsslapd-suffix: l=Zanzibar,c=africa,ou=people,dc=example,dc=com nsfarmserverurl: ldap://zanz.africa.example.com:389/ nsmultiplexorbinddn: cn=server2 proxy admin,cn=config nsmultiplexorcredentials: secret cn: DBLink2 nsCheckLocalACI:on dn: cn=l=Zanzibar\,c=africa\,ou=people\,dc=example\,dc=com,cn=mapping tree,cn=config objectclass: top objectclass: extensibleObject objectclass: nsMappingTree nsslapd-state: backend nsslapd-backend: DBLink2 nsslapd-parent-suffix: c=africa,ou=people,dc=example,dc=com cn: l=Zanzibar\,c=africa\,ou=people\,dc=example\,dc=com
Since database link DBLink2 is the intermediate database link in the cascading chaining configuration, set thensCheckLocalACIattribute toonto allow the server to check whether it should allow the client and proxy administrative user access to the database link. - The database link on Server 2 must be configured to transmit the proxy authorization control and the loop detection control. To implement the proxy authorization control and the loop detection control, specify both corresponding OIDs. Add the following information to the
cn=config,cn=chaining database,cn=plugins,cn=configentry on Server 2:dn: cn=config,cn=chaining database,cn=plugins,cn=config changetype: modify add: nsTransmittedControl nsTransmittedControl: 2.16.840.1.113730.3.4.12 nsTransmittedControl: 1.3.6.1.4.1.1466.29539.12
nsTransmittedControl: 2.16.840.1.113730.3.4.12is the OID for the proxy authorization control.nsTransmittedControl: 1.3.6.1.4.1.1466.29539.12is the or the loop detection control.Check beforehand whether the loop detection control is already configured, and adapt the above command accordingly. - Configure the ACIs. On Server 2, ensure that a suffix exists above the
l=Zanzibar,c=africa,ou=people,dc=example,dc=comsuffix, so that the following actions are possible:- Add the database link suffix
- Add a local proxy authorization ACI to allow Server 1 to connect using the proxy authorization administrative user created on Server 2
- Add a local client ACI so the client operation succeeds on Server 2, and it can be forwarded to server three. This local ACI is needed because local ACI checking is turned on for the
DBLink2database link.
Both ACIs will be placed on the database that contains thec=africa,ou=people,dc=example,dc=comsuffix.NOTE
To create these ACIs, the database corresponding to thec=africa,ou=people,dc=example,dc=comsuffix must already exist to hold the entry. This database needs to be associated with a suffix above the suffix specified in thensslapd-suffixattribute of each database link. That is, the suffix on the final destination server should be a sub suffix of the suffix specified on the intermediate server.- Add the local proxy authorization ACI to the
c=africa,ou=people,dc=example,dc=comentry:aci:(targetattr="*")(target="l=Zanzibar,c=africa,ou=people,dc=example,dc=com") (version 3.0; acl "Proxied authorization for database links"; allow (proxy) userdn = "ldap:///cn=server1 proxy admin,cn=config";) - Then add the local client ACI that will allow the client operation to succeed on Server 2, given that ACI checking is turned on. This ACI is the same as the ACI created on the destination server to provide access to the
l=Zanzibar,c=africa,ou=people,dc=example,dc=combranch. All users withinc=us,ou=people,dc=example,dc=commay need to have update access to the entries inl=Zanzibar,c=africa,ou=people,dc=example,dc=comon server three. Create the following ACI on Server 2 on thec=africa,ou=people,dc=example,dc=comsuffix to allow this:aci:(targetattr="*")(target="l=Zanzibar,c=africa,ou=people,dc=example,dc=com") (version 3.0; acl "Client authorization for database links"; allow (all) userdn = "ldap:///uid=*,c=us,ou=people,dc=example,dc=com";)This ACI allows clients that have a UID inc=us,ou=people,dc=example,dc=comon Server 1 to perform any type of operation on thel=Zanzibar,c=africa,ou=people,dc=example,dc=comsuffix tree on server three. If there are users on Server 2 under a different suffix that will require additional rights on server three, it may be necessary to add additional client ACIs on Server 2.
- Create an administrative user on server three for Server 2 to use for proxy authorization:
dn: cn=server2 proxy admin,cn=config objectclass: person objectclass: organizationalPerson objectclass: inetOrgPerson cn: server2 proxy admin sn: server2 proxy admin userPassword: secret description: Entry for use by database links
- Then add the same local proxy authorization ACI to server three as on Server 2. Add the following proxy authorization ACI to the
l=Zanzibar,ou=people,dc=example,dc=comentry:aci: (targetattr = "*")(version 3.0; acl "Proxied authorization for database links"; allow (proxy) userdn = "ldap:///cn=server2 proxy admin,cn=config";)This ACI gives the Server 2 proxy admin read-only access to the data contained on the remote server, server three, within thel=Zanzibar,ou=people,dc=example,dc=comsubtree only. - Create a local client ACI on the
l=Zanzibar,ou=people,dc=example,dc=comsubtree that corresponds to the original client application. Use the same ACI as the one created for the client on Server 2:aci: (targetattr ="*")(target="l=Zanzibar,c=africa,ou=people,dc=example,dc=com") (version 3.0; acl "Client authentication for database link users"; allow (all) userdn = "ldap:///uid=*,c=us,ou=people,dc=example,dc=com";)
l=Zanzibar,c=africa,ou=people,dc=example,dc=com branch on server three. Depending on your security needs, it may be necessary to provide more detailed access control.
refer command.
nsslapd with the refer option.
/usr/sbin/ns-slapd refer -D /etc/dirsrv/slapd-instance_name[-pport] -rreferral_url
/etc/dirsrv/slapd-is the directory where the Directory Server configuration files are. This is the default location on Red Hat Enterprise Linux 5 (64-bit).instance_name- port is the optional port number of the Directory Server to start in referral mode.
- referral_url is the referral returned to clients. The format of an LDAP URL is covered in Appendix B, LDAP URLs.
- In the Directory Server Console, select the Configuration tab.
- Select the top entry in the navigation tree in the left pane.

- Select the Settings tab in the right pane.
- Enter an LDAP URL for the referral.
Enter multiple referral URLs separated by spaces and in quotes:"ldap://dir1.example.com:389/dc=example,dc=com" "ldap://dir2.example.com/"
For more information about LDAP URLs, see Appendix B, LDAP URLs.
ldapmodify can add a default referral to the cn=config entry in the directory's configuration file. For example, to add a new default referral from one Directory Server, dir1.example.com, to a server named dir2.example.com, add a new line to the cn=config entry.
- Run the
ldapmodifyutility:[2]/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 -h server.example.com
ldapmodifybinds to the server and prepares it to change an entry in the configuration file. - Add the default referral to the
dir2.example.comserver:dn: cn=config changetype: modify replace: nsslapd-referral nsslapd-referral: ldap://dir2.example.com/
cn=config entry of the directory, the directory will return the default referral in response to requests made by client applications. The Directory Server does not need to be restarted.
uid=jdoe,ou=people,dc=example,dc=com. A smart referral is returned to the client that points to the entry cn=john doe,o=people,l=europe,dc=example,dc=com on the server directory.europe.example.com.
- In the Directory Server Console, select the Directory tab.
- Browse through the tree in the left navigation pane, and select the entry for which to add the referral.
- Right-click the entry, and select Set Smart Referrals.

- Select the Enable Smart Referral checkbox. (Unchecking the option removes all smart referrals from the entry and deletes the
referralobject class from the entry.)
- In the Enter a new Smart Referral field, enter a referral in the LDAP URL format, and then click . The LDAP URL must be in the following format:
ldap://
hostname:portnumber/[optional_dn]optional_dn is the explicit DN for the server to return to the requesting client application.
opens a wizard to direct the process of adding a referral.The Smart Referral List lists the referrals currently in place for the selected entry. The entire list of referrals is returned to client applications in response to a request with the Return Referrals for All Operations or Return Referrals for Update Operations options in the Suffix Settings tab, which is available under the Configuration tab.To modify the list, click Edit to edit the selected referral or Delete to delete the selected referral. - To set the referral to use different authentication credentials, click Authentication, and specify the appropriate DN and password. This authentication remains valid only until the Console is closed; then it's reset to the same authentication used to log into the Console.

ldapmodify command-line utility[2] to create smart referrals from the command line.
referral object class. This object class allows a single attribute, ref. The ref attribute must contain an LDAP URL.
uid=jdoe:
dn: uid=jdoe,ou=people,dc=example,dc=com objectclass: referral ref: ldap://directory.europe.example.com/cn=john%20doe,ou=people,l=europe,dc=example,dc=com
NOTE
%20 instead of spaces in any LDAP URL used as a referral.
uid=jdoe,ou=people,dc=example,dc=com with a referral to directory.europe.example.com, include the following in the LDIF file before importing:
dn: uid=jdoe,ou=people,dc=example,dc=com objectclass: top objectclass: person objectclass: organizationalPerson objectclass: inetOrgPerson objectclass: referral cn: john doe sn: doe uid: jdoe ref: ldap://directory.europe.example.com/cn=john%20doe,ou=people,l=europe,dc=example,dc=com
-M option with ldapmodify when there is already a referral in the DN path. For information about the ldapmodify utility, see the Directory Server Configuration and Command-Line Tool Reference.
WARNING
- In the Directory Server Console, select the Configuration tab.
- Under Data in the left pane, select the suffix for which to add a referral.
- Click the Suffix Settings tab, and select the Return Referrals for ... Operations radio button.
Selecting Return Referrals for Update Operations means that the directory redirects only update and write requests to a read-only database. For example, there may be a local copy of directory data, and that data should be available for searches but not for updates, so it's replicated across several servers. Enabling referrals for that Directory Server only for update requests means that when a client asks to update an entry, the client is referred to the server that owns the data, where the modification request can proceed. - Click the Referrals tab. Enter an LDAP URL in the[3] in the Enter a new referral field, or click Construct to create an LDAP URL.

- Click to add the referral to the list.You can enter multiple referrals. The directory returns the entire list of referrals in response to requests from client applications.
cn=mapping tree,cn=config branch.
- Run
ldapmodify.[2] For example:/usr/lib64/mozldap/ldapmodify
-a-D "cn=directory manager" -w secret -p 389 -h server.example.comTheldapmodifyutility binds to the server and prepares it to add information to the configuration file. - Add a suffix referral to the
ou=people,dc=example,dc=comroot suffix, as follows:dn: cn=ou=people,dc=example,dc=com,cn=mapping tree,cn=config objectclass: extensibleObject objectclass: nsMappingTree nsslapd-state: referral nsslapd-referral: ldap://zanzibar.com/
Thensslapd-stateattribute is set toreferral, meaning that a referral is returned for requests made to this suffix. Thensslapd-referralattribute contains the LDAP URL of the referral returned by the suffix, in this case a referral to thezanzibar.comserver.Thensslapd-stateattribute can also be set toreferral on update. This means that the database is used for all operations except update requests. When a client application makes an update request to a suffix set toreferral on update, the client receives a referral.
/usr/lib64/mozldap directory on Red Hat Enterprise Linux 5 (64-bit); directories for other platforms are listed in Section 1.3, “LDAP Tool Locations”. However, Red Hat Enterprise Linux systems also include LDAP tools from OpenLDAP. It is possible to use the OpenLDAP commands as shown in the examples, but you must use the -x argument to disable SASL and allow simple authentication.
ldap://hostname:port/.
ldapmodify and ldapdelete command-line utilities to modify the contents of your directory.
NOTE
- In the Directory Server Console, select the Configuration tab.
- Right-click on the Data entry in the left menu, and select New Root Suffix from the menu.

- Fill in the new suffix and database information.

- In the Directory tab, right-click the top object representing the Directory Server, and choose New Root Object.
The secondary menu under New Root Object displays the new suffixes without a corresponding directory entry. Choose the suffix corresponding to the entry to create. - In the New Object window, select the object class corresponding to the new entry.
The object class must contain the attribute used to name the suffix. For example, if the entry corresponds to the suffixou=people,dc=example,dc=com, then choose theorganizationalUnitobject class or another object class that allows theouattribute. - Click in the New Object window.
Table 3.1. Entry Templates and Corresponding Object Classes
| Template | Object Class |
|---|---|
| User | inetOrgPerson |
| Group | groupOfUniqueNames |
| Organizational Unit | organizationalUnit |
| Role | nsRoleDefinition |
| Class of Service | cosSuperDefinition |
- In the Directory Server Console, select the Directory tab.
- In the left pane, right-click the main entry to add the new entry, and select the type of entry: User, Group, Organizational Unit, Role, Class of Service, or Other.

- If the new entry type was Other, then a list of object classes opens. Select an object class from the list to define the new entry.
- Supply a value for all the listed attributes. Required attributes are marked with an asterisk (
*).
- To display the full list of attributes available for the object class (entry type), click the Advanced button.
In the Property Editor, select any additional attributes, and fill in the attribute values. - Click to save the entry. The new entry is listed in the right pane.


- From the Directory tab, by right-clicking an entry, and selecting Advanced Properties from the pop-up menu.
- From the Directory tab, by double-clicking an entry and clicking the Advanced button
- From the Create... new entry forms, by clicking the Advanced button
- From the New Object window, by clicking
- In the Directory tab of the Directory Server Console, right-click the entry to modify, and select Advanced from the pop-up menu.

- Select the object class field, and click Add Value.
The Add Object Class window opens. It shows a list of object classes that can be added to the entry. - Select the object class to add, and click .

- In the Directory tab of the Directory Server Console, right-click the entry to modify, and select Advanced from the pop-up menu.

- Click Add Attribute.

- Select the attribute to add from the list, and click .

NOTE
If the attribute you want to add is not listed, add the object class containing the attribute first, then add the attribute. See Section 3.1.3.1, “Adding or Removing an Object Class to an Entry” for instructions on adding an object class. If you do not know which object class contains the attribute you need, look up the attribute in the Directory Server Schema Reference, which lists the object classes which use that attribute. - Type in the value for the new attribute in the field to the right of the attribute name.

nsslapd-maxbersize sets the maximum size limit for LDAP requests. The default configuration of Directory Server sets this attribute at 2 megabytes. LDAP add or modify operations will fail when attempting to add very large attributes that result in a request that is larger than 2 megabytes.
nsslapd-maxbersize configuration attribute to a value larger than the largest LDAP request you will make.
- The size of each attribute name in the request
- The size of the values of each of the attributes in the request
- The size of the DN in the request
- Some overhead, usually 10 kilobytes
nsslapd-maxbersize setting is using attributes which hold CRL values, such as certificateRevocationList, authorityRevocationList, and deltaRevocationList.
nsslapd-maxbersize attribute and for information about setting this attribute, see the section "nsslapd-maxbersize (MaximumMessage Size)" in chapter 2, "Core Server Configuration Reference," in Directory Server Configuration and Command-Line Tool Reference.
- In the Directory tab of the Directory Server Console, right-click the entry to modify, and select Advanced from the pop-up menu.

- Select the attribute to which to add a value, and then click Add Value.

- Type in the new attribute value.

- In the Directory tab of the Directory Server Console, right-click the entry to modify, and select Properties from the pop-up menu.
- Click Add Attribute, and select the attribute to add from the list.
- Add a language subtype by selecting a value from the Language drop-down list. Add either a binary or pronunciation subtypeby selecting a value from the Subtype drop-down list.

givenname attribute so that other users can search for her name in Japanese as well as English. For example:
givenname;lang-ja
attribute;lang-subtype:attribute value
cn;lang-ja;lang-en-GB:value
cn;lang-ja:ja-valuecn;lang-en-GB:value
usercertificate;binary).
binary subtype (for example, jpegphoto), the binary subtype indicates to clients that multiple variants of the attribute type may exist.
;phonetic. This subtype is commonly used in combination with a language subtype for languages that have more than one alphabet, where one is a phonetic representation.
cn or givenname. For example, givenname;lang-ja;phonetic indicates that the attribute value is the phonetic version of the user's Japanese name.
NOTE
ldapmodify and ldapdelete [4] utilities directly from the command line, you must use LDIF statements. For detailed information on LDIF statements, see Section 3.3, “Using LDIF Update Statements to Create or Modify Entries”.
ldapmodify and ldapdelete utilities read the statements that you enter in exactly the same way as if they were read from a file. When all of the input has been entered, enter the character that the shell recognizes as the end of file (EOF) escape sequence. The utility then begins operations based on the supplied inputs.
^D).
ldapmodify:
/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 -h server.example.com dn: cn=Barry Nixon,ou=people,dc=example,dc=com changetype: modify delete: telephonenumber - add: manager manager: cn=Harry Cruise,ou=people,dc=example,dc=com ^D
People subtree, create an entry representing that subtree before creating entries within the subtree. For example:
dn: dc=example,dc=com dn: ou=People,dc=example,dc=com ...People subtree entries.... dn: ou=Group,dc=example,dc=com ...Group subtree entries....
ldapmodify command-line utility can be used to create a new root entry in a database. For example:
/usr/lib64/mozldap/ldapmodify -a -D "cn=directory manager" -w secret -p 389 -h server.example.comldapmodify utility binds to the server and prepares it to add an entry. The new root object can then be added, as follows:
dn:Suffix_Nameobjectclass:newobjectclass
NOTE
ldapmodify to add root objects only if you have one database per suffix. If you create a suffix that is stored in several databases, you must use the ldif2db utility with the -noption parameter to specify the database that will hold the new entries. For information, see Section 4.1.4, “Importing from the Command Line”.
- Define the entries in an LDIF file.LDIF files are described in Appendix A, LDAP Data Interchange Format.
- Import the LDIF file from the Directory Server Console.See Section 4.1.2, “Importing a Database from the Console” for information about LDIF file formats. When you import the LDIF file, select Append to database in the Import dialog box so that the server will only import entries that do not currently exist in the directory.
ldapmodify command with the -f option.
ldapmodify[4] command can add and modify entries in an existing Directory Server database. The ldapmodify command opens a connection to the specified server using the supplied distinguished name and password and modifies the entries based on LDIF update statements contained in a specified file. Because ldapmodify uses LDIF update statements, ldapmodify can do everything that ldapdelete can do.
ldapmodify:
- If the server detects an attribute or object class in the entry that is not known to the server, then the modify operation will fail when it reaches the erroneous entry. All entries that were processed before the error was encountered will be successfully added or modified. If you run
ldapmodifywith the-coption (do not stop on errors), all correct entries processed after the erroneous entry will be successfully added or modified. - If a required attribute is not present, the modify operation fails. This happens even if the offending object class or attribute is not being modified.
NOTE
dc=example,dc=com) using ldapmodify, you must bind to the directory as the Directory Manager.
ldapmodify, specify the DN and password to bind to the Directory Server, the port and host of the Directory Server, and the LDIF file to use. For example:
/usr/lib64/mozldap/ldapmodify -a -D "cn=directory manager" -w secret -p 389 -h server.example.com -f new.ldifldapmodify example has the following values:
- The entries to be created are specified in the file
new.ldif. (In this example, the LDIF statements in thenew.ldiffile do not specify a change type. They follow the format defined in Section A.1, “About the LDIF File Format”.) - The Directory Manager is a database administrator who has the authority to modify the entries, and its password is
secret. - The hostname is
example.com. - The server uses port number
389.
ldapmodify parameters used in the example.
Table 3.2. ldapmodify Parameters Used for Adding Entries
| Parameter Name | Description |
|---|---|
| -a | Specifies that the modify operation will add new entries to the directory. |
| -D | Specifies the distinguished name with which to authenticate to the server. The value must be a DN recognized by the Directory Server, and it must also have the authority to modify the entries. |
| -w |
Specifies the password associated with the distinguished name specified in the -D parameter.
|
| -h | Specifies the name of the host on which the server is running. |
| -p | Specifies the port number that the server uses. |
| -f |
Optional parameter that specifies the file containing the LDIF update statements used to define the modifications. If you do not supply this parameter, the update statements are read from stdin. For information on supplying LDIF update statements from the command line, see Section 3.2.1, “Providing Input from the Command Line”.
|
ldapmodify parameters, see the Directory Server Configuration and Command-Line Tool Reference.
ldapmodify, specify the DN and password to bind to the Directory Server, the port and host of the Directory Server, and the LDIF file to use, as when adding entries with ldapmodify. For example:
/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 -h server.example.com -f modify_statements
ldapmodify example has the following values:
- The entries to modify are specified in the file
modify_statements. Before the entries can be modified, you must first create themodify_statementsfile with the appropriate LDIF update statements; LDIF update statements are described in Section 3.3, “Using LDIF Update Statements to Create or Modify Entries”. - The bind DN is
cn=Directory Manager, which has permissions to edit any entry in the database, and the password issecret. - The hostname is
example.com. - The server uses port number
389.
ldapmodify parameters used in the example.
Table 3.3. ldapmodify Parameters Used for Modifying Entries
| Parameter Name | Description |
|---|---|
| -D | Specifies the distinguished name with which to authenticate to the server. The value must be a DN recognized by the Directory Server, and it must also have the authority to modify the entries. |
| -w |
Specifies the password associated with the distinguished name specified in the -D parameter.
|
| -h | Specifies the name of the host on which the server is running. |
| -p | Specifies the port number that the server uses. |
| -f |
Optional parameter that specifies the file containing the LDIF update statements used to define the modifications. If you do not supply this parameter, the update statements are read from stdin. For information on supplying LDIF update statements from the command line, see Section 3.2.1, “Providing Input from the Command Line”.
|
ldapmodify parameters, see the Directory Server Configuration and Command-Line Tool Reference.
ldapdelete command-line utility opens a connection to the specified server using the provided distinguished name and password and deletes the specified entry or entries.
NOTE
ou=People,dc=example,dc=com cn=Paula Simon,ou=People,dc=example,dc=com cn=Jerry O'Connor,ou=People,dc=example,dc=com
People subtree can be deleted only if there are not any entries below it. To delete ou=People,dc=example,dc=com, you must first delete Paula Simon and Jerry O'Connor's entries and all other entries in that subtree.
ldapmodify, running ldapdelete requires the DN and password to bind to the Directory Server, the port and host of the Directory Server, and the DNs of the entries to delete. For example:
ldapdelete -D "cn=Directory Manager" -w secret -h example.com -p 389 "cn=Robert
Jenkins,ou=People,dc=example,dc=com" "cn=Lisa
Jangles,ou=People,dc=example,dc=com"ldapdelete example has the following values:
- The entries to delete have the DNs
cn=Robert Jenkins,ou=People,dc=example,dc=comandcn=Lisa Jangles,ou=People,dc=example,dc=com. - The bind DN is the Directory Manager, which has permission to delete every entry in the database, and a password of
secret. - The hostname is
example.com. - The server uses port number
389.
ldapdelete parameters used in the example:
Table 3.4. ldapdelete Parameters Used for Deleting Entries
| Parameter Name | Description |
|---|---|
| -D | Specifies the distinguished name with which to authenticate to the server. The value must be a DN recognized by the Directory Server, and it must also have the authority to modify the entries. |
| -w |
Specifies the password associated with the distinguished name specified in the -D parameter.
|
| -h | Specifies the name of the host on which the server is running. |
| -p | Specifies the port number that the server uses. |
ldapdelete parameters, see the Directory Server Configuration and Command-Line Tool Reference.
*), or backslash (\). When this situation occurs, enclose the value in quotation marks (""). For example:
-D "cn=Barbara Jensen,ou=Product Development,dc=example,dc=com"
\). For example:
-D "cn=Patricia Fuentes,ou=people,o=example.com Bolivia\,S.A."
example.com Bolivia, S.A. tree, use the following command:
ldapdelete -D "cn=Directory Manager" -w secret -h example.com -p 389 "cn=Patricia Fuentes,ou=People,o=example.com Bolivia\,S.A."
ldapmodify changes the directory entry. In general, LDIF update statements contain the following information:
ldapmodify is run with the -a parameter. If you specify the -a parameter, then an add operation (changetype: add) is assumed. However, any other change type overrides the -a parameter.
changetype: modify), a change operation is required that indicates how the entry should be changed.
changetype: modrdn, change operations are required that specify how the relative distinguished name (RDN) is to be modified. A distinguished name's RDN is the left-most value in the DN. For example, the distinguished name uid=ssarette,dc=example,dc=com has an RDN of uid=ssarette.
dn:distinguished_namechangetype:changetype_identifierchange_operation_identifier: list_of_attributeschange_operation_identifier: list_of_attributes
dn: cn=Lisa Jangles,ou=People,dc=example,dc=com changetype: modify add: telephonenumber telephonenumber: (408) 555-2468 - add: manager manager: cn=Harry Cruise,ou=People,dc=example,dc=com
dn: cn=Lisa Jangles,ou=People,dc=example,dc=com dn: cn=Lisa Jangles, ou=People, dc=example,dc=com
changetype: add adds an entry to the directory. When you add an entry, make sure to create an entry representing a branch point before you try to create new entries under that branch. That is, to place an entry in a People and a Groups subtree, then create the branch point for those subtrees before creating entries within the subtrees. For example:
dn: dc=example,dc=com changetype: add objectclass: top objectclass: organization o: example.com dn: ou=People,dc=example,dc=com changetype: add objectclass: top objectclass: organizationalUnit ou: People ou: Marketing dn: cn=Pete Minsky,ou=People,dc=example,dc=com changetype: add objectclass: top objectclass: person objectclass: organizationalPerson objectclass: inetOrgPerson cn: Pete Minsky givenName: Pete sn: Minsky ou: People ou: Marketing uid: pminsky dn: cn=Sue Jacobs,ou=People,dc=example,dc=com changetype: add objectclass: top objectclass: person objectclass: organizationalPerson objectclass: inetOrgPerson cn: Sue Jacobs givenName: Sue sn: Jacobs ou: People ou: Marketing uid: sjacobs dn: ou=Groups,dc=example,dc=com changetype: add objectclass: top objectclass: organizationalUnit ou: Groups dn: cn=Administrators,ou=Groups,dc=example,dc=com changetype: add objectclass: top objectclass: groupOfNames member: cn=Sue Jacobs,ou=People,dc=example,dc=com member: cn=Pete Minsky,ou=People,dc=example,dc=com cn: Administrators dn: ou=example.com Bolivia\, S.A.,dc=example,dc=com changetype: add objectclass: top objectclass: organizationalUnit ou: example.com Bolivia\, S.A. dn: cn=Carla Flores,ou=example.com Bolivia\,S.A.,dc=example,dc=com changetype: add objectclass: top objectclass: person objectclass: organizationalPerson objectclass: inetOrgPerson cn: Carla Flores givenName: Carla sn: Flores ou: example.com Bolivia\, S.A. uid: cflores
changetype: modrdn changes an entry's relative distinguished name (RDN). An entry's RDN is the left-most element in the distinguished name. The RDN for cn=Barry Nixon,ou=People,dc=example,dc=com is cn=Barry Nixon, and the RDN for ou=People,dc=example,dc=com is ou=People. A changetype: modrdn operation changes that left-most value in an entry's DN.
modrdn change type only changes the RDN; it cannot change other parts of a DN. For example, the entry cn=Sue Jacobs,ou=People,dc=example,dc=com can be changed to cn=Susan Jacobs,ou=People,dc=example,dc=com, but it cannot be modified to be cn=Sue Jacobs,ou=old employees,dc=example,dc=com.
dn: cn=Sue Jacobs,ou=Marketing,dc=example,dc=com changetype: modrdn newrdn: cn=Susan Jacobs deleteoldrdn: 0
deleteoldrdn is 0, this example retains the existing RDN as a value in the new entry. The resulting entry would therefore have a common name (cn) attribute set to both Sue Jacobs and Susan Jacobs, in addition to all the other attributes included in the original entry. However, using the following command causes the server to delete cn=Sue Jacobs, so that only cn=Susan Jacobs remains in the entry:
dn: cn=Sue Jacobs,ou=Marketing,dc=example,dc=com changetype: modrdn newrdn: cn=Susan Jacobs deleteoldrdn: 1
modrdn change type cannot move an entry to a completely different subtree. To move an entry to a completely different branch, you must create a new entry in the alternative subtree using the old entry's attributes, and then delete the old entry.
ou=People,dc=example,dc=com cn=Paula Simon,ou=People,dc=example,dc=com cn=Jerry O'Connor,ou=People,dc=example,dc=com
People subtree can be renamed only if no other entries exist below it.
changetype: modify can add, replace, or remove attributes or attribute values in an entry. When you specify changetype: modify, you must also provide a change operation to indicate how the entry is to be modified. Change operations can be as follows:
add:attributeAdds the specified attribute or attribute value. If the attribute type does not currently exist for the entry, then the attribute and its corresponding value are created. If the attribute type already exists for the entry, then the specified attribute value is added to the existing value. If the particular attribute value already exists for the entry, then the operation fails, and the server returns an error.replace:attributeThe specified values are used to entirely replace the attribute's values. If the attribute does not already exist, it is created. If no replacement value is specified for the attribute, the attribute is deleted.delete:attributeThe specified attribute is deleted. If more than one value of an attribute exists for the entry, then all values of the attribute are deleted in the entry. To delete just one of many attribute values, specify the attribute and associated value on the line following the delete change operation.
changetype: modify with the add operation cam add an attribute and an attribute value to an entry. For example, the following LDIF update statement adds a telephone number to the entry:
dn: cn=Barney Fife,ou=People,dc=example,dc=com changetype: modify add: telephonenumber telephonenumber: 555-1212
dn: cn=Barney Fife,ou=People,dc=example,dc=com changetype: modify add: telephonenumber telephonenumber: 555-1212 telephonenumber: 555-6789
telephonenumber attributes and a manager attribute to the entry:
dn: cn=Barney Fife,ou=People,dc=example,dc=com changetype: modify add: telephonenumber telephonenumber: 555-1212 telephonenumber: 555-6789 - add: manager manager: cn=Sally Nixon,ou=People,dc=example,dc=com
jpeg photograph to the directory. In order to add this attribute to the directory, use the -b parameter, which indicates that ldapmodify should read the referenced file for binary values if the attribute value begins with a slash:
dn: cn=Barney Fife,ou=People,dc=example,dc=com changetype: modify add: jpegphoto jpegphoto: /path/to/photo
jpeg photograph to the directory using the following standard LDIF notation:
jpegphoto: < file:/path/to/photo
-b parameter does not need to be used withldapmodify. However, you must add version:1 to the beginning of the LDIF file or with LDIF update statements. For example:
/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 -h server.example.com version: 1 dn: cn=Barney Fife,ou=People,dc=example,dc=com changetype: modify add: userCertificate userCertificate;binary:< file: BarneysCert
NOTE
ldapmodify command, not with other command-line utilities.
changetype: modify with the replace operation changes all values of an attribute in an entry. For example, the following LDIF update statement changes Barney's manager from Sally Nixon to Wally Hensford:
dn: cn=Barney Fife,ou=People,dc=example,dc=com changetype: modify replace: manager manager: cn=Wally Hensford,ou=People,dc=example,dc=com
cn=Barney Fife,ou=People,dc=example,dc=com objectClass: inetOrgPerson cn: Barney Fife sn: Fife telephonenumber: 555-1212 telephonenumber: 555-6789
555-1212 to 555-4321, use the following LDIF update statement:
dn: cn=Barney Fife,ou=People,dc=example,dc=com changetype: modify delete: telephonenumber telephonenumber: 555-1212 - add: telephonenumber telephonenumber: 555-4321
cn=Barney Fife,ou=People,dc=example,dc=com objectClass: inetOrgPerson cn: Barney Fife sn: Fife telephonenumber: 555-6789 telephonenumber: 555-4321
changetype: modify with the delete operation deletes an attribute from an entry. If the entry has more than one instance of the attribute, you must indicate which of the attributes to delete.
telephonenumber attribute from the entry, regardless of how many times it appears in the entry:
dn: cn=Barney Fife,ou=People,dc=example,dc=com changetype: modify delete: telephonenumber
telephonenumber attribute, simply delete that specific attribute value, as described in the next section.
changetype: modify with the delete operation can delete a single value for an attribute value from an entry, as well as deleting all instances of the attribute. For example, consider the following entry:
cn=Barney Fife,ou=People,dc=example,dc=com objectClass: inetOrgPerson cn: Barney Fife sn: Fife telephonenumber: 555-1212 telephonenumber: 555-6789
555-1212 telephone number from this entry, use the following LDIF update statement:
dn: cn=Barney Fife,ou=People,dc=example,dc=com changetype: modify delete: telephonenumber telephonenumber: 555-1212
cn=Barney Fife,ou=People,dc=example,dc=com objectClass: inetOrgPerson cn: Barney Fife sn: Fife telephonenumber: 555-6789
changetype: delete is the change type which deletes an entire entry from the directory.
NOTE
ou=People,dc=example,dc=com cn=Paula Simon,ou=People,dc=example,dc=com cn=Jerry O'Connor,ou=People,dc=example,dc=com
People subtree can be deleted only if no other entries exist below it.
dn: cn=Pete Minsky,ou=People,dc=example,dc=com changetype: delete dn: cn=Sue Jacobs,ou=People,dc=example,dc=com changetype: delete
WARNING
o=NetscapeRoot. The Admin Server uses this suffix to store information about installed Directory Servers. Deleting this suffix could force you to reinstall the Directory Server.
ldapmodify command-line utility to modify an attribute that has an associated language tag, you must match the value and language tag exactly or the modify operation will fail.
lang-fr, include lang-fr in the modify operation, as follows:
dn: bjensen,dc=example,dc=com changetype: modify replace: homePostalAddress;lang-fr homePostalAddress;lang-fr: 34 rue de Seine
- Using change sequence numbers to track changes to the database. This is similar to change sequence numbers used to in replication and synchronization. Every normal directory operation triggers a sequence number.
- Assigning creation and modification information. These attributes record the names of the user who created and most recently modified an entry, as well as the timestamps of when it was created and modified.
NOTE
ldapsearch. For details on running a search for operational attributes, see Section 8.4.7, “Searching for Operational Attributes”.
NOTE
entryUSN attribute. The root DSE contains another attribute which contains the most recent USN assigned to any entry in the database, in the lastusn attribute.
Example 3.1. Example Entry USN
dn: uid=jsmith,ou=People,dc=example,dc=com
mail: jsmith@example.com
uid: jsmith
givenName: John
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetorgperson
sn: Smith
cn: John Smith
userPassword: {SSHA}EfhKCI4iKl/ipZMsWlITQatz7v2lUnptxwZ/pw==
entryusn: 1122entryUSN to increment.
entryUSN attribute is replicated, the consumer has the same entryUSNs as the supplier. There is no conflict, because the consumer server must be read-only, so there is no point in having a local entry USN counter. When the consumer is initialized, it is initialized with all of the entry USN numbers from the supplier (unless entryUSN is excluded using fractional replication) and continues from there.
entryUSN attribute using fractional replication (see Section 9.1.7, “Replicating a Subset of Attributes with Fractional Replication”), so that all entryUSN numbers are local. When the entryUSN attribute is excluded in the replication agreement, then when the consumers are initialized, they have entryUSNs that start at zero (0) locally instead of using the supplier's entryUSNs.
/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 dn: cn=USN,cn=plugins,cn=config changetype: modify replace: nsslapd-pluginEnabled nsslapd-pluginEnabled: on
usn-tombstone-cleanup.pl command deletes USN tombstone entries for a specific database backend or specific suffix. Optionally, it can delete all of tombstone entries up to a certain USN. For example:
/usr/lib64/dirsrv/instance_name/usn-tombstone-cleanup.pl -D "cn=directory manager" -w secret -s "ou=people,dc=example,dc=com" -m 1100-n option or the suffix, using the -s option. If both are given, then the suffix in the -s option is used.
usn-tombstone-cleanup.pl command are listed in Table 3.5, “usn-tombstone-cleanup.pl Options”. More details for this tool are in the Configuration and Command-Line Tool Reference.
Table 3.5. usn-tombstone-cleanup.pl Options
| Option | Description |
|---|---|
| -D rootdn |
Gives the user DN with root permissions, such as Directory Manager. The default is the DN of the Directory Manager, which is read from the nsslapd-root attribute under cn=config.
|
| -m maximum_USN |
Sets the upper bound for entries to delete. All tombstone entries with an entryUSN value up to the specified maximum (inclusive) are deleted, but not past that USN value. If no maximum USN value is set, then all backend tombstone entries are deleted.
|
| -n backendInstance | Gives the name of the database containing the entries to clean (delete). |
| -s suffix | Gives the name of the suffix containing the entries to clean (delete). |
| -w password | The password associated with the user DN. |
- creatorsName. The distinguished name of the person who initially created the entry.
- createTimestamp. The timestamp for when the entry was created in GMT (Greenwich Mean Time) format.
- modifiersName. The distinguished name of the person who last modified the entry.
- modifyTimestamp. The timestamp for when the entry was last modified in GMT format.
NOTE
creatorsName and modifiersName attributes do not reflect the real creator or modifier of the entries. These attributes contain the name of the administrator who is granted proxy authorization rights on the remote server. For information on proxy authorization, see Section 2.3.1.2.2, “Providing Bind Credentials”.
- In the Directory Server Console, select the Configuration tab, and then select the top entry in the navigation tree in the left pane.
- Select the Settings tab in the right pane.
- Select the Track Entry Modification Times checkbox.
The server adds thecreatorsName,createTimestamp,modifiersName, andmodifyTimestampattributes to every newly created or modified entry. - Open the Tasks tab, and click Restart Directory Server.

NOTE
The Directory Server must be restarted for the changes to take effect.
NOTE
/var/log/dirsrv/slapd-instance_name). After a specified time, known as the update interval, the server performs a search on all attributes for which referential integrity is enabled and matches the entries resulting from that search with the DNs of deleted or modified entries present in the log file. If the log file shows that the entry was deleted, the corresponding attribute is deleted. If the log file shows that the entry was changed, the corresponding attribute value is modified accordingly.
member, uniquemember, owner, and seeAlso attributes immediately after a delete or rename operation. However, the behavior of the Referential Integrity Plug-in can be configured to suit the needs of the directory in several different ways:
- Record referential integrity updates in the replication changelog.
- Modify the update interval.
- Select the attributes to which to apply referential integrity.
- Disable referential integrity.
- Never enable it on a dedicated consumer server (a server that contains only read-only replicas).
- Never enable it on a server that contains a combination of read-write and read-only replicas.
- It is possible to enable it on a supplier server that contains only read-write replicas.
- With multi-master replication, enable the plug-in on just one supplier.
- Enable the Referential Integrity Plug-in as described in Section 3.5.3, “Enabling and Disabling Referential Integrity”.
- Configure the plug-in to record any integrity updates in the changelog.
- Ensure that the Referential Integrity Plug-in is disabled on all consumer servers.
NOTE
Because the supplier server sends any changes made by the Referential Integrity Plug-in to consumer servers, it is unnecessary to run the Referential Integrity Plug-in on consumer servers.
- Select the Configuration tab, and expand the Plugins folder.
- Select Referential Integrity Postoperation Plug-in from the list.

- Check the Enable plugin checkbox to enable the plug-in; clear it to disable it.

- Fill in the correct path to the plug-in by default; plug-ins are located in
/usr/lib64/dirsrv/plugins. - Restart the Directory Server to apply the changes. In the Tasks tab, select Restart the Directory Server.

/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 -h server.example.com dn: cn=referential integrity postoperation,cn=plugins,cn=config changetype: modify replace: nsslapd-pluginEnabled nsslapd-pluginEnabled: on
- Then restart the server.
service dirsrv restart
modrdn operation. To reduce the impact this operation has on your system, increase the amount of time between updates. Although there is no maximum update interval, the following intervals are commonly used:
- Update immediately
- 90 seconds
- 3600 seconds (updates occur every hour)
- 10,800 seconds (updates occur every 3 hours)
- 28,800 seconds (updates occur every 8 hours)
- 86,400 seconds (updates occur once a day)
- 604,800 seconds (updates occur once a week)
- Select the Configuration tab, and expand the Plugins folder. Select the Referential Integrity Postoperation Plug-in.
- In the arguments list, replace the value in the first text box with the appropriate time interval.

- Restart the Directory Server to apply the changes. In the Tasks tab, select Restart the Directory Server.
- The first argument listed sets the update intervale for referntial integrity checks. To change the interval, replace the
nsslapd-pluginarg0attribute./usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 dn: cn=referential integrity postoperation,cn=plugins,cn=config changetype: modify replace: nsslapd-pluginarg0 nsslapd-pluginarg0: 600
- Then restart the server.
service dirsrv restart
member, uniquemember, owner, and seeAlso attributes. You can add or delete attributes to be updated through the Directory Server Console, such as adding the nsroledn attribute if roles are being used.
NOTE
NOTE
- Select the Configuration tab, and expand the Plugins folder. Select the Referential Integrity Postoperation Plug-in.
- In the Arguments section, use the and buttons to modify the attributes in the list.

- Restart the Directory Server to apply the changes. In the Tasks tab, select Restart the Directory Server.
NOTE
member, uniquemember, owner, and seeAlso attributes.
nsslapd-pluginarg3: member nsslapd-pluginarg4: uniquemember nsslapd-pluginarg5: owner nsslapd-pluginarg6: seeAlso
- Use
ldapmodify[5] to add another attribute to the list by adding anothernsslapd-pluginargattribute./usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 dn: cn=referential integrity postoperation,cn=plugins,cn=config changetype: modify add: nsslapd-pluginarg7 nsslapd-pluginarg7: nsroledn
- Then restart the server.
service dirsrv restart
NOTE
/usr/lib64/mozldap directory on Red Hat Enterprise Linux 5 (64-bit); directories for other platforms are listed in Section 1.3, “LDAP Tool Locations”. However, Red Hat Enterprise Linux systems also include LDAP tools from OpenLDAP. It is possible to use the OpenLDAP commands as shown in the examples, but you must use the -x argument to disable SASL and allow simple authentication.
/usr/lib64/mozldap directory on Red Hat Enterprise Linux 5 (64-bit); directories for other platforms are listed in Section 1.3, “LDAP Tool Locations”. However, Red Hat Enterprise Linux systems also include LDAP tools from OpenLDAP. It is possible to use the OpenLDAP commands as shown in the examples, but you must use the -x argument to disable SASL and allow simple authentication.
Table 4.1. Import Method Comparison
| Action | Import | Initialize Database |
|---|---|---|
| Overwrites database | No | Yes |
| LDAP operations | Add, modify, delete | Add only |
| Performance | More time-consuming | Fast |
| Partition specialty | Works on all partitions | Local partitions only |
| Response to server failure | Best effort (all changes made up to the point of the failure remain) | Atomic (all changes are lost after a failure) |
| LDIF file location | Local to Console | Local to Console or local to server |
Imports configuration information (cn=config)
| Yes | No |
nsslapd-cachememsize attribute defines the size allowed for the entry cache.
nsslapd-cachememsize attribute high enough so that the import buffer has enough memory to process the entries.
ldapmodify operation is executed to append data, as well as to modify and delete entries. The operation is performed on all of the databases managed by the Directory Server and on remote databases to which the Directory Server has a configured database link.
NOTE
WARNING
- Select the Tasks tab. Scroll to the bottom of the screen, and select Import Database.
Alternatively, open the Configuration tab and select Import from the Console menu. - In the Import Database dialog box, enter the full path to the LDIF file to import in the LDIF file field, or click to select the file to import.
If the Console is running on a machine remote to the directory, the field name appears as LDIF file (on the machine running the Console). When browsing for a file, you are not browsing the current directory for the Directory Server host, but the filesystem of the machine running the Console.When importing a database through a remote Console, do not use a relative path to the database. For remote imports, the operation fails with the error Cannot write to file... if a relative path is given for the file. Always use an absolute path for remote import operations. - In the Options box, select one or both of the following options:
- Add Only. The LDIF file may contain modify and delete instructions in addition to the default add instructions. For the server to ignore operations other than add, select the Add only checkbox.
- Continue on Error. Select the Continue on error checkbox for the server to continue with the import even if errors occur. For example, use this option to import an LDIF file that contains some entries that already exist in the database in addition to new ones. The server notes existing entries in the rejects file while adding all new entries.
- In the File for Rejects field, enter the full path to the file in which the server is to record all entries it cannot import, or click to select the file which will contain the rejects.A reject is an entry which cannot be imported into the database; for example, the server cannot import an entry that already exists in the database or an entry that has no parent object. The Console will write the error message sent by the server to the rejects file.Leaving this field blank means the server will not record rejected entries.
NOTE
ldif2db import operations.
Directory Manager in order to initialize a database because an LDIF file that contains a root entry cannot be imported into a database except as the Directory Manager (root DN). Only the Directory Manager has access to the root entry, such as dc=example,dc=com.
WARNING
o=NetscapeRoot suffix unless you are restoring data. Otherwise, initializing the database deletes information and may require re-installing the Directory Server.
- Select the Configuration tab.
- Expand the Data tree in the left navigation pane. Expand the suffix of the database to initialize, then click the database itself.
- Right-click the database, and select Initialize Database.
Alternatively, select Initialize Database from the Object menu. - In the LDIF file field, enter the full path to the LDIF file to import, or click .

- If the Console is running from a machine local to the file being imported, click and proceed with the import immediately. If the Console is running from a machine remote to the server containing the LDIF file, select one of the following options, then click :
- From local machine. Indicates that the LDIF file is located on the local machine.
- From server machine. Indicates that the LDIF file is located on a remote server.
The default LDIF directory is/var/lib/dirsrv/slapd-.instance_name/ldif
- Using ldif2db. This import method overwrites the contents of the database and requires the server to be stopped; see Section 4.1.4.1, “Importing Using the ldif2db Command-Line Script”.
- Using ldif2db.pl. This import method overwrites the contents of the database while the server is still running; see Section 4.1.4.2, “Importing Using the ldif2db.pl Perl Script”.
- Using ldif2ldap. This method appends the LDIF file through LDAP. This method is useful to append data to all of the databases; see Section 4.1.4.3, “Importing Using the ldif2ldap Command-Line Script”.
- Creating a cn=tasks entry. This method creates a temporary task entry which automatically launches an import operation. This is functionally like running
ldif2db. See Section 4.1.4.4, “Importing through the cn=tasks Entry”.
NOTE
WARNING
NOTE
-E option with the script. See Section 2.2.3.5, “Exporting and Importing an Encrypted Database” for more information.
ldif2db script overwrites the data in the specified database. Also, the script requires that the Directory Server be stopped when the import begins.
o=NetscapeRoot configuration information with the o=NetscapeRoot configuration information in the files being imported.
WARNING
- Stop the server.
service dirsrv stop
instance - Open the Directory Server instance directory.
cd /etc/dirsrv/slapd-
instance_name - Run the
ldif2dbcommand-line script.ldif2db -n Database1 -i /var/lib/dirsrv/slapd-
instance_name/ldif/demo.ldif -i /var/lib/dirsrv/slapd-instance_name/ldif/demo2.ldifFor more information about using this script, see the Directory Server Configuration and Command-Line Tool Reference.WARNING
If the database specified in the-noption does not correspond with the suffix contained by the LDIF file, all of the data contained by the database is deleted, and the import fails. Make sure that the database name is not misspelled.
Table 4.2. ldif2db Parameters
| Option | Description |
|---|---|
| -i |
Specifies the full path name of the LDIF files to be imported. This option is required. To import more than one LDIF file at a time, use multiple -i arguments. When multiple files are imported, the server imports the LDIF files in the order which they are specified from the command line.
|
| -n | Specifies the name of the database to which to import the data. |
ldif2db script, the ldif2db.pl script overwrites the data in the specified database. This script requires the server to be running in order to perform the import.
WARNING
- Open the Directory Server instance directory.
cd /etc/dirsrv/slapd-
instance_name - Run the
ldif2dbscript.ldif2db -D "cn=Directory Manager" -w secret -i /var/lib/dirsrv/slapd-
instance_name/ldif/demo.ldif -n Database1For more information about using this script, see the Directory Server Configuration and Command-Line Tool Reference.NOTE
You do not needrootprivileges to run the script, but you must authenticate as the Directory Manager.
Table 4.3. ldif2db Options
| Option | Description |
|---|---|
| -D | Specifies the DN of the administrative user. |
| -w | Specifies the password of the administrative user. |
| -i |
Specifies the LDIF files to be imported. This option is required. To important multiple LDIF files at a time, use multiple -i arguments. When multiple files are imported, the server imports the LDIF files in the order they are specified in the command line.
|
| -n | Specifies the name of the database to which to import the data. |
ldif2ldap script appends the LDIF file through LDAP. Using this script, data are imported to all directory databases at the same time. The server must be running in order to import using ldif2ldap.
ldif2ldap:
- Open the Directory Server instance directory:
cd /etc/dirsrv/slapd-
instance_name - Run the
ldif2ldapcommand-line script.ldif2ldap "cn=Directory Manager" secretpwd /var/lib/dirsrv/slapd-
instance_name/ldif/demo.ldifTheldif2ldapscript requires the DN of the administrative user, the password of the administrative user, and the absolute path and filename of the LDIF files to be imported.For more information about using this script, see the Directory Server Configuration and Command-Line Tool Reference.
cn=tasks,cn=config entry in the Directory Server configuration is a container entry for temporary entries that the server uses to manage tasks. Several common directory tasks have container entries under cn=tasks,cn=config. Temporary task entries can be created under cn=import,cn=tasks,cn=config to initiate an import operation.
ldif2db and ldif2db.pl scripts, an import operation in cn=tasks overwrites all of the information in the database.
- A unique name (
cn) - The filename of the LDIF file to import (
nsFilename) - The name of the database into which to import the file (
nsInstance)
-s and -x options, respectively, for the ldif2db and ldif2db.pl scripts.
ldapmodify, as described in Section 3.2.4, “Adding and Modifying Entries Using ldapmodify”. For example:
/usr/lib64/mozldap/ldapmodify -a -D "cn=directory manager" -w secret -p 389 -h server.example.com
dn: cn=example import,cn=import,cn=tasks,cn=config
objectclass: extensibleObject
cn: example import
nsFilename: /home/files/example.ldif
nsInstance: userRoot
nsIncludeSuffix: ou=People,dc=example,dc=com
nsExcludeSuffix: ou=Groups,dc=example,dc=comcn=tasks entries.
- Backing up the data in the database.
- Copying data to another Directory Server.
- Exporting data to another application.
- Repopulating databases after a change to the directory topology.
NOTE
cn=config), schema information (cn=schema), or monitoring information (cn=monitor).
WARNING
- Select the Tasks tab. Scroll to the bottom of the screen, and click Export Database(s).
Alternatively, select the Configuration tab and click the Export from the Console menu. - Enter the full path and filename of the LDIF file in the LDIF File field, or click to locate the file.
is not enabled if the Console is running on a remote server. When the button is not enabled, the file is stored in the default directory,/var/lib/dirsrv/slapd-.instance_name/ldif - If the Console is running on a machine remote to the server, two radio buttons are displayed beneath the LDIF File field.
- Select To local machine to export the data to an LDIF file on the machine from which the Console is running.
- Select To server machine to export to an LDIF file located on the server's machine.
- To export the whole directory, select the Entire database radio button.To export only a single subtree of the suffix contained by the database, select the Subtree radio button, and then enter the name of the suffix in the Subtree text box. This option exports a subtree that is contained by more than one database.Alternatively, click to select a suffix or subtree.
- Select the Configuration tab.
- Expand the Data tree in the left navigation pane. Expand the suffix, and select the database under the suffix.
- Right-click the database, and select Export Database.
Alternatively, select Export Database from the Object menu. - In the LDIF file field, enter the full path to the LDIF file, or click .
When the button is not enabled, the file is stored in the default directory,/var/lib/dirsrv/slapd-.instance_name/ldif
- Using db2ldif. This method runs the command-line utility; unlike the import script,
ldif2db, this utility can be run while the server is running. - Using db2ldif.pl. This Perl script behaves the same as the
db2ldifcommand-line utility and takes the same options. - Creating a cn=tasks entry. This method creates a temporary task entry which automatically launches an export operation. This is functionally like running
db2ldif, with one exception: when runningdb2ldifordb2ldif.plfor a replica (with a-roption, the server must be stopped first. Thecn=tasksentry can be added and export replica information while the server is still running. See Section 4.2.3.2, “Exporting through the cn=tasks Entry”.
db2ldif command-line script or the db2ldif.pl Perl script. Both of these tools export all of the database contents or a part of their contents to LDIF when the server is running or stopped.
NOTE
-E option is required to export a database that has been encrypted. See Section 2.2.3.5, “Exporting and Importing an Encrypted Database” for more information.
NOTE
-r.
- Open the Directory Server instance directory:
cd /etc/dirsrv/slapd-
instance_name - Run either the
db2ldifcommand-line script or thedb2ldif.plPerl script. For example:db2ldif -n database1 -a /export/output.ldif
This exports the database contents to/export/output.ldif. If the-aoption is not specified, then the database information is exported to/var/lib/dirsrv/slapd-instance_nameinstance_name/ldif/-database1-date.ldif. For example:db2ldif -n database1
It is also possible to specify which suffixes to export, using the-soption. For example:db2ldif -s "dc=example,dc=com"
The LDIF file in this case would be/var/lib/dirsrv/slapd-instance_nameinstance_name/ldif/-example-2010_04_30_112718.ldif, using the name of the suffix rather than the database.If the suffix specified is a root suffix, such asdc=example,dc=com, then it is not necessary to specify the database or to use the-noption.
Table 4.4. db2ldif Options
| Option | Description |
|---|---|
| -n | Specifies the name of the database from which the file is being exported. |
| -s |
Specifies the suffix or suffixes to include in the export. If the suffix is a root suffix, such as dc=example,dc=com, then the -n option is not required. There can be multiple -s arguments.
|
| -a |
Defines the output file to which Directory Server exports the LDIF. This file must be an absolute path. If the -a option is not given, the output ldif is stored in the /var/lib/dirsrv/slapd- directory and is automatically named serverID-database-YYYY_MM_DD_hhmmxx.ldif with the -n option or serverID-firstsuffixvalue-YYYY_MM_DD_hhmmxx.ldif with the -s option.
|
| -r | Specifies that the exported database is a consumer replica. In this case, the appropriate settings and entries are included with the LDIF to initialize the replica when the LDIF is imported. |
| -E | Decrypts an encrypted database so it can be exported. |
cn=tasks,cn=config entry in the Directory Server configuration is a container entry for temporary entries that the server uses to manage tasks. Several common directory tasks have container entries under cn=tasks,cn=config. Temporary task entries can be created under cn=export,cn=tasks,cn=config to initiate an export operation.
- A unique name (
cn) - The filename of the LDIF file to which to export the database (
nsFilename) - The name of the database to export (
nsInstance)
-s and -x options, respectively, for the db2ldif and db2ldif.pl scripts. Additionally, if the database is a replica, then the appropriate replica information can be included to initialize the new consumer when the LDIF is imported; this is set in the nsExportReplica, corresponding to the -r option.
ldapmodify, as described in Section 3.2.4, “Adding and Modifying Entries Using ldapmodify”. For example:
/usr/lib64/mozldap/ldapmodify -a -D "cn=directory manager" -w secret -p 389 -h server.example.com
dn: cn=example export,cn=export,cn=tasks,cn=config
objectclass: extensibleObject
cn: example export
nsInstance: userRoot
nsFilename: /home/files/example.ldif
nsExportReplica: true
nsIncludeSuffix: ou=People,dc=example,dc=com
nsExcludeSuffix: ou=Groups,dc=example,dc=comcn=tasks entries.
WARNING
NOTE
- Select the Tasks tab.
- Click Back Up Directory Server.

- Enter the full path of the directory to store the backup file in the Directory text box, or click , and the server provides a name for the backup directory.
If the Console is running on the same machine as the directory, click to select a local directory.With the default location, the backup files are placed in/var/lib/dirsrv/slapd-. By default, the backup directory name contains the name of the server instance and the time and date the backup was created (instance_name-YYYY_MM_DD_hhmmss).instance_name/bak
db2bak command-line script or the db2bak Perl script. The Perl script works when the server is running or when the server is stopped; the command-line script can only be run when the server is stopped.
db2bak script:
- Stop the server instance.
cd service dirsrv stop slapd-example
TIP
To avoid shutting down the server when running a backup, use thedb2bak.plPerl script instead of thebd2baktool. These are both located in the/usr/lib[64]/dirsrv/slapd-exampledirectory. - Open the instance's tools directory. For example, on Red Hat Enterprise Linux 5 (64-bit):
cd /usr/lib64/dirsrv/slapd-instance
- Run the
db2bakcommand-line script, specifying the backup file name and directory../db2bak /var/lib/dirsrv/slapd-
instance_name/bak/instance_name-2010_04_30_16_27_56The backup directory where the server saves the backed up databases can be specified with the script. If a directory is not specified, the backup file is stored in/var/lib/dirsrv/slapd-. By default, the backup directory is named with the Directory Server instance name and the date of the backup (serverID-YYYY_MM_DD_hhmmss).instance_name/bak - Start the server instance again.
cd service dirsrv start slapd-example
cn=tasks,cn=config entry in the Directory Server configuration is a container entry for temporary entries that the server uses to manage tasks. Several common directory tasks have container entries under cn=tasks,cn=config. Temporary task entries can be created under cn=backup,cn=tasks,cn=config to initiate a backup operation.
- A unique name (
cn). - The directory to write the backup file to (
nsArchiveDir). The backup file is named with the Directory Server instance name and the date of the backup (serverID-YYYY_MM_DD_hhmmss). - The type of database (
nsDatabaseType); the only option isldbm database.
ldapmodify, as described in Section 3.2.4, “Adding and Modifying Entries Using ldapmodify”. For example:
/usr/lib64/mozldap/ldapmodify -a -D "cn=directory manager" -w secret -p 389 -h server.example.com
dn: cn=example backup,cn=backup,cn=tasks,cn=config
objectclass: extensibleObject
cn: example backup
nsArchiveDir: /export/backups/
nsDatabaseType: ldbm databasecn=tasks entries.
dse.ldif configuration file. When the Directory Server is started, the directory creates a backup of the dse.ldif file automatically in a file named dse.ldif.startOK in the /etc/dirsrv/slapd-instance_name directory.
dse.ldif file is modified, the file is first backed up to a file called dse.ldif.bak in the /etc/dirsrv/slapd-instance_name directory before the directory writes the modifications to the dse.ldif file.
IMPORTANT
WARNING
IMPORTANT
- In the Directory Server Console, select the Tasks tab.
- Click Restore Directory Server.

- Select the backup from the Available Backups list, or enter the full path to a valid backup in the Directory text box.
The Available Backups list shows all backups located in the default directory,/var/lib/dirsrv/slapd-backup_directory. backup_directory is the directory of the most recent backup, in the form serverID-YYYY_MM_DD_hhmmss.instance_name/bak/
- Using the
bak2dbcommand-line script. This script requires the server to be shut down. - Using the
bak2db.plPerl script. This script works while the server is running. - Creating a temporary entry under
cn=restore,cn=tasks,cn=config. This method can also be run while the server is running.
IMPORTANT
bak2db command-line script). However, the databases will be unavailable for processing operations during the restore.
- If the Directory Server is running, stop it:
service dirsrv stop
instance - Open the Directory Server instance directory:
cd /etc/dirsrv/slapd-
instance_name - Run the
bak2dbcommand-line script. Thebak2dbscript requires the full path and name of the input file.bak2db /var/lib/dirsrv/slapd-
instance_name/bak/instance_name-2010_04_30_11_48_30For more information about using this script, see the Directory Server Configuration and Command-Line Tool Reference.
- Open the Directory Server instance directory. For example:
cd /usr/lib[64]/dirsrv/slapd-example
- Run the
bak2db.plPerl script../bak2db.pl -D "cn=Directory Manager" -w secret -a /var/lib/dirsrv/slapd-
instance_name/bak/instance_name-2010_04_30_11_48_30For more information on using this Perl script, see the Directory Server Configuration and Command-Line Tool Reference.
IMPORTANT
| Option | Description |
|---|---|
| -a | Defines the full path and name of the input file. |
| -D | Specifies the DN of the administrative user. |
| -w | Specifies the password of the administrative user. |
cn=tasks,cn=config entry in the Directory Server configuration is a container entry for temporary entries that the server uses to manage tasks. Several common directory tasks have container entries under cn=tasks,cn=config. Temporary task entries can be created under cn=restore,cn=tasks,cn=config to initiate a restore operation.
IMPORTANT
- A unique name (
cn). - The directory from which to retrieve the backup file (
nsArchiveDir). - The type of database (
nsDatabaseType); the only option isldbm database.
ldapmodify, as described in Section 3.2.4, “Adding and Modifying Entries Using ldapmodify”. For example:
/usr/lib64/mozldap/ldapmodify -a -D "cn=directory manager" -w secret -p 389 -h server.example.com
dn: cn=example restore,cn=restore,cn=tasks,cn=config
objectclass: extensibleObject
cn: example restore
nsArchiveDir: /export/backups/
nsDatabaseType: ldbm databasecn=tasks entries.
- Stop the Directory Server if it is running.
service dirsrv stop
instance - Restore the backend from the
/var/lib/dirsrv/slapd-archives with theinstance_name/bakbak2dbscript, using the-nparameter to specify the database name. For example:bak2db /var/lib/dirsrv/slapd-
instance_name/bak/backup_file-n userRoot - Restart the Directory Server.
service dirsrv start
instanceNOTE
If the Directory Server fails to start, remove the database transaction log files in/var/lib/dirsrv/slapd-, then retry starting the server.instance_name/db/log.###
- Changelog entries have not yet expired on the supplier server.If the supplier's changelog has not expired since the database backup was taken, then restore the local consumer and continue with normal operations. This situation occurs only if the backup was taken within a period of time that is shorter than the value set for the maximum changelog age attribute,
nsslapd-changelogmaxage, in thecn=changelog5,cn=configentry. For more information about this option, see the Directory Server Configuration and Command-Line Tool Reference.Directory Server automatically detects the compatibility between the replica and its changelog. If a mismatch is detected, the server removes the old changelog file and creates a new, empty one. - Changelog entries have expired on the supplier server since the time of the local backup.If changelog entries have expired, reinitialize the consumer. For more information on reinitializing consumers, refer to Section 9.10, “Initializing Consumers”.
dse.ldif file in the /etc/dirsrv/slapd-instance_name directory. The dse.ldif.startOK file records a copy of the dse.ldif file at server start up. The dse.ldif.bak file contains a backup of the most recent changes to the dse.ldif file. Use the version with the most recent changes to restore the directory.
dse.ldif configuration file:
- Stop the server.
service dirsrv stop
instance - Restore the database as outlined in Section 4.3.4, “Restoring a Single Database” to copy the backup copy of the
dse.ldiffile into the directory. - Restart the server.
service dirsrv restart
instance
- 5.1. Enforcing Attribute Uniqueness
- 5.2. Assigning Class of Service
- 5.2.1. About the CoS Definition Entry
- 5.2.2. About the CoS Template Entry
- 5.2.3. How a Pointer CoS Works
- 5.2.4. How an Indirect CoS Works
- 5.2.5. How a Classic CoS Works
- 5.2.6. Handling Physical Attribute Values
- 5.2.7. Handling Multi-valued Attributes with CoS
- 5.2.8. Searches for CoS-Specified Attributes
- 5.2.9. Access Control and CoS
- 5.2.10. Managing CoS Using the Console
- 5.2.11. Managing CoS from the Command Line
- 5.2.12. Creating Role-Based Attributes
- 5.3. Linking Attributes to Manage Attribute Values
- 5.4. Assigning and Managing Unique Numeric Attribute Values
cn=plugins,cn=config entry. There are two possible syntaxes for nsslapd-pluginarg attributes.
NOTE
dn: cn=descriptive_plugin_name,cn=plugins,cn=config ... nsslapd-pluginEnabled:statensslapd-pluginarg0:attribute_namensslapd-pluginarg1:dn1nsslapd-pluginarg2:dn2...
- Any value can be given to the
cnattribute to name the plug-in. The name should be descriptive. - The
cnattribute does not contain the name of the attribute which is checked for uniqueness. - Only one attribute can be specified on which the uniqueness check will be performed.
- It is possible to specify several DNs of suffixes or subtrees in which to perform the uniqueness check by incrementing the
nsslapd-pluginargattribute suffix by one each time.
dn: cn=descriptive_plugin_name,cn=plugins,cn=config ... nsslapd-pluginEnabled:statensslapd-pluginarg0: attribute=attribute_namensslapd-pluginarg1: markerObjectClass=objectclass1nsslapd-pluginarg2: requiredObjectClass=objectclass2...
- Any value can be given to the
cnattribute to name the plug-in. The name should be descriptive. - The
cnattribute does not contain the name of the attribute which is checked for uniqueness. - Only one attribute can be specified on which the uniqueness check will be performed.
- If the
nsslapd-pluginarg0attribute begins withattribute=attribute_name, then the server expects thensslapd-pluginarg1attribute to include amarkerObjectClassvalue.
Table 5.1. Attribute Uniqueness Plug-in Variables
| Variable | Definition |
|---|---|
| descriptive_plugin_name |
Specifies the name of this instance of the Attribute Uniqueness Plug-in. It is not required that the name of the attribute for which to ensure uniqueness be included, but it is advisable. For example, cn=mail uniqueness,cn=plugins,cn=config.
|
| state |
Defines whether the plug-in is enabled or disabled. Acceptable values are on or off.
|
| attribute_name | The name of the attribute for which to ensure unique values. Only one attribute can be named. |
| dn |
The DN of the suffix or subtree in which to ensure attribute uniqueness. To specify several suffixes or subtrees, increment the suffix of the nsslapd-pluginarg attribute by one for each additional suffix or subtree.
|
attribute= attribute_name
| The name of the attribute for which to ensure unique values. Only one attribute can be named. |
markerObjectClass= objectclass1
|
Attribute uniqueness will be checked under the entry belonging to the DN of the updated entry that has the object class specified in the markerObjectClass keyword. Do not include a space before or after the equals sign.
|
requiredObjectClass= objectclass2
|
Optional. When using the markerObjectClass keyword to specify the scope of the uniqueness check instead of a DN, it is also possible to specify to perform the check only if the updated entry contains the objectclass specified in the requiredObjectClass keyword. Do not include a space before or after the equals sign.
|
mail attribute has a unique value for that attribute, create a mail uniqueness plug-in.
cn=plugins,cn=config entry. The format of the new entry must conform to the syntax described in Section 5.1.1, “Attribute Uniqueness Plug-in Syntax”.
NOTE
- Stop the Directory Server. Changes to the
dse.ldiffile are not saved if it is edited while the server is running.service dirsrv stop
instance_name - In the
dse.ldiffile, locate the entry for the Attribute Uniqueness Plug-in,cn=attribute uniqueness,cn=plugins,cn=config. - Copy the entire entry. The entry ends in an empty line; copy the empty line, too.
- Paste the copied Attribute Uniqueness Plug-in entry at the end of the file.
- Modify the Attribute Uniqueness Plug-in entry attributes for the new attribute information:
dn: cn=mail uniqueness,cn=plugins,cn=config ... nsslapd-pluginEnabled: on nsslapd-pluginarg0: mail nsslapd-pluginarg1: dc=example,dc=com ...
- Restart the Directory Server.
service dirsrv start
instance_name
dc=example,dc=com entry that includes the mail attribute.
- In the Directory Server Console, select the Configuration tab; then, in the navigation tree, expand the Plug-ins folder, and select the Attribute Uniqueness Plug-in to modify.The configuration parameters for the plug-in are displayed in the right pane.
- To add a suffix or subtree, click , and type a DN in the blank text field.To delete a suffix from the list, place the cursor in the text field to delete, and click .To avoid using a DN, enter the
markerObjectClasskeyword. With this syntax, it is possible to click again to specify arequiredObjectClass, as described in Section 5.1.1, “Attribute Uniqueness Plug-in Syntax”.NOTE
Do not add an attribute name to the list. To check the uniqueness of other attributes, create a new instance of the Attribute Uniqueness Plug-in for the attribute to check. For information, see Section 5.1.2, “Creating an Instance of the Attribute Uniqueness Plug-in”. - Click .
nsslapd-pluginarg attribute in the entry defining the plug-in.
ldapmodify to send LDIF update statements, similar to this example:
/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 -h server.example.com dn: cn=mail uniqueness,cn=plugins,cn=config changetype: modify add: nsslapd-pluginarg2 nsslapd-pluginarg3 nsslapd-pluginarg2: ou=Engineering,dc=example,dc=com nsslapd-pluginarg3: ou=Sales,dc=example,dc=com
mail attribute under the subtrees dc=example,dc=com, ou=Engineering,dc=example,dc=com, and ou=Sales,dc=example,dc=com.
ldapmodify command to import the LDIF file into the directory. For detailed information on the ldapmodify command, see the Directory Server Configuration and Command-Line Tool Reference.
service dirsrv restart instance_namemarkerObjectClass keyword.
ou) object class, copy and paste an existing Attribute Uniqueness Plug-in entry, and change the following attributes:
/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 -h server.example.com dn: cn=mail uniqueness,cn=plugins,cn=config ... nsslapd-pluginEnabled: on nsslapd-pluginarg0: attribute=mail nsslapd-pluginarg1: markerObjectClass=organizationalUnit ...
mail attribute is checked, it is probably only necessary to perform the check when adding or modifying entries with the person or inetorgperson object class.
requiredObjectClass keyword, as shown in the following example:
dn: cn=mail uniqueness,cn=plugins,cn=config ... nsslapd-pluginEnabled: on nsslapd-pluginarg0: attribute=mail nsslapd-pluginarg1: markerObjectClass=organizationalUnit nsslapd-pluginarg2: requiredObjectClass=person ...
markerObjectClass or requiredObjectClass keywords cannot be repeated by incrementing the counter in the nsslapd-pluginarg attribute suffix. These keywords can only be used once per Attribute Uniqueness Plug-in instance.
NOTE
nsslapd-pluginarg0 attribute always contains the name of the attribute for which to ensure uniqueness.
dse.ldif file.
mail attribute under the dc=example,dc=com subtree.
dn: cn=mail uniqueness,cn=plugins,cn=config ... nsslapd-pluginEnabled: on nsslapd-pluginarg0: mail nsslapd-pluginarg1: dc=example,dc=com ...
mail attribute for separate subtrees, l=Chicago,dc=example,dc=com and l=Boston,dc=example,dc=com.
dn: cn=mail uniqueness,cn=plugins,cn=config ... nsslapd-pluginEnabled: on nsslapd-pluginarg0: mail nsslapd-pluginarg1: l=Chicago,dc=example,dc=com nsslapd-pluginarg2: l=Boston,dc=example,dc=com ...
NOTE
nsslapd-pluginarg0 attribute always contains the name of the attribute for which to ensure uniqueness. All other occurrences of the nsslapd-pluginarg, such as nsslapd-pluginarg1, contain DNs.
mail attribute to exist once under the l=Chicago,dc=example,dc=com subtree and once under the l=Boston,dc=example,dc=com subtree. For example, the following two attribute-value settings are allowed:
mail=bjensen,l=Chicago,dc=example,dc=com mail=bjensen,l=Boston,dc=example,dc=com
dc=example,dc=com subtree.
- CoS definition entry. The CoS definition entry identifies the type of CoS used. Like the role definition entry, it inherits from the
LDAPsubentryobject class. The CoS definition entry is below the branch at which it is effective. - Template entry. The CoS template entry contains a list of the shared attribute values. Changes to the template entry attribute values are automatically applied to all the entries within the scope of the CoS. A single CoS might have more than one template entry associated with it.
cosSuperDefinition object class. The CoS definition entry also contains one of three object class that specifies the type of template entry it uses to generate the entry. The target entries which interact with the CoS share the same parent as the CoS definition entry.
- Pointer CoS. A pointer CoS identifies the template entry using the template DN only.
- Indirect CoS. An indirect CoS identifies the template entry using the value of one of the target entry's attributes. For example, an indirect CoS might specify the
managerattribute of a target entry. The value of themanagerattribute is then used to identify the template entry.The target entry's attribute must be single-valued and contain a DN. - Classic CoS. A classic CoS identifies the template entry using a combination of the template entry's base DN and the value of one of the target entry's attributes.
cosTemplate. The CoS template entries for a given CoS are stored in the directory tree along with the CoS definition.
- The DN of the template entry alone. This type of template is associated with a pointer CoS definition.
- The value of one of the target entry's attributes. The attribute used to provide the relative DN to the template entry is specified in the CoS definition entry using the
cosIndirectSpecifierattribute. This type of template is associated with an indirect CoS definition. - By a combination of the DN of the subtree where the CoS performs a one level search for templates and the value of one of the target entry's attributes. This type of template is associated with a classic CoS definition.
dc=example,dc=com. The three entries for this CoS appear as illustrated in Figure 5.1, “Sample Pointer CoS”.
cn=exampleUS,cn=data, in the CoS definition entry. Each time the postalCode attribute is queried on the entry cn=wholiday,ou=people,dc=example,dc=com, the Directory Server returns the value available in the template entry cn=exampleUS,cn=data.
manager attribute of the target entry to identify the template entry. The three CoS entries appear as illustrated in Figure 5.2, “Sample Indirect CoS”.
manager attribute. William's manager is Carla Fuentes, so the manager attribute contains a pointer to the DN of the template entry, cn=Carla Fuentes,ou=people,dc=example,dc=com. The template entry in turn provides the departmentNumber attribute value of 318842.
cosSpecifier attribute specifies the employeeType attribute. This attribute, in combination with the template DN, identify the template entry as cn=sales,cn=exampleUS,cn=data. The template entry then provides the value of the postalCode attribute to the target entry.
cosAttribute attribute contains the name of another attribute which is governed by the class of service. This attribute allows an override qualifier (after the attribute value) which sets how the CoS handles existing attribute values on entries when it generates attribute values.
cosAttribute: attribute_name overridedefault is assumed.
cn=exampleUS,ou=data,dc=example,dc=com, that generates the value of the postalCode attribute. The override qualifier indicates that this value will take precedence over the value stored by the entries for the postalCode attribute:
dn: cn=pointerCoS,dc=example,dc=com
objectclass: top
objectclass: cosSuperDefinition
objectclass: cosPointerDefinition
cosTemplateDn: cn=exampleUS,ou=data,dc=example,dc=com
cosAttribute: postalCode overrideNOTE
NOTE
cosPriority attribute.
cosSpecifier attribute in the CoS definition entry. The template priority is set using the cosPriority attribute. This attribute represents the global priority of a particular template. A priority of zero is the highest priority.
dn: cn=data,dc=example,dc=com objectclass: top objectclass: extensibleObject objectclass: cosTemplate departmentNumber: 71776 cosPriority: 0
departmentNumber attribute. It has a priority of zero, meaning this template takes precedence over any other conflicting templates that define a different departmentNumber value.
cosPriority attribute are considered the lowest priority. Where two or more templates are considered to supply an attribute value and they have the same (or no) priority, a value is chosen arbitrarily.
NOTE
cosPriority values is not defined in Directory Server; do not enter negative values.
postalCode attribute for every entry in a subtree. Searches against those CoS-defined attributes, however, do not behave like searches against regular entries.
- The
postalCodeattribute for Ted Morris is defined by a CoS. - The
postalCodeattribute for Barbara Jensen is set in her entry. - The
postalCodeattribute is indexed.
ldapsearch command uses the filter (postalCode=*), then Barbara Jensen's entry is returned, while Ted Morris's is not.
- The
postalCodeattribute for Ted Morris is defined by a CoS. - The
postalCodeattribute for Barbara Jensen is set in her entry. - The
postalCodeattribute is not indexed.
ldapsearch command uses the filter (postalCode=*), then both Barbara Jensen's and Ted Morris's entries are returned.
cosAttribute attribute in the CoS entry, which means that local values for an attribute can override the CoS value. If an override is set on the CoS, then an ldapsearch operation will return a value for an entry even if the attribute is indexed, as long as there is a local value for the entry. Other entries which possess the CoS but do not have a local value will still not be returned in the ldapsearch operation.
- In the Directory Server Console, select the Directory tab.
- Browse the tree in the left navigation pane, and select the parent entry for the new class of service.
- Go to the Object menu, and select New > Class of Service.
Alternatively, right-click the entry and select New > Class of Service. - Select General in the left pane. In the right pane, enter the name of the new class of service in the Class Name field. Enter a description of the class in the Description field.

- Click Attributes in the left pane. The right pane displays a list of attributes generated on the target entries.Click to browse the list of possible attributes and add them to the list.

- After an attribute is added to the list, a drop-down list appears in the Class of Service Behavior column.

- Select Does not override target entry attribute to tell the directory to only return a generated value if there is no corresponding attribute value stored with the entry.
- Select Overrides target entry attribute to make the value of the attribute generated by the CoS override the local value.
- Select Overrides target entry attribute and is operational to make the attribute override the local value and to make the attribute operational, so that it is not visible to client applications unless explicitly requested.
- Select Does not override target entry attribute and is operational to tell the directory to return a generated value only if there is no corresponding attribute value stored with the entry and to make the attribute operational (so that it is not visible to client applications unless explicitly requested).
NOTE
An attribute can only be made operational if it is also defined as operational in the schema. For example, if a CoS generates a value for thedescriptionattribute, you cannot select Overrides target entry attribute and is operational because this attribute is not marked operational in the schema. - Click Template in the left pane. In the right pane, select how the template entry is identified.

- By its DN. To have the template entry identified by only its DN (a pointer CoS), enter the DN of the template in the Template DN field. Click to locate the DN on the local server. This will be an exact DN, such as
cn=CoS template,ou=People,dc=example,dc=com. - Using the value of one of the target entry's attribute. To have the template entry identified by the value of one of the target entry's attributes (an indirect CoS), enter the attribute name in the Attribute Name field. Click to select a different attribute from the list of available attributes.
- Using both its DN and the value of one of the target entry's attributes. To have the template entry identified by both its DN and the value of one of the target entry's attributes (a classic CoS), enter both a template DN and an attribute name. The template DN in a classic CoS is more general than for a pointer CoS; it references the suffix or subsuffix where the template entries will be. There can be more than one template for a classic CoS.
- Click .
cosTemplateDn attribute reflects that DN, it is best to place the template entries under the CoS itself.
- For a pointer CoS, make sure that this entry reflects the exact DN given when the CoS was created.
- For a classic CoS, the template DN should be recursive, pointing back to the CoS entry itself as the base suffix for the template.
- In the Directory Server Console, select the Directory tab.
- Browse the tree in the left navigation pane, and select the parent entry that contains the class of service.The CoS appears in the right pane with other entries.

- Right-click the CoS, and select New > Other.
Alternatively, select the CoS in the right pane, click Object in the menu at the top, and select New > Other. - Select
cosTemplatefrom the list of object classes.
NOTE
TheLDAPsubentryobject class can be added to a new template entry. Making the CoS template entry an instance of theLDAPsubentryobject class allows ordinary searches to be performed unhindered by the configuration entries. However, if the template entry already exists and is used for something else (for example, if it is a user entry), theLDAPsubentryobject class does not need to be added to the template entry. - Select the object classes attribute, and click .

- Add the
extensibleObjectobject class. This makes it possible to add any attribute available in the directory.
- Click the button.

- Add the
cnattribute, and give it a value that corresponds to the attribute value in the target entry. For example, if themanagerattribute is used to set the value for a classic CoS, give thecna value of a manager's DN, such asuid=bparker,ou=people,dc=example,dc=com. Alternatively, set it to a role, such ascn=QA Role,dc=example,dc=comor a regular attribute value. For example, if theemployeeTypeattribute is selected, it can befull timeortemporary.
- Click the button in the lower right corner to change the naming attribute.

- Use the
cnof the entry as the naming attribute instead ofcosPriority.
- Click the button, and add the attributes listed in the CoS. The values used here will be used throughout the directory in the targeted entries.
- Set the
cosPriority. There may be more than one CoS that applies to a given attribute in an entry; thecosPriorityattribute ranks the importance of that particular CoS. The highercosPrioritywill take precedence in a conflict. The highest priority is0.
Templates that contain nocosPriorityattribute are considered the lowest priority. In the case where two or more templates could supply an attribute value and they have the same (or no) priority, a value is chosen arbitrarily.NOTE
The behavior for negativecosPriorityvalues is not defined in Directory Server; do not enter negative values.NOTE
ThecosPriorityattribute is not supported by indirect CoS.
LDAPsubentry object class and the cosSuperDefinition object class.
cosPointerDefinition object class. This object class identifies the template entry using an entry DN value specified in the cosTemplateDn attribute, as shown in Example 5.1, “An Example Pointer CoS Entry”.
Example 5.1. An Example Pointer CoS Entry
dn: cn=pointerCoS,dc=example,dc=com objectclass: top objectclass: cosSuperDefinition objectclass:cosPointerDefinitioncosTemplateDn:DN_stringcosAttribute:list_of_attributes qualifiercn: pointerCoS
cosIndirectDefinition object class. This type of CoS identifies the template entry based on the value of one of the target entry's attributes, as specified in the cosIndirectSpecifier attribute. This is illustrated in Example 5.2, “An Example Indirect CoS Entry”.
Example 5.2. An Example Indirect CoS Entry
dn: cn=indirectCoS,dc=example,dc=com objectclass: top objectclass: cosSuperDefinition objectclass:cosIndirectDefinitioncosIndirectSpecifier:attribute_namecosAttribute:list_of_attributes qualifiercn: indirectCoS
cosClassicDefinition object class. This identifies the template entry using both the template entry's DN (set in the cosTemplateDn attribute) and the value of one of the target entry's attributes (set in the cosSpecifier attribute). This is illustrated in Example 5.3, “An Example Classic CoS Entry”.
Example 5.3. An Example Classic CoS Entry
dn: cn=classicCoS,dc=example,dc=com objectclass: top objectclass: cosSuperDefinition objectclass:cosClassicDefinitioncosTemplateDn:DN_stringcosSpecifier:attribute_namecosAttribute:list_of_attributes qualifiercn: classicCoS
cosAttribute. The purpose of a CoS is to supply attribute values across multiple entries; the cosAttribute attribute defines which attribute the CoS generates values for.
cosTemplate object class.
NOTE
LDAPsubentry object class to a new template entry. Making the CoS template entry an instance of the LDAPsubentry object classes allows ordinary searches to be performed unhindered by the configuration entries. However, if the template entry already exists and is used for something else, such as a user entry, the LDAPsubentry object class does not need to be added to the template entry.
cosAttribute attribute of the CoS definition entry) and the value for that attribute.
postalCode attribute follows:
dn:cn=exampleUS,ou=data,dc=example,dc=com objectclass: top objectclass: extensibleObject objectclass: cosTemplate postalCode: 44438
dc=example,dc=com tree.
- Add a new pointer CoS definition entry to the
dc=example,dc=comsuffix usingldapmodify:/usr/lib64/mozldap/ldapmodify
-a-D "cn=directory manager" -w secret -p 389 -h server.example.comTheldapmodifyutility binds to the server and prepares it to add information to the configuration file. - Next, add the pointer CoS definition to the
dc=example,dc=comroot suffix.dn: cn=pointerCoS,dc=example,dc=com objectclass: top objectclass: cosSuperDefinition objectclass: cosPointerDefinition cosTemplateDn: cn=exampleUS,ou=data,dc=example,dc=com cosAttribute: postalCode
- Create the template entry.
dn: cn=exampleUS,ou=data,dc=example,dc=com objectclass: top objectclass: extensibleObject objectclass: cosTemplate postalCode: 44438
cn=exampleUS,ou=data,dc=example,dc=com) supplies the value stored in its postalCode attribute to any entries located under the dc=example,dc=com suffix. These entries are the target entries.
manager attribute of the target entry to identify the CoS template entry, which varies depending on the different values of the attribute.
- Add a new indirect CoS definition entry to the
dc=example,dc=comsuffix, usingldapmodifyas follows:/usr/lib64/mozldap/ldapmodify
-a-D "cn=directory manager" -w secret -p 389 -h server.example.comTheldapmodifyutility binds to the server and prepares it to add information to the configuration file. - Add the indirect CoS definition to the
dc=example,dc=comroot suffix as follows:dn: cn=indirectCoS,dc=example,dc=com objectclass: top objectclass: cosSuperDefinition objectclass: cosIndirectDefinition cosIndirectSpecifier: manager cosAttribute: departmentNumber
departmentNumber attribute, then no other attribute needs to be added to the manager entries. The definition entry looks in the target suffix (the entries under dc=example,dc=com) for entries containing the manager attribute because this attribute is specified in the cosIndirectSpecifier attribute of the definition entry). It then checks the departmentNumber value in the manager entry that is listed. The value of the departmentNumber attribute will automatically be relayed to all of the manager's subordinates that have the manager attribute. The value of departmentNumber will vary depending on the department number listed in the different manager's entries.
cosSpecifier attribute.
- Add a new classic CoS definition entry to the
dc=example,dc=comsuffix, usingldapmodify./usr/lib64/mozldap/ldapmodify
-a-D "cn=directory manager" -w secret -p 389 -h server.example.comTheldapmodifyutility binds to the server and prepares it to add information to the configuration file. - Add the indirect CoS definition to the
dc=example,dc=comroot suffix.dn: cn=classicCoS,dc=example,dc=com objectclass: top objectclass: cosSuperDefinition objectclass: cosClassicDefinition cosTemplateDn: cn=classicCoS,dc=example,dc=com cosSpecifier: businessCategory cosAttribute: postalCode override
- Create the template entries for the sales and marketing departments. Add the CoS attributes to the template entry. The
cnof the template sets the value of thebusinessCategoryattribute in the target entry, and then the attributes are added or overwritten according to the value in the template:dn: cn=sales,cn=classicCoS,dc=example,dc=com objectclass: top objectclass: extensibleObject objectclass: cosTemplate postalCode: 44438 dn: cn=marketing,cn=classicCoS,dc=example,dc=com objectclass: top objectclass: extensibleObject objectclass: cosTemplate postalCode: 99111
dc=example,dc=com suffix. Depending upon the combination of the businessCategory attribute found in the entry and the cosTemplateDn, it can arrive at one of two templates. One, the sales template, provides a postal code specific to employees in the sales department. The marketing template provides a postal code specific to employees in the marketing department.
ou=People,dc=example,dc=com, for example, the following ldapsearch command will not return them:
ldapsearch -s sub -b ou=People,dc=example,dc=com “(objectclass=*)”
ldapSubEntry object class to the CoS definition entries. For example:
dn: cn=pointerCoS,ou=People,dc=example,dc=com objectclass: top objectclass: cosSuperDefinition objectclass: cosPointerDefinition objectclass: ldapSubEntry cosTemplateDn: cn=exampleUS,ou=data,dc=example,dc=com cosAttribute: postalCode override
(objectclass=ldapSubEntry), with the search. This filter can be added to any other search filter using OR (|):
ldapsearch -s sub -b ou=People,dc=example,dc=com “(|(objectclass=*)(objectclass=ldapSubEntry))”
ou=People,dc=example,dc=com subtree.
NOTE
nsRole attribute as the cosSpecifier in the CoS definition entry of a classic CoS. Because the nsRole attribute can be multi-valued, CoS schemes can be defined that have more than one possible template entry. To resolve the ambiguity of which template entry to use, include the cosPriority attribute in the CoS template entry.
dn: cn=ManagerRole,ou=people,dc=example,dc=com objectclass: top objectclass: nsRoleDefinition objectclass: nsComplexRoleDefinition objectclass: nsFilteredRoleDefinition cn: ManagerRole nsRoleFilter: ou=managers Description: filtered role for managers
IMPORTANT
nsRoleFilter attribute cannot accept virtual attribute values.
dn: cn=managerCOS,dc=example,dc=com objectclass: top objectclass: cosSuperDefinition objectclass: cosClassicDefinition cosTemplateDn: cn=managerCOS,dc=example,dc=com cosSpecifier: nsRole cosAttribute: mailboxquota override
cosTemplateDn attribute provides a value that, in combination with the attribute specified in the cosSpecifier attribute (in the example, the nsRole attribute of the target entry), identifies the CoS template entry. The CoS template entry provides the value for the mailboxquota attribute. An additional qualifier of override tells the CoS to override any existing mailboxquota attributes values in the target entry.
dn:cn=cn=ManagerRole\,ou=people\,dc=example\,dc=com,cn=managerCOS,dc=example,dc=com objectclass: top objectclass: extensibleObject objectclass: cosTemplate mailboxquota: 1000000
mailboxquota attribute, 1000000.
NOTE
linkType) and one attribute which is automatically maintained by the plug-in (managedType).
NOTE
- Both the managed attribute and linked attribute must require the Distinguished Name syntax in their attribute definitions. The linked attributes are essentially managed cross-references, and the way that the plug-in handles these cross-references is by pulling the DN of the entry from the attribute value.For information on planning custom schema elements, see Chapter 6, Managing the Directory Schema.
- Each Linked Attribute Plug-in instance must be local and any managed attributes must be blocked from replication using fractional replication.Any changes that are made on one supplier will automatically trigger the plug-in to manage the values on the corresponding directory entries, so the data stay consistent across servers. However, the managed attributes must be maintained by the plug-in instance for the data to be consistent between the linked entries. This means that managed attribute values should be maintained solely by the plug-in processes, not the replication process, even in a multi-master replication environment.For information on using fractional replication, see Section 9.1.7, “Replicating a Subset of Attributes with Fractional Replication”.
- The attribute that is managed manually by administrators, in the
linkTypeattribute - The attribute that is created dynamically by the plug-in, in the
managedTypeattribute - Optionally, a scope that restricts the plug-in to a specific part of the directory tree, in the
linkScopeattribute
Example 5.4. Example Linked Attributes Plug-in Instance Entry
dn: cn=Manager Link,cn=Linked Attributes,cn=plugins,cn=config objectClass: top objectClass: extensibleObject cn: Manager Link1 cn: Manager Link linkType: directReport managedType: manager linkScope: ou=people,dc=example,dc=com
Table 5.2. Linked Attributes Plug-in Instance Attributes
| Plug-in Attribute | Description |
|---|---|
| cn | Gives a unique name for the plug-in instance. |
| linkScope | Contains the DN of a suffix to which to restrict the function of the plug-in instance. |
| linkType | Gives the attribute which is maintained by an administrator. This attribute is manually maintained and is used as the reference for the plug-in. This attribute must have a DN value format. When the attribute is added, modified, or deleted, then its value contains the DN of the target entry for the plug-in to update. |
| managedType | Gives the attribute which is maintained by the plug-in. This attribute is created and updated on target entries. This attribute must have a DN value format. When the attribute is added to the entry, its value will point back as a cross-reference to the managed entry. |
NOTE
- If it is not already enabled, enable the Linked Attributes Plug-in, as described in Section 1.10.1, “Enabling Plug-ins”. For example:
/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 dn: cn=Linked Attributes,cn=plugins,cn=config changetype: modify replace: nsslapd-pluginEnabled nsslapd-pluginEnabled: on
- Create the plug-in instance. Both the
managedTypeandlinkTypeattributes are required. The plug-in syntax is covered in Section 5.3.2, “Looking at the Linking Attributes Plug-in Syntax”. For example:/usr/lib64/mozldap/ldapmodify
-a-D "cn=directory manager" -w secret -p 389 -h server.example.com dn: cn=Manager Link,cn=Linked Attributes,cn=plugins,cn=config objectClass: top objectClass: extensibleObject cn: Manager Link linkType: directReport managedType: manager - Restart the server to apply the new plug-in instance.
service dirsrv restart
fixup-linkedattrs.pl) or by launching a fix-up task.
fixup-linkedattrs.pl script launches a special task to regenerate all of the managed-link attribute pairs on directory entries. One or the other may be lost in certain situations. If the link attribute exists in an entry, the task traces the cross-referenced DN in the available attribute and creates the corresponding configured managed attribute on the referenced entry. If a managed attribute exists with no corresponding link attribute, then the managed attribute value is removed.
/usr/lib64/dirsrv/instance_name/fixup-linkedattrs.pl -D "cn=Directory Manager" -w password-l option to specify the target plug-in instance DN:
/usr/lib64/dirsrv/instance_name/fixup-linkedattrs.pl -D "cn=Directory Manager" -w password -l "cn=Manager Link,cn=Linked Attributes,cn=plugins,cn=config"fixup-linkedattrs.pl tool is described in more detail in the Configuration and Command-Line Tool Reference.
cn=tasks configuration entry in the dse.ldif file, so it is also possible to initiate a task by adding the entry using ldapmodify. When the task is complete, the entry is removed from the directory.
fixup-linkedattrs.pl script when it is run.
cn=fixup linked attributes,cn=tasks,cn=config entry. The only required attribute is the cn for the specific task, though it also allows the ttl attribute to set a timeout period.
/usr/lib64/mozldap/ldapmodify -a -D "cn=directory manager" -w secret -p 389 -h server.example.com
dn: cn=example,cn=fixup linked attributes,cn=tasks,cn=config
cn:example
ttl: 5dse.ldif configuration, so it is possible to reuse the same task entry continually.
cn=fixup linked attributes task configuration is described in more detail in the Configuration and Command-Line Tool Reference.
uidNumber and gidNumber. The Directory Server can automatically generate and supply unique numbers for specified attributes using the Distributed Numeric Assignment (DNA) Plug-in.
NOTE
dn: dnaHostname=ldap1.example.com+dnaPortNum=389,cn=Account UIDs,ou=Ranges,dc=example,dc=com objectClass: extensibleObject objectClass: top dnahostname: ldap1.example.com dnaPortNum: 389 dnaSecurePortNum: 636 dnaRemainingValues: 1000
/usr/lib64/mozldap/ldapmodify-a-D "cn=directory manager" -w secret -p 389 -h server.example.com dn: uid=jsmith,ou=people,dc=example,dc=com objectClass: top objectClass: person objectClass: posixAccount uid: jsmith cn: John SmithuidNumber: magic....
IMPORTANT
- The attribute that's value is being managed, set in the
dnaTypeattribute - The entry DN to use as the base to search for entries, set in the
dnaScopeattribute - The search filter to use to identify entries to manage, set in the
dnaFilterattribute - The next available value to assign, set in the
dnaNextValueattribute (after the entry is created, this is handled by the plug-in)
dn: cn=Account UIDs,cn=Distributed Numeric Assignment Plugin,cn=plugins,cn=config objectClass: top objectClass: extensibleObject cn: Account UIDs dnatype: uidNumber dnafilter: (objectclass=posixAccount) dnascope: ou=people,dc=example,dc=com dnaNextValue: 1
- The maximum number that the server can assign; this sets the upward bound for the range, which is logically required when multiple servers are assigning numbers. This is set in the
dnaMaxValueattribute. - The threshold where the range is low enough to trigger a range transfer, set in the
dnaThresholdattribute. If this is not set, the default value is1. - A timeout period so that the server does not hang waiting for a transfer, set in the
dnaRangeRequestTimeoutattribute. If this is not set, the default value is10, meaning 10 seconds. - A configuration entry DN which is shared among all supplier servers, which stores the range information for each supplier, set in the
dnaSharedCfgDNattribute.
dnaNextRange attribute. This shows the next available range for transfer and is managed automatically by the plug-in, as ranges are assigned or used by the server. This range is just "on deck." It has not yet been assigned to another server and is still available for its local Directory Server to use.
dn: cn=Account UIDs,cn=Distributed Numeric Assignment Plugin,cn=plugins,cn=config objectClass: top objectClass: extensibleObject cn: Account UIDs dnatype: uidNumber dnafilter: (objectclass=posixAccount) dnascope: ou=People,dc=example,dc=com dnanextvalue: 1 dnaMaxValue: 1300 dnasharedcfgdn: cn=Account UIDs,ou=Ranges,dc=example,dc=com dnathreshold: 100 dnaRangeRequestTimeout: 60 dnaNextRange: 1301-2301
dnaNextRange attribute should be set explicitly only if a separate, specific range has to be assigned to other servers. Any range set in the dnaNextRange attribute must be unique from the available range for the other servers to avoid duplication. If there is no request from the other servers and the server where dnaNextRange is set explicitly has reached its set dnaMaxValue, the next set of values (part of the dnaNextRange) is allocated from this deck.
dnaNextRange allocation is also limited by the dnaThreshold attribute that is set in the DNA configuration. Any range allocated to another server for dnaNextRange cannot violate the threshold for the server, even if the range is available on the deck of dnaNextRange.
NOTE
dnaNextRange attribute is handled internally if it is not set explicitly. When it is handled automatically, the dnaMaxValue attribute serves as upper limit for the next range.
Table 5.3. DNA Entry Attributes
| Plug-in Attribute | Description |
|---|---|
| cn | Gives a unique name for the plug-in instance. |
| dnaType |
Contains the name of the attribute for which unique numbers are assigned.
If a prefix will be prepended to the generated value, then be sure to use an attribute which allows the syntax of the combined attribute value, such as a custom attribute which allows alphanumeric strings. Otherwise, syntax validation will enforce the defined syntax for the value, such as integer for
uidNumber and gidNumber, and the DNA operations will fail with syntax violations.
|
| dnaScope | Sets the base DN to use to search for entries to which to apply the managed ranges. |
| dnaFilter | Gives an LDAP filter to use to specify the kinds of entries for the plug-in to manage. |
| dnaNextValue | Gives the next available number to assign. This is initially set manually when the entry is created; afterward, it is managed by the plug-in. |
| dnaMaxValue |
Optionally, the upper limit of the range that the server can assign. Defining the range is required when there are multiple servers assigning numbers to entries. The default value is -1, which is the same as the highest 64-bit integer.
|
| dnaThreshold | Sets a limit on the amount of remaining available numbers before the server requests a new range. |
| dnaSharedCfgDN | Specifies the DN of a container entry that each supplier server shares. The plug-in automatically creates an entry for the individual instances underneath this entry which contains their available ranges. The plug-in can use this information to request and transfer ranges as servers consume their available range. |
| dnaNextRange |
Shows the next range of numbers which are available to be transferred. This attribute can be set automatically by the plug-in according to the threshold and shared configuration information; this can also be set manually for an administrator to specifically assign an additional range of values to a server. This attribute is always limited by the dnaThreshold settings.
|
| dnaRangeRequestTimeout | Sets a timeout period for a range request so that a server does not hang indefinitely waiting for a transfer. |
| dnaMagicRegen | Sets a word or number (outside of the assigned range) which automatically triggers the plug-in to assign a number to an attribute. This is a useful default to use for importing entries. |
| dnaPrefix |
Sets a string to insert in front of whatever number is assigned. For example, if the prefix is
user and the assigned number for the attribute is 1001, then the final assigned value is user1001.
dnaPrefix can hold any kind of string. However, some possible values for dnaType (such as uidNumber and gidNumber) require integer syntax for attribute values. To use a prefix string, consider using a custom attribute for dnaType which allows the syntax of the prefix plus the generated number assignment.
|
NOTE
dnaNextvalue is already taken, which requires an equality index on an integer attribute, with the proper ordering matching rule.
NOTE
- Create the shared container entry in the replicated subtree. For example:
/usr/lib64/mozldap/ldapmodify
-a-D "cn=directory manager" -w secret -p 389 -h server.example.com dn: ou=Ranges,dc=example,dc=coma objectclass: top objectclass: extensibleObject objectclass: organizationalUnit ou: Ranges dn: cn=Account UIDs,ou=Ranges,dc=example,dc=coma objectclass: top objectclass: extensibleObject cn: Account UIDs - Enable the DNA Plug-in. By default, the plug-in entry (which is the container entry) is disabled.
/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 -h server.example.com dn: cn=Distributed Numeric Assignment Plugin,cn=plugins,cn=config changetype: modify replace: nsslapd-pluginEnabled nsslapd-pluginEnabled: on
- Create the new DNA Plug-in instance beneath the container entry.
/usr/lib64/mozldap/ldapmodify
-a-D "cn=directory manager" -w secret -p 389 -h server.example.com dn: cn=Account UIDs,cn=Distributed Numeric Assignment Plugin,cn=plugins,cn=config objectClass: top dnanextvalue: 1 dnaMaxValue: 1300 dnasharedcfgdn: cn=Account UIDs,ou=Ranges,dc=example,dc=com dnathreshold: 100 dnaRangeRequestTimeout: 60 dnaMagicRegen: magic - Restart the server to load the new plug-in instance.
service dirsrv restart
instance_name
NOTE
dnaNextvalue is already taken, which requires an equality index on an integer attribute, with the proper ordering matching rule.
- Click the Directory tab.
- Open the config folder, and then expand the plugins folder.
- Click the Distributed Numeric Assignment plug-in folder. All of the DNA Plug-in instances are listed in the main window.

- Highlight the DNA instance entry, and right-click on the Advanced link to open the property editor.
- Edit the DNA-related attributes.

- 6.1. Overview of Schema
- 6.2. Managing Object Identifiers
- 6.3. Directory Server Attribute Syntaxes
- 6.4. Managing Custom Schema in the Console
- 6.5. Managing Schema Using ldapmodify
- 6.6. Creating Custom Schema Files
- 6.7. Dynamically Reloading Schema
- 6.8. Turning Schema Checking On and Off
- 6.9. Using Syntax Validation
/etc/dirsrv/slapd-instance_name/schema directory. There is also a common /etc/dirsrv/schema directory; the files in this directory are used as templates for new Directory Server instances. Putting custom schema in the /etc/dirsrv/schema directory means that it is automatically included with any new instances.
person and inetOrgPerson), groups (groupOfUniqueNames), locations (locality), organizations and divisions (organization and organizationalUnit), and equipment (device).
objectclasses line, then followed by its OID, name, a description, its direct superior object class (an object class which is required to be used in conjunction with the object class and which shares its attributes with this object class), and the list of required (MUST) and allowed (MAY) attributes.
Example 6.1. person Object Class Schema Entry
objectClasses: ( 2.5.6.6 NAME 'person' DESC 'Standard LDAP objectclass' SUP top MUST ( sn $ cn ) MAY ( description $ seeAlso $ telephoneNumber $ userPassword ) X-ORIGIN 'RFC 2256' )
person object class requires the cn, sn, and objectClass attributes and allows the description, seeAlso, telephoneNumber, and userPassword attributes.
inetOrgPerson object class. In that case, the entry must also include the superior object class for inetOrgPerson, organizationalPerson, and the superior object class for organizationalPerson, which is person:
objectClass: top objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson
cn attribute is used to store a person's full name, such as cn: John Smith.
givenname: John surname: Smith mail: jsmith@example.com
attributetypes line, then followed by its OID, name, a description, syntax (allowed format for its value), optionally whether the attribute is single- or multi-valued, and where the attribute is defined.
Example 6.2. description Attribute Schema Entry
attributetypes: ( 2.5.4.13 NAME 'description' DESC 'Standard LDAP attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'RFC 2256' )
99user.ldif. It is also possible to create a new, separate schema file and include it with the default schema files.
- Planning and defining OIDs for the new schema. Schema elements are recognized by the server by their OID, so it is important for the OIDs to be unique and organized. Directory Server itself does not manage OIDs, but there are some best practices described in Section 6.2, “Managing Object Identifiers”.
- Create the new attributes. Attribute definitions require a name, a syntax (the allowed format of the values), an OID, and a description of whether the attribute can only be used once per entry or multiple times.
- Create an object class to contain the new attributes. An object class lists the required attributes for that entry type and the allowed (permissible) attributes. Because the default schema should never be altered, if any new attributes are created, then they should be added to a custom object class.
/etc/dirsrv/slapd-instance_name/schema. Become familiar with the available schema; then plan what information attributes are missing and how best to fill those gaps with custom attributes. Planning the schema is covered in the Deployment Guide.
CAUTION
- Keep the schema as simple as possible.
- Reuse existing schema elements whenever possible.
- Minimize the number of mandatory attributes defined for each object class.
- Do not define more than one object class or attribute for the same purpose.
- Do not modify any existing definitions of attributes or object classes.
NOTE
ldapmodify because the changes are logged in the server change log. However, replicated schema elements are all copied to 99user.ldif regardless of what schema file held the schema on the supplier server, so replication can lead to multiple files defining the same schema.
99user.ldif in /etc/dirsrv/slapd-instance_name/schema.
1, and there can be a branch for attributes at 1.1 and for object classes at 1.2.
NOTE
Table 6.1. Supported LDAP Attribute Syntaxes
| Name | OID | Definition |
|---|---|---|
| Binary | 1.3.6.1.4.1.1466.115.121.1.5 | For values which are binary. |
| Bitstring | 1.3.6.1.4.1.1466.115.121.1.6 | For values which are bitstings. This is supported for searches which require accessing attributes using bitstring flags. |
| Boolean | 1.3.6.1.4.1.1466.115.121.1.7 | For attributes with only two allowed values, true or false. |
| Country String | 1.3.6.1.4.1.1466.115.121.1.11 | For values which are limited to exactly two printable string characters; for example, US for the United States. |
| DN | 1.3.6.1.4.1.1466.115.121.1.12 | For values which are DNs. |
| Delivery Method | 1.3.6.1.4.1.1466.115.121.1.14 |
For values which are contained a preferred method of delivering information or contacting an entity. The different values are separated by a dollar sign ($). For example:
telephone $ physical |
| DirectoryString (Case-Insensitive String) | 1.3.6.1.4.1.1466.115.121.1.15 | For values which are case-insensitive strings. |
| Enhanced Guide | 1.3.6.1.4.1.1466.115.121.1.21 | For values which contain complex search parameters based on attributes and filters. |
| Facsimile | 1.3.6.1.4.1.1466.115.121.1.22 | For values which contain fax numbers. |
| Fax | 1.3.6.1.4.1.1466.115.121.1.23 | For values which contain the images of transmitted faxes. |
| GeneralizedTime | 1.3.6.1.4.1.1466.115.121.1.24 | For values which are encoded as printable strings. The time zone must be specified. It is strongly recommended to use GMT time. |
| Guide | 1.3.6.1.4.1.1466.115.121.1.25 | Obsolete. For values which contain complex search parameters based on attributes and filters. |
| IA5String (Case-Exact String) | 1.3.6.1.4.1.1466.115.121.1.26 | For values which are case-exact strings. |
| Integer | 1.3.6.1.4.1.1466.115.121.1.27 | For values which are whole numbers. |
| JPEG | 1.3.6.1.4.1.1466.115.121.1.28 | For values which contain image data. |
| Name and Optional UID | 1.3.6.1.4.1.1466.115.121.1.34 | For values which contain a combination value of a DN and (optional) unique ID. |
| Numeric String | 1.3.6.1.4.1.1466.115.121.1.36 | For values which contain a string of both numerals and spaces. |
| OctetString | 1.3.6.1.4.1.1466.115.121.1.40 | For values which are binary; this is the same as using the binary syntax. |
| OID | 1.3.6.1.4.1.1466.115.121.1.37 | For values which contain an object identifier (OID). |
| Postal Address | 1.3.6.1.4.1.1466.115.121.1.41 |
For values which are encoded in the format postal-address = dstring * ("$" dstring). For example:
1234 Main St.$Raleigh, NC 12345$USAEach dstring component is encoded as a DirectoryString value. Backslashes and dollar characters, if they occur, are quoted, so that they will not be mistaken for line delimiters. Many servers limit the postal address to 6 lines of up to thirty characters. |
| PrintableString | 1.3.6.1.4.1.1466.115.121.1.58 | For values which contain strings containing alphabetic, numeral, and select punctuation characters (as defined in RFC 4517). |
| Space-Insensitive String | 2.16.840.1.113730.3.7.1 | For values which contain space-insensitive strings. |
| TelephoneNumber | 1.3.6.1.4.1.1466.115.121.1.50 | For values which are in the form of telephone numbers. It is recommended to use telephone numbers in international form. |
| Teletex Terminal Identifier | 1.3.6.1.4.1.1466.115.121.1.51 | For values which contain an international telephone number. |
| Telex Number | 1.3.6.1.4.1.1466.115.121.1.52 | For values which contain a telex number, country code, and answerback code of a telex terminal. |
| URI |
For values in the form of a URL, introduced by a string such as http://, https://, ftp://, ldap://, and ldaps://. The URI has the same behavior as IA5String. See RFC 4517 for more information on this syntax.
|
- In the Directory Server Console, select the Configuration tab.
- In the left navigation tree, select the Schema folder.

- There are three tabs which display the schema elements loaded in Directory Server: Object Class, Attributes, and Matching Rules.


NOTE
- Select the Configuration tab.
- In the left navigation tree, select the Schema folder, and then select the Attributes tab in the right pane.

- Click Create.

- Fill in the information for the new attribute.

- The attribute name; this must be unique.
- The OID; this is not required, but for compatibility and server performance, assigning a unique numeric OID is strongly recommended.
- The syntax; this is the allowed format for the attributes values.
- Whether the attribute is multi-valued; by default, all attributes can be used more than once in an entry, but deselecting the checkbox means the attribute can be used only once.
- Click .
- In the Directory Server Console, select the Configuration tab.
- In the navigation tree, select the Schema folder, and then select the Object Classes tab in the right pane.

- Click the button in the Object Classes tab.

- Fill in the information about the new object class.

- The name; this must be unique.
- The OID; this is not required, but for compatibility and server performance, assigning a unique numeric OID is strongly recommended.
- The superior object class for the entry. The default is
top; selecting another object class means that the new object class inherits all of the required and allowed attributes from the parent, in addition to its own defined attributes. - Required and allowed attributes. Select the attributes on the left and used the buttons by the Available Attributes and Required Attributes boxes to add the attributes as appropriate.
NOTE
Attributes that are inherited from the parent object classes cannot be removed, regardless of whether they are allowed or required. - Click to save the new object class.
- In the Directory Server Console, select the Configuration tab.
- In the left navigation tree, select the Schema folder.

- Open the Object Classes or Attributes tab.
- Select the schema element to edit from the list. Only custom (user-defined) schema can be edited in the Directory Server Console.
- Click the button at the bottom of the window.

- Edit any of the schema information.
- In the Directory Server Console, select the Configuration tab.
- In the left navigation tree, select the Schema folder.

- Open the Object Classes or Attributes tab.
- Select the schema element to delete from the list. Only custom (user-defined) schema can be deleted in the Directory Server Console.
- Click the button at the bottom of the window.

- Confirm the deletion.
WARNING
ldapmodify can be used to add, edit, and delete custom schema elements. ldapmodify also modifies the default custom schema file for a Directory Server instance, 99user.ldif.
attributetypes entry for the cn=schema entry. The attributetypes attribute has the format:
attributetypes: ( definition )
The definition contains five components:
- An OID, usually a dot-separated number
- A unique name, in the form
NAMEname - A description, in the form
DESCdescription - The OID for the syntax of the attribute values, listed in Table 6.1, “Supported LDAP Attribute Syntaxes”, in the form
SYNTAXOID - Optionally, the source where the attribute is defined
99user.ldif, by by running an LDAP command and modifying the cn=schema entry. For example:
/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 -v dn: cn=schema changetype: modify add: attributetypes attributetypes: ( 1.2.3.4.5.6.1 NAME 'dateofbirth' DESC 'For employee birthdays' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUED X-ORIGIN 'Example defined')
objectclasses attribute for the cn=schema entry. The objectclasses attribute has the format:
objectclasses: ( definition )
The object class definition contains several components:
- An OID, usually a dot-separated number
- A unique name, in the form
NAMEname - A description, in the form
DESCdescription - The superior, or parent, object class for this object class, in the form
SUPobject_class; if there is no related parent, useSUP top - The word
AUXILIARY, which gives the type of entry to which the object class applies;AUXILIARYmeans it can apply to any entry - A list of required attributes, preceded by the word
MUST; to include multiple attributes, enclose the group in parentheses and separate with attributes with dollar signs ($) - A list of allowed attributes, preceded by the word
MAY; to include multiple attributes, enclose the group in parentheses and separate with attributes with dollar signs ($)
99user.ldif, by by running an LDAP command and modifying the cn=schema entry. For example:
/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 -h server.example.com -v dn: cn=schema changetype: modify add: objectclasses objectclasses: ( 2.16.840.1133730.2.123 NAME 'examplePerson' DESC 'Example Person Object Class' SUP inetOrgPerson AUXILIARY MUST cn MAY (exampleDateOfBirth $ examplePreferredOS) )
WARNING
- Remove the unwanted attributes from any entries which use them, then from any object classes in the schema file which accept that attribute. Likewise, to remove an object class, remove it from any entries.
- Run
ldapmodifyto remove the attribute. For example:/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 -h server.example.com dn: cn=schema changetype: modify delete: objectclasses objectclasses: ( 2.16.840.1133730.2.123 NAME 'examplePerson' DESC 'Example Person Object Class' SUP inetOrgPerson AUXILIARY MUST cn MAY (exampleDateOfBirth $ examplePreferredOS) )
CAUTION
Be sure to specify the exact object class or attribute to remove; using only theattributetypesorobjectclassesattribute without the value will delete every user-defined attribute or object class in the file.
99user.ldif, edit the file directly. Neither the Directory Server Console nor LDAP tools can edit a schema file other than 99user.ldif.
cn=schema entry. Each attribute and object class is added as an attribute to that entry. Here are the requirements for creating a schema file:
- The first line must be
dn: cn=schema. - The schema file can include both attributes and object classes, but it can also include only one or the other.
- If both attributes and object classes are defined in the style, all of the attributes must be listed in the file first, then all of the attributes must be listed first, then the object classes.
- The object classes can use attributes defined in other schema files.
- The file must be named in the format
[1-9][0-9]text.ldif.The file must always begin with two numbers. Numerically, the schema file cannot be loaded after the core configuration schema (which begin with00and01).Also, the Directory Server always writes its custom schema to the numerically and alphabetically highest named schema file in the schema directory. It expects this file to be99user.ldif. If this file is not99user.ldif, the server can experience problems. So, always make sure custom schema files are at least alphabetically lower than99user.ldif. The name99alpha.ldifis okay; the name99zzz.ldifis not.
attributetypes attributes to the schema, with five components:
- An OID, usually a dot-separated number
- A unique name, in the form
NAMEname - A description, in the form
DESCdescription - The OID for the syntax of the attribute values, listed in Table 6.1, “Supported LDAP Attribute Syntaxes”, in the form
SYNTAXOID - Optionally, the source where the attribute is defined
attributetypes: ( 1.2.3.4.5.6.1 NAME 'dateofbirth' DESC 'For employee birthdays' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUED X-ORIGIN 'Example defined')
objectclasses attributes, although there is slightly more flexibility in how the object class is defined. The only required configurations are the name and OID for the object class; all other configuration depends on the needs for the object class:
- An OID, usually a dot-separated number
- A unique name, in the form
NAMEname - A description, in the form
DESCdescription - The superior, or parent, object class for this object class, in the form
SUPobject_class; if there is no related parent, useSUP top - The word
AUXILIARY, which gives the type of entry to which the object class applies;AUXILIARYmeans it can apply to any entry - A list of required attributes, preceded by the word
MUST; to include multiple attributes, enclose the group in parentheses and separate with attributes with dollar signs ($) - A list of allowed attributes, preceded by the word
MAY; to include multiple attributes, enclose the group in parentheses and separate with attributes with dollar signs ($)
objectclasses: ( 2.16.840.1133730.2.123 NAME 'examplePerson' DESC 'Example Person Object Class' SUP inetOrgPerson AUXILIARY MUST cn MAY (exampleDateOfBirth $ examplePreferredOS) )
Example 6.3. Example Schema File
dn: cn=schema attributetypes: ( 2.16.840.1133730.1.123 NAME 'dateofbirth' DESC 'For employee birthdays' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'Example defined') objectclasses: ( 2.16.840.1133730.2.123 NAME 'examplePerson' DESC 'Example Person Object Class' SUP inetOrgPerson AUXILIARY MAY (dateofbirth) )
/etc/dirsrv/slapd-instance_name/schema. The schema in these files are not loaded and available to the server unless the server is restarted or a dynamic reload task is run.
- Using the
schema-reload.plscript - Adding a
cn=schema reloadtask entry usingldapmodify
schema-reload.pl script launches a special task to reload all of the schema files used by a specific Directory Server instance. This allows custom schema files to be loaded dynamically without having to add schema elements to 99user.ldif.
- Open the tool directory for the Directory Server instance,
/usr/lib/dirsrv/slapd-.instance_name/ - Run the script, binding as the Directory Manager.
./schema-reload.pl -D "cn=Directory Manager" -w secret
The Directory Server responds that it has added the new reload task entry.adding new entry cn=schema_reload_2009_1_6_17_52_4,cn=schema reload task,cn=tasks,cn=config
This reloads the schema from the default schema directory,/etc/dirsrv/slapd-, which is recommended. It is also possible to specify a different directory using theinstance_name/schema-doption../schema-reload.pl -D "cn=Directory Manager" -w password
-d /export/custom-schemaIMPORTANT
All of the schema is reloaded with the schema reload task, not just the newest schema or modified schema. This means that whatever directory is specified should contain the full schema for the Directory Server, or the Directory Server instance may have serious performance problems.
schema-reload.pl is described in more detail in the Configuration and Command-Line Tool Reference.
schema-reload.pl script creates a special task entry in a Directory Server instance which reloads schema files; it is also possible to reload schema by creating the task entry directly. Task entries occur under the cn=tasks configuration entry in the dse.ldif file, so it is also possible to initiate a task by adding the entry using ldapmodify. As soon as the task is complete, the entry is removed from the directory.
cn=schema reload task,cn=tasks,cn=config entry. The only required attribute is the cn for the specific task.
/usr/lib64/mozldap/ldapmodify -a -D "cn=directory manager" -w secret -p 389 -h server.example.com
dn: cn=example schema reload,cn=schema reload task,cn=tasks,cn=config
objectclass: extensibleObject
cn:example schema reload/etc/dirsrv/slapd-instance_name/schema; it is possible to specify a different schema directory using the schemadir attribute, which is analogous to the -d option with schema-reload.pl.
/usr/lib64/mozldap/ldapmodify -a -D "cn=directory manager" -w secret -p 389 -h server.example.com
dn: cn=example schema reload,cn=schema reload task,cn=tasks,cn=config
objectclass: extensibleObject
cn:example schema reload
schemadir: /export/schemaIMPORTANT
dse.ldif configuration, so it is possible to reuse the same task entry continually.
cn=schema reload task configuration is described in more detail in the Configuration and Command-Line Tool Reference.
- Stop replication.
- Copy the new schema file over and run the schema reload task for every supplier and replica server.
- Restart replication.
adding new entry cn=schema reload task 1, cn=schema reload task, cn=tasks, cn=config
[06/Jan/2009:17:52:04 -0500] schemareload - Schema reload task starts (schema dir: default) ... [06/Jan/2009:17:52:04 -0500] schemareload - Schema validation passed. [06/Jan/2009:17:52:04 -0500] schemareload - Schema reload task finished.
[..] schemareload - Schema reload task starts (schema dir: /bogus) ... [..] schema - No schema files were found in the directory /bogus [..] schema_reload - schema file validation failed [..] schemareload - Schema validation failed.
- The object classes and attributes using are defined in the directory schema.
- The attributes required for an object class are contained in the entry.
- Only attributes allowed by the object class are contained in the entry.
- In the Directory Server Console, select the Configuration tab.

- Highlight the server icon at the top of the navigation tree, then select the Settings tab in the right pane.
- To enable schema checking, check the Enable Schema Checking checkbox; clear it to turn off schema checking.

- Click .
nsslapd-schemacheck attribute. For example:
/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 -h server.example.com dn: cn=config changetype: modify replace: nsslapd-schemacheck: on nsslapd-schemacheck: off
telephoneNumber attribute actually has a valid telephone number for its value.
-E flag with db2ldif and ldif2db, which allows syntax validation to occur just fine for the import operation. However, if the encrypted database is exported without using the -E flag (which is not supported), then an LDIF with encrypted values is created. When this LDIF is then imported, the encrypted attributes cannot be validated, a warning is logged, and attribute validation is skipped in the imported entry.
nsslapd-syntaxcheck attribute. The value of this attribute is either on or off (by default, this is on). To change the syntax validation, modify this attribute using ldapmodify or by editing the dse.ldif file directly.
/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 dn: cn=config changetype: modify replace: nsslapd-syntaxcheck nsslapd-syntaxcheck: off
TIP
syntax-validate.pl script to audit existing attribute values before re-enabling syntax validation. See Section 6.9.6, “Validating the Syntax of Existing Attribute Values”.
on or off (by default, this is off). To change the syntax validation, modify this attribute using ldapmodify or by editing the dse.ldif file directly.
/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 dn: cn=config changetype: modify replace: nsslapd-dn-validate-strict nsslapd-dn-validate-strict: on
TIP
nsslapd-normalize-nested-dn attribute. The primary DN will be validated and normalized as expected.
nsslapd-syntaxlogging attribute enables error logging for any syntax violations.
NOTE
nsslapd-syntaxlogging and nsslapd-syntaxcheck are both enabled, then any invalid attribute modification is rejected and the message written to the log. If nsslapd-syntaxlogging is enabled but nsslapd-syntaxcheck is disabled, then the operation is allowed to succeed, but the warning message is still written to the error log.
on or off (by default, this is off). To enable syntax validation logging, edit the attribute using ldapmodify or by editing the dse.ldif file directly.
/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 dn: cn=config changetype: modify replace: nsslapd-syntaxlogging nsslapd-syntaxlogging: on
-b option) and, optionally, only entries which match a specified filter (in the -f option). For example:
/usr/lib64/dirsrv/instance_name/syntax-validate.pl -D "cn=directory manager" -w secret -b "ou=people,dc=example,dc=com" -f "objectclass=inetorgperson)"TIP
/usr/lib64/mozldap/ldapmodify -a -D "cn=directory manager" -w secret -p 389 -h server.example.com
dn: cn=example, cn=syntax validation,cn=tasks,cn=config
objectclass: extensibleObject
cn:example
basedn: ou=people,dc=example,dc=com
filter: "(objectclass=inetorgperson)"cn.db4 file.
- Presence index (pres) contains a list of the entries that contain a particular attribute, which is very useful for searched. For example, it makes it easy to examine any entries that contain access control information. Generating an
aci.db4file that includes a presence index efficiently performs the search forACI=*to generate the access control list for the server.The presence index is not used for base object searches. - Approximate index (approx) is used for efficient approximate or sounds-like searches. For example, an entry may include the attribute value
cn=Robert E Lee. An approximate search would return this value for searches againstcn~=Robert Lee,cn~=Robert, orcn~=Lee. Similarly, a search againstl~=San Fransisco(note the misspelling) would return entries includingl=San Francisco. - Substring index (sub) is a costly index to maintain, but it allows efficient searching against substrings within entries. Substring indexes are limited to a minimum of three characters for each entry.For example, searches of the form
cn=*derson, match the common names containing strings such asBill Anderson,Jill Henderson, orSteve Sanderson. Similarly, the search fortelephoneNumber= *555*returns all the entries in the directory with telephone numbers that contain555. - International index speeds up searches for information in international directories. The process for creating an international index is similar to the process for creating regular indexes, except that it applies a matching rule by associating an object identifier (OID) with the attributes to be indexed.The supported locales and their associated OIDs are listed in Appendix C, Internationalization. If there is a need to configure the Directory Server to accept additional matching rules, contact Red Hat Professional Services.
- Browsing index, or virtual list view (VLV) index, speeds up the display of entries in the Directory Server Console. This index is particularly useful if a branch of your directory contains hundreds of entries; for example, the
ou=peoplebranch. You can create a browsing index on any branch point in the directory tree to improve display performance through the Directory Server Console or by using thevlvindexcommand-line tool, which is explained in the Directory Server Configuration and Command-Line Tool Reference.
Table 7.1. Default Indexes
| Attribute | Eq | Pres | Sub | Purpose |
|---|---|---|---|---|
| cn |
|
|
| Improves the performance of the most common types of user directory searches. |
| givenname |
|
|
| Improves the performance of the most common types of user directory searches. |
|
|
| Improves the performance of the most common types of user directory searches. | |
| mailHost |
| Used by a messaging server. | ||
| member |
| Improves Directory Server performance. This index is also used by the Referential Integrity Plug-in. See Section 3.5, “Maintaining Referential Integrity” for more information. | ||
| owner |
| Improves Directory Server performance. This index is also used by the Referential Integrity Plug-in. See Section 3.5, “Maintaining Referential Integrity” for more information. | ||
| see Also |
| Improves Directory Server performance. This index is also used by the Referential Integrity Plug-in. See Section 3.5, “Maintaining Referential Integrity” for more information. | ||
| sn |
|
|
| Improves the performance of the most common types of user directory searches. |
| telephoneNumber |
|
|
| Improves the performance of the most common types of user directory searches. |
| uid |
| Improves Directory Server performance. | ||
| unique member |
| Improves Directory Server performance. This index is also used by the Referential Integrity Plug-in. See Section 3.5, “Maintaining Referential Integrity” for more information. |
Table 7.2. System Indexes
id2entry.db4, exists by default in Directory Server; you do not need to generate it.
id2entry.db4 contains the actual directory database entries. All other database files can be recreated from this one.
cn, common name, attribute) and a pointer to the entries corresponding to each value. Directory Serverprocesses a search request as follows:
- An LDAP client application sends a search request to the directory.
- The directory examines the incoming request to make sure that the specified base DN matches a suffix contained by one or more of its databases or database links.
- If they do match, the directory processes the request.
- If they do not match, the directory returns an error to the client indicating that the suffix does not match. If a referral has been specified in the
nsslapd-referralattribute undercn=config, the directory also returns the LDAP URL where the client can attempt to pursue the request. - If the search request for each database attribute can be satisfied by a single index, then the server reads that index to generate a list of potential matches.
- If there is no index for the attribute, the directory generates a candidate list that includes all entries in the database, which makes the search considerably slower.
- If a search request contains multiple attributes, the directory consults multiple indexes and then combines the resulting lists of candidate entries.
- If there is an index for the attribute, the directory takes the candidate matches from the index files in the form of a series of entry ID numbers.
- The directory uses the returned entry ID numbers to read the corresponding entries from the
id2entry.db4file. The Directory Server then examines each of the candidate entries to see if any match the search criteria. The directory returns matching entries to the client as each is found.The directory continues until either it has examined all candidate entries or it reaches the limit set in one of the following attributes:nsslapd-sizelimitwhich specifies the maximum number of entries to return from a search operation. If this limit is reached, the directory returns any entries it has located that match the search request, as well as an exceeded size limit error.nsslapd-timelimitwhich specifies the maximum number of seconds allocated for a search request. If this limit is reached, the directory returns any entries it has located that match the search request, as well as an exceeded time limit error.nsslapd-lookthroughlimit, which specifies the maximum number of entries that the directory will check when examining candidate entries in response to a search request.nsslapd-idlistscanlimitwhich specifies the maximum number of entries in an ID list before the list is considered to equal the entire database.
See Directory Server Configuration and Command-Line Tool Reference for further information about these attributes.
NOTE
- All of the query string codes match the codes generated in the entry string.
- All of the query string codes are in the same order as the entry string codes.
| Name in the Directory (Phonetic Code) | Query String (Phonetic code) | Match Comments |
|---|---|---|
| Alice B Sarette (ALS B SRT) | Alice Sarette (ALS SRT) | Matches. Codes are specified in the correct order. |
| Alice Sarrette (ALS SRT) | Matches. Codes are specified in the correct order, despite the misspelling of Sarette. | |
| Surette (SRT) | Matches. The generated code exists in the original name, despite the misspelling of Sarette. | |
| Bertha Sarette (BR0 SRT) | No match. The code BR0 does not exist in the original name. | |
| Sarette, Alice (SRT ALS) | No match. The codes are not specified in the correct order. |
- The ID list structures, which were the province of the Directory Server backend and opaque to the storage manager.
- The storage manager structures (Btrees), which were opaque to the Directory Server backend code.
entire list had changed. For a single ID that was inserted or deleted from an ID list, the corresponding number of bytes written to the transaction log was the maximum configured size for that ID list, about 8 kilobytes. Also, every database page on which the list was stored was marked as dirty, since the entire list had changed.
- For long ID lists, the number of bytes written to the transaction log for any update to the list is significantly reduced, from the maximum ID list size (8 kilobytes) to twice the size of one ID (4 bytes).
- For short ID lists, storage efficiency, and in most cases performance, is improved because only the storage manager meditate need to be stored, not the ID list metadata.
- The average number of database pages marked as dirty per ID insert or delete operation is very small because a large number of duplicate keys will fit into each database page.
nsslapd-idlistscanlimit, sets a limit on the number of IDs that are read before a key is considered to match the entire primary index. nsslapd-idlistscanlimit is analogous to the All IDs Threshold, but it only applies to the behavior of the server's search code, not the content of the database.
objectclass=inetorgperson in a directory that contained one million inetorgperson entries. When the server reads the inetorgperson index key in the objectclass index, it finds one million matching entries. In cases like this, it is more efficient simply to conclude in the index lookup phase of the search operation processing that all the entries in the database match the query. This causes subsequent search processing to scan the entire database content, checking each entry as to whether it matches the search filter. The time required to fetch the index keys is not worthwhile; the search operation is likely to be processed more efficiently by omitting the index lookup.
idlistscanlimit and is configured with the nsslapd-idlistscanlimit configuration attribute. The default value is 4000, which is designed to give good performance for a common range of database sizes and access patterns. Typically, it is not necessary to change this value. However, in rare circumstances it may be possible to improve search performance with a different value. For example, lowering the value will improve performance for searches that will otherwise eventually hit the default limit of 4000. This might reduce performance for other searches that benefit from indexing. Conversely, increasing the limit could improve performance for searches that were previously hitting the limit. With a higher limit, these searches could benefit from indexing where previously they did not.
Netscape-ldbm/6.2 (old database version), Netscape-ldbm/7.1 (new database format), or bdb/4.2/libback-ldbm (new database format). If the file indicates that the old format is used, then the old code is selected for the database. Because the DBVERSION file stores everything per-backend, it is possible to have different database formats for different individual backends, but the old database format is not recommended.
nsslapd-dbcachesize entry in the Directory Server Configuration and Command-Line Tool Reference.
- Approximate indexes are not efficient for attributes commonly containing numbers, such as telephone numbers.
- Substring indexes do not work for binary attributes.
- Equality indexes should be avoided if the value is big (such as attributes intended to contain photographs or passwords containing encrypted data).
- Maintaining indexes for attributes not commonly used in a search increases overhead without improving global searching performance.
- Attributes that are not indexed can still be specified in search requests, although the search performance may be degraded significantly, depending on the type of search.
- The more indexes you maintain, the more disk space you require.
- The Directory Server receives an add or modify operation.
- The Directory Server examines the indexing attributes to determine whether an index is maintained for the attribute values.
- If the created attribute values are indexed, then the Directory Server generates the new index entries.
- Once the server completes the indexing, the actual attribute values are created according to the client request.
dn: cn=John Doe,ou=People,dc=example,dc=com objectclass: top objectClass: person objectClass: orgperson objectClass: inetorgperson cn: John Doe cn: John sn: Doe ou: Manufacturing ou: people telephoneNumber: 408 555 8834 description: Manufacturing lead for the Z238 line of widgets.
- Equality, approximate, and substring indexes for
cn(common name) andsn(surname) attributes. - Equality and substring indexes for the telephone number attribute.
- Substring indexes for the description attribute.
- Create the
cnequality index entry forJohnandJohn Doe. - Create the appropriate
cnapproximate index entries forJohnandJohn Doe. - Create the appropriate
cnsubstring index entries forJohnandJohn Doe. - Create the
snequality index entry forDoe. - Create the appropriate
snapproximate index entry forDoe. - Create the appropriate
snsubstring index entries forDoe. - Create the telephone number equality index entry for
408 555 8834. - Create the appropriate telephone number substring index entries for
408 555 8834. - Create the appropriate description substring index entries for
Manufacturing lead for the Z238 line of widgets. A large number of substring entries are generated for this string.
db2index.pl script or run a cn=index,cn=tasks task, as described in Section 7.3, “Applying New Indexes to Existing Databases”.
- Select the Configuration tab.
- Expand the Data node, expand the suffix of the database to index, and select the database.
- Select the Indexes tab in the right pane.

NOTE
Do not click the Database Settings node because this opens the Default Index Settings window, not the window for configuring indexes per database. - If the attribute to be indexed is listed in the Additional Indexes table, go to step 6. Otherwise, click Add Attribute to open a dialog box with a list of all of the available attributes in the server schema.

- Select the attribute to index, and click .
The server adds the attribute to the Additional Indexes table. 
- To create an index for a language other than English, enter the OID of the collation order to use in the Matching Rules field.To index the attribute using multiple languages, list multiple OIDs separated by commas, but no whitespace. For a list of languages, their associated OIDs, and further information regarding collation orders, see Appendix C, Internationalization.
- Click .
NOTE
- To create a new index that will become one of the default indexes, add the new index attributes to the
cn=default indexes,cn=config,cn=ldbm database,cn=plugins,cn=configentry. - To create a new index for a particular database, add it to the
cn=index,cn=database_name,cn=ldbm database,cn=plugins,cn=configentry, wherecn=database_name corresponds to the name of the database.
NOTE
cn=config in the dse.ldif file. The cn=config entry in the simple, flat dse.ldif configuration file is not stored in the same highly scalable database as regular entries. As a result, if many entries, particularly entries that are likely to be updated frequently, are stored under cn=config, performance will probably suffer. Although we recommend you do not store simple user entries under cn=config for performance reasons, it can be useful to store special user entries such as the Directory Manager entry or replication manager (supplier bind DN) entry under cn=config since this centralizes configuration information.
sn (surname) attribute in the Example1 database:
- Open the Directory Server LDAP tool directory.
cd /usr/lib64/mozldap
- Run
ldapmodify./usr/lib64/mozldap/ldapmodify
-a-D "cn=directory manager" -w secret -p 389 -h server.example.comTheldapmodifyutility binds to the server and prepares it to add an entry to the configuration file. - Add the LDIF entry for the new indexes:
dn: cn=sn,cn=index,cn=Example1,cn=ldbm database,cn=plugins,cn=config objectClass:top objectClass:nsIndex cn:sn nsSystemIndex:false nsIndexType:pres nsIndexType:eq nsIndexType:sub nsMatchingRule:2.16.840.1.113730.3.3.2.3.1
Thecnattribute contains the name of the attribute to index, in this example thesnattribute. The entry is a member of thensIndexobject class. ThensSystemIndexattribute isfalse, indicating that the index is not essential to Directory Server operations. The multi-valuednsIndexTypeattribute specifies the presence (pres), equality (eq) and substring (sub) indexes. Each keyword has to be entered on a separate line. ThensMatchingRuleattribute in the example specifies the OID of the Bulgarian collation order; the matching rule can indicate any possible value match, such as languages or other formats like date or integer.You can use the keywordnonein thensIndexTypeattribute to specify that no indexes are to be maintained for the attribute. This example temporarily disables thesnindexes on theExample1database by changing thensIndexTypetonone:dn: cn=sn,cn=index,cn=Example1,cn=ldbm database,cn=plugins,cn=config objectClass:top objectClass:nsIndex cn:sn nsSystemIndex:false nsIndexType:none
ldapmodify command-line utility, see the Directory Server Configuration and Command-Line Tool Reference.
NOTE
uid for the user ID attribute.
db2index.pl script or running a cn=index,cn=tasks task.
db2index.pl script to generate the new set of indexes to be maintained by the Directory Server. After the script is run, the new set of indexes is active for any new data added to the directory and any existing data in the directory.
- Open the Directory Server instance directory.
cd /etc/dirsrv/slapd-
instance_name - Run the
db2index.plPerl script.db2index.pl-D "cn=Directory Manager" -w secret -n ExampleServer -t sn
For more information about using this Perl script, see the Directory Server Configuration and Command-Line Tool Reference.
db2index.pl options.
Table 7.3. db2index.pl Options
| Option | Description |
|---|---|
| -D | Specifies the DN of the administrative user. |
| -w | Specifies the password of the administrative user. |
| -n | Specifies the name of the database being indexed. |
| -t | Specifies the name of the attribute contained by the index. |
cn=tasks,cn=config entry in the Directory Server configuration is a container entry for temporary entries that the server uses to manage tasks. Several common directory tasks have container entries under cn=tasks,cn=config. Temporary task entries can be created under cn=index,cn=tasks,cn=config to initiate an indexing operation.
cn) and a definition for the attribute and type of index, set in nsIndexAttribute in the format attribute:index_type.
/usr/lib64/mozldap/ldapmodify -a -D "cn=directory manager" -w secret -p 389 -h server.example.com
dn: cn=example presence index,cn=index,cn=tasks,cn=config
objectclass: extensibleObject
cn: example presence index
nsIndexAttribute: "cn:pres"presfor presence indexeseqfor equality indexessubfor substring indexes
cn=tasks entries.
NOTE
- Select the Directory tab.
- In the left navigation tree, select the entry, such as
People, for which to create the index. - From the Object menu, select Create Browsing Index.
The Create Browsing Index dialog box appears displaying the status of the index creation. Click the Status Logs box to view the status of the indexes created.
- Click .
- Using
ldapmodifyto add new browsing index entries or edit existing browsing index entries. See Section 7.4.2.1, “Adding a Browsing Index Entry”. - Running the
vlvindexscript to generate the new set of browsing indexes to be maintained by the server. See Section 7.4.2.2, “Running the vlvindex Script”. Alternatively, launch an appropriate task undercn=tasks,cn=config(Section 7.4.2.3, “Using a cn=tasks Entry to Create a Browsing Index”). - Ensuring that access control on VLV index information is set appropriately. See Section 7.4.3, “Setting Access Control for VLV Information”.
ldapsearch attribute sorting to accelerate. It is important to take the following into account:
- The scope of the search (base, one, sub)
- The base of the search (the entry to use as a starting point for the search)
- The attributes to sort
- The filter of the searchFor more information on specifying filters for searches, see Chapter 8, Finding Directory Entries.
- The LDBM database to which the entry that forms the base of the search belongs. You can only create browsing indexes in LDBM databases.
ldapsearch options in the Directory Server Configuration and Command-Line Tool Reference.
ldapsearch on the entry ou=People,dc=example,dc=com held in the Example1 database with the following attributes:
- The search base is
ou=People,dc=example,dc=com - The search filter is
(|(objectclass=*)(objectclass=ldapsubentry)) - The scope is
one - The sorting order for the returned attributes is
cn,givenname,o,ou, andsn
- Run
ldapmodify./usr/lib64/mozldap/ldapmodify
-a-D "cn=directory manager" -w secret -p 389 -h server.example.comTheldapmodifyutility binds to the server and prepares it to add an entry to the configuration file. - Add an entry which specifies the base, scope, and filter of the browsing index:
dn: cn=MCC ou=People dc=example dc=com,cn=userRoot,cn=ldbm database,cn=plugins,cn=config objectClass: top objectClass: vlvSearch cn: MCC ou=People dc=example dc=com vlvBase: ou=People,dc=example,dc=com vlvScope: 1 vlvFilter: (|(objectclass=*)(objectclass=ldapsubentry))
- The
cncontains the browsing index identifier, which specifies the entry on which to create the browsing index; in this example, theou=People,dc=example,dc=comentry. Red Hat recommends using thednof the entry for the browsing index identifier, which is the approach adopted by the Directory Server Console, to prevent identical browsing indexes from being created. The entry is a member of thevlvSearchobject class. - The
vlvbaseattribute value specifies the entry on which you want to create the browsing index; in this example, theou=People,dc=example,dc=comentry (the browsing index identifier). - The
vlvscopeattribute is1, indicating that the scope for the search you want to accelerate is1. A search scope of1means that only the immediate children of the entry specified in thecnattribute, and not the entry itself, will be searched. - The
vlvfilterspecifies the filter to be used for the search; in this example,(|(objectclass=*)(objectclass=ldapsubentry)).
- Add the second entry, to specify the sorting order for the returned attributes:
dn: cn=by MCC ou=People dc=example dc=com,cn=MCC ou=People dc=example dc=com,cn=userRoot,cn=ldbm database,cn=plugins, cn= config objectClass: top objectClass: vlvIndex cn: by MCC ou=People dc=example dc=com vlvSort: cn givenName o ou sn
- The
cncontains the browsing index sort identifier. The abovecnis the type created by the Console by default, which has the sorting order as being set by the browsing index base. The entry is a member of thevlvIndexobject class. - The
vlvsortattribute value specifies the order in which you want your attributes to be sorted; in this example,cn,givenName,o,ou, and thensn.
NOTE
cn=database_name,cn=ldbm database,cn=plugins,cn=config directory tree node, and the second entry must be a child of the first entry.
vlvindex script to generate the new set of browsing indexes to be maintained by the Directory Server. After running the script, the new set of browsing indexes is active for any new data added to the directory and any existing data in the directory.
vlvindex script:
- Open the Directory Server instance directory.
cd /etc/dirsrv/slapd-
instance_name - Stop the server.
service dirsrv stop
instance - Run the
vlvindexscript.vlvindex -n Example1 -T "by MCC ou=people dc=example dc=com"
For more information about using this script, see the Directory Server Configuration and Command-Line Tool Reference. - Restart the server.
service dirsrv start
instance
vlvindex options used in the examples:
Table 7.4. vlvindex Options
| Option | Description |
|---|---|
| -n | Name of the database containing the entries to index. |
| -T | Browsing index identifier to use to create browsing indexes. |
vlvindex script, it is possible to initiate an indexing task directly.
NOTE
vlvindex script.
cn=tasks,cn=config entry in the Directory Server configuration is a container entry for temporary entries that the server uses to manage tasks. Several common directory tasks have container entries under cn=tasks,cn=config. Temporary task entries can be created under cn=index,cn=tasks,cn=config to initiate an indexing operation.
cn) and one other attribute, nsIndexVLVAttribute, which gives the name of the browsing index definition entry to use to generate the VLV index.
/usr/lib64/mozldap/ldapmodify -a -D "cn=directory manager" -w secret -p 389 -h server.example.com
dn: cn=example VLV index,cn=index,cn=tasks,cn=config
objectclass: extensibleObject
cn: example VLV index
nsIndexVLVAttribute: "by MCC ou=people,dc=example,dc=com"cn=tasks entries.
cn: VLV Request Control in the Directory Server's configuration.
- Open the Directory Server configuration directory:
cd /etc/dirsrv/slapd-
instance_name - In a text editor, open the
dse.ldiffile. - Locate the
oid=2.16.840.1.113730.3.4.9entry.dn: oid=2.16.840.1.113730.3.4.9,cn=features,cn=config objectClass: top objectClass: directoryServerFeature oid: 2.16.840.1.113730.3.4.9 cn: VLV Request Control aci: (targetattr != "aci")(version 3.0; acl "VLV Request Control"; allow( read, search, compare, proxy ) userdn = "ldap:///all" ;) creatorsName: cn=server,cn=plugins,cn=config modifiersName: cn=server,cn=plugins,cn=config ... - Change
"ldap://all"to"ldap://anyone"and save your changes.
- Select the Configuration tab.
- Expand the Data node, expand the suffix of the database to index, and select the database.
- Select the Indexes tab in the right pane.
- Select the index, and, in the Matching Rules field, enter the new sort order to use. For example, to sort by numbers, rather than alphabetically, enter
integerOrderingMatch.
- Click .
nsMatchingRule for the attribute index. For example:
/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 dn: cn=sn,cn=index,cn=Example1,cn=ldbm database,cn=plugins,cn=config changetype:modify replace:nsMatchingRule nsMatchingRule:integerOrderingMatch
abc would be an indexed search while ab* would not be. Indexed searches are significantly faster than unindexed searches, so changing the minimum length of the search key is helpful to increase the number of indexed searches.
- The
nsSubStrBeginattribute sets the required number of characters for an indexed search for the beginning of a search string, before the wildcard.abc*
- The
nsSubStrMiddleattribute sets the required number of characters for an indexed search where a wildcard is used in the middle of a search string. For example:ab*z
- The
nsSubStrEndattribute sets the required number of characters for an indexed search for the end of a search string, after the wildcard. For example:*xyz
extensibleObject object class to the entry and then set the substring search lengths.
- Set the new key length for the specific attribute index. This requires adding the
extensibleObjectobject class and then adding thensSubStrBegin,nsSubStrEnd, ornsSubStrMiddleattributes as appropriate. For example:/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 -h server.example.com dn:
attribute_name,cn=index,cn=database_name,cn=ldbm database,cn=plugins,cn=config objectClass: extensibleObject nsSubStrBegin: 2 nsSubStrMiddle: 2 nsSubStrEnd: 2 - Stop the server.
service dirsrv stop
- Recreate the attribute index. If even one of the substring search width options is changed, then the entire index must be recreated.
db2index -t
attribute_name - Start the server again.
service dirsrv start
NOTE
WARNING
cn=index,cn=instance,cn=ldbm database,cn=plugins,cn=config entry and the cn=default indexes,cn=config,cn=ldbm database,cn=plugins,cn=config entry.
NOTE
- Select the Configuration tab.
- Expand the Data node and expand the suffix associated with the database containing the index.
- Select the database from which to delete the index.

- Locate the attribute containing the index to delete. Clear the checkbox under the index.To delete all indexes maintained for a particular attribute, select the attribute's cell under Attribute Name, and click .

- Click .A Delete Index warning dialog box opens, requiring a confirmation to delete the index.
- Click to delete the index.
ldapdelete command-line utility has two steps:
- Delete an entire index entry or delete unwanted index types from an existing index entry using the
ldapdeletecommand-line utility (Section 7.7.2.1, “Deleting an Index Entry”). - Generate the new set of indexes to be maintained by the server using the
db2index.plPerl script (Section 7.7.2.2, “Running the db2index.pl Script”).
ldapdelete command-line utility to delete either the entire indexing entry or the unwanted index types from an existing entry.
- To delete the indexes for a particular database, remove the index entry from the
cn=index,cn=database_name,cn=ldbm database,cn=plugins,cn=configentry, wherecn=database_name corresponds to the name of the database. - To delete a default index, remove it from the
cn=default indexes,cn=config,cn=ldbm database,cn=plugins,cn=configentry.
- Run
ldapdelete.[6]ldapdelete -D "cn=Directory Manager" -w secret -h ExampleServer -p 389 "cn=sn,cn=index,cn=Example1,dn=ldbm database,cn=plugins,dn=config"For complete information onldapdelete, see the Directory Server Configuration and Command-Line Tool Reference. - For example, delete the presence, equality, and substring indexes for the
snattribute on the database namedExample1:dn: cn=sn,cn=index,cn=Example1,cn=ldbm database,cn=plugins,cn=config objectClass:top objectClass:nsIndex cn:sn nsSystemIndex:false nsIndexType:pres nsIndexType:eq nsIndexType:sub nsMatchingRule:2.16.840.1.113730.3.3.2.3.1
ldapdelete options.
Table 7.5. ldapdelete Options
| Option | Description |
|---|---|
| -D | Specifies the distinguished name with which to authenticate to the server. The value must be a DN recognized by the Directory Server, and it must also have the authority to modify the entries. |
| -w |
Specifies the password associated with the distinguished name specified in the -D option.
|
| -h | Specifies the name of the host on which the server is running. |
| -p | Specifies the port number that the server uses. |
sn attribute are no longer maintained by the Example1 database.
db2index.pl script to generate the new set of indexes to be maintained by the Directory Server. Once you run the script, the new set of indexes is active for any new data you add to your directory and any existing data in your directory.
db2index.pl Perl script:
- Open the Directory Server instance directory.
cd /etc/dirsrv/slapd-
instance_name - Run the
db2index.plPerl script. For example:db2index.pl-D "cn=Directory Manager" -w secret -n Example1
db2index.pl Perl script, refer to Directory Server Configuration and Command-Line Tool Reference. Table 7.6, “db2index Options” describes the db2index.pl options used in the examples:
Table 7.6. db2index Options
| Option | Description |
|---|---|
| -D | Specifies the DN of the administrative user. |
| -w | Specifies the password of the administrative user. |
| -n | Specifies the name of the database into which you are importing the data. |
- Select the Directory tab.
- Select the entry from which to delete the index in the navigation tree, and select Delete Browsing Index from the Object menu.Alternatively, select and right-click the entry of the index to delete in the navigation tree, and then choose Delete Browsing Index from the pop-up menu.

- A Delete Browsing Index dialog box appears asking you to confirm the deletion of the index. Click .
- The Delete Browsing Index dialog box appears displaying the status of the index deletion.
- Using the
ldapdeleteto delete browsing index entries or edit existing browsing index entries (Section 7.7.4.1, “Deleting a Browsing Index Entry”). - Running the
vlvindexscript to generate the new set of browsing indexes to be maintained by the server (Section 7.7.4.2, “Running the vlvindex Script”). Alternatively, launch an appropriate task undercn=tasks,cn=config(Section 7.4.2.3, “Using a cn=tasks Entry to Create a Browsing Index”).
ldapdelete command-line utility to either delete browsing indexing entries or edit existing browsing index entries. To delete browsing indexes for a particular database, remove the browsing index entries from the cn=index,cn=database_name,cn=ldbm database,cn=plugins,cn=config entry, where cn=database_name corresponds to the name of the database.
ldapsearch operations on the entry ou=People,dc=example,dc=com. It held in the Example1 database where the search base is ou=People,dc=example,dc=com, the search filter is (|(objectclass=*)(objectclass=ldapsubentry)), the scope is 1, and the sorting order for the returned attributes is cn, givenname, o, ou, and sn.
- Run
ldapdelete.[6]ldapdelete-D "cn=Directory Manager" -w secret -h ExampleServer -p 389 "cn=MCC ou=People dc=example dc=com,cn=userRoot,cn=ldbm database,cn=plugins,cn=config" "cn=by MCC ou=People dc=example dc=com,cn=MCC ou=People dc=example dc=com,cn=userRoot,cn=ldbm database,cn=plugins,cn=config"
For full information onldapdeleteoptions, see the Directory Server Configuration and Command-Line Tool Reference. - To delete this browsing index, delete the two corresponding browsing index entries:
dn: cn=MCC ou=People dc=example dc=com,cn=userRoot,cn=ldbm database,cn=plugins,cn=config objectClass: top objectClass: vlvSearch cn: MCC ou=People dc=example dc=com vlvBase: ou=People,dc=example,dc=com vlvScope: 1 vlvFilter: (|(objectclass=*)(objectclass=ldapsubentry)) dn: cn=by MCC ou=People dc=example dc=com,cn=MCC ou=People dc=example dc=com,cn=userRoot,cn=ldbm database,cn=plugins,cn=config objectClass: top objectClass: vlvIndex cn: by MCC ou=People dc=example dc=com vlvSort: cn givenname o ou sn
ldapdelete options used in the example:
| Option | Description |
|---|---|
| -D | Specifies the distinguished name with which to authenticate to the server. The value must be a DN recognized by the Directory Server, and it must also have the authority to modify the entries. |
| -w |
Specifies the password associated with the distinguished name specified in the -D option.
|
| -h | Specifies the name of the host on which the server is running. |
| -p | Specifies the port number that the server uses. |
Example1 database.
vlvindex script to generate the new set of browsing indexes to be maintained by the Directory Server. After the script is run, the new set of browsing indexes is active for any new data added to the directory and any existing data in the directory.
- Open the Directory Server instance directory.
cd /etc/dirsrv/slapd-
instance_name - Stop the server.
service dirsrv stop
instance - Run the
vlvindexscript.vlvindex -n Example1 -T "by MCC ou=people dc=example dc=com"
For more information about using thevlvindexscript, see the Directory Server Configuration and Command-Line Tool Reference. - Restart the server.
service dirsrv start
instance
vlvindex options.
cn=index,cn=tasks,cn=config to initiate an indexing operation. This task entry requires a unique name (cn) and one other attribute, nsIndexVLVAttribute, which gives the name of the browsing index definition entry to use to generate the VLV index. This task is the same as running vlvindex.
/usr/lib64/mozldap/ldapmodify -a -D "cn=directory manager" -w secret -p 389 -h server.example.com
dn: cn=example VLV index,cn=index,cn=tasks,cn=config
objectclass: extensibleObject
cn: example VLV index
nsIndexVLVAttribute: "by MCC ou=people,dc=example,dc=com"cn=tasks entries.
/usr/lib64/mozldap directory on Red Hat Enterprise Linux 5 (64-bit); directories for other platforms are listed in Section 1.3, “LDAP Tool Locations”. However, Red Hat Enterprise Linux systems also include LDAP tools from OpenLDAP. It is possible to use the OpenLDAP commands as shown in the examples, but you must use the -x argument to disable SASL and allow simple authentication.
- 8.1. Finding Entries Using the Directory Server Console
- 8.2. Using ldapsearch
- 8.3. LDAP Search Filters
- 8.4. Examples of Common ldapsearches
- 8.4.1. Returning All Entries
- 8.4.2. Specifying Search Filters on the Command Line
- 8.4.3. Searching the Root DSE Entry
- 8.4.4. Searching the Schema Entry
- 8.4.5. Using LDAP_BASEDN
- 8.4.6. Displaying Subsets of Attributes
- 8.4.7. Searching for Operational Attributes
- 8.4.8. Specifying Search Filters Using a File
- 8.4.9. Specifying DNs That Contain Commas in Search Filters
- 8.4.10. Using Client Authentication When Searching
- 8.4.11. Searching with Specified Controls
- 8.4.12. Searching with Language Matching Rules
- 8.4.13. Searching for Attributes with Bit Field Values
- 8.5. Using Persistent Search
- 8.6. Performing Dereferencing Searches
- 8.7. Using Simple Paged Results
NOTE
WARNING
o=NetscapeRoot suffix using the Directory tab unless instructed to do so by Red Hat technical support.
ldapsearch command-line utility can locate and retrieve directory entries. This utility opens a connection to the specified server using the specified distinguished name and password and locates entries based on a specified search filter. The search scope can include a single entry, an entry's immediate subentries, or an entire tree or subtree.
ldapsearch. The MozLDAP tools are installed with Directory Server and are located in the /usr/lib64/mozldap directory for Red Hat Enterprise Linux 5 (64-bit), and in the /usr/lib/mozldap directory on Red Hat Enterprise Linux 5 (32-bit). When running any LDAP command, make sure to use the MozLDAP utilities, otherwise the command will return errors.
NOTE
/usr/bin/ directory. These OpenLDAP tools will not work for Directory Server operations.
ldapsearch command must use the following format:
/usr/lib64/mozldap/ldapsearch [optional_options] [optional_search_filter] [optional_list_of_attributes]
- optional_options is a series of command-line options. These must be specified before the search filter, if any are used.
- optional_search_filter is an LDAP search filter as described in Section 8.3, “LDAP Search Filters”. Do not specify a separate search filter if search filters are specified in a file using the
-foption. - optional_list_of_attributes is a list of attributes separated by a space. Specifying a list of attributes reduces the number of attributes returned in the search results. This list of attributes must appear after the search filter. For an example, see Section 8.4.6, “Displaying Subsets of Attributes”. If a list of attributes is not specified, the search returns values for all attributes permitted by the access control set in the directory (with the exception of operational attributes).
NOTE
For operational attributes to be returned as a result of a search operation, they must be explicitly specified in the search command. To retrieve regular attributes in addition to explicitly specified operational attributes, use an asterisk (*) in the list of attributes in theldapsearchcommand. To retrieve no attributes, just a list of the matching DNs, use the special attribute1.1. This is useful, for example, to get a list of DNs to pass to theldapdeletecommand.
ldapsearch command-line options. If a specified value contains a space ( ), the value should be surrounded by single or double quotation marks, such as -b "ou=groups,dc=example,dc=com".
| Option | Description | |||
|---|---|---|---|---|
| -b |
Specifies the starting point for the search. The value specified here must be a distinguished name that currently exists in the database. This is optional if the LDAP_BASEDN environment variable has been set to a base DN. The value specified in this option should be provided in single or double quotation marks. For example:
-b "cn=Barbara Jensen,ou=Product Development,dc=example,dc=com"To search the root DSE entry, specify an empty string here, such as -b "" .
| |||
| -D |
Specifies the distinguished name with which to authenticate to the server. This is optional if anonymous access is supported by the server. If specified, this value must be a DN recognized by the Directory Server, and it must also have the authority to search for the entries. For example, -D "uid=bjensen,dc=example,dc=com".
| |||
| -h |
Specifies the hostname or IP address of the machine on which the Directory Server is installed. For example, -h server.example.com. If a host is not specified, ldapsearch uses the localhost.
NOTE
Directory Server supports both IPv4 and IPv6 IP addresses.
| |||
| -l |
Specifies the maximum number of seconds to wait for a search request to complete. For example, -l 300. The default value for the nsslapd-timelimit attribute is 3600 seconds. Regardless of the value specified, ldapsearch will never wait longer than is allowed by the server's nsslapd-timelimit attribute.
| |||
| -p |
Specifies the TCP port number that the Directory Server uses. For example, -p 1049. The default is 389. If -Z is used, the default is 636.
| |||
| -s |
Specifies the scope of the search. The scope can be one of the following:
| |||
| -w |
Gives the password associated with the distinguished name that is specified in the -D option. If this option is not specified, anonymous access is used. For example, -w diner892.
| |||
| -x | Specifies that the search results are sorted on the server rather than on the client. This is useful for sorting according to a matching rule, as with an international search. In general, it is faster to sort on the server rather than on the client. | |||
| -z |
Sets the maximum number of entries to return in response to a search request. For example, -z 1000. Normally, regardless of the value specified here, ldapsearch never returns more entries than the number allowed by the server's nsslapd-sizelimit attribute. However, this limitation can be overridden by binding as the root DN when using this command-line argument. When binding as the root DN, this option defaults to zero (0). The default value for the nsslapd-sizelimit attribute is 2000 entries.
|
ldapsearch utility options, refer to the Directory Server Configuration and Command-Line Tool Reference.
ldapsearch command-line utility, it may be necessary to specify values that contain characters that have special meaning to the command-line interpreter, such as space ( ), asterisk (*), or backslash (\). Enclose the value which has the special character in quotation marks (""). For example:
-D "cn=Barbara Jensen,ou=Product Development,dc=example,dc=com"
ldapsearch command-line utility. When using ldapsearch, there can be multiple search filters in a file, with each filter on a separate line in the file, or a search filter can be specified directly on the command line.
attribute operator value buildingname>=alpha
buildingname is the attribute, >= is the operator, and alpha is the value. Filters can also be defined that use different attributes combined together with Boolean operators.
TIP
l and ends with the letter n, enter a l*n in the value portion of the search filter. Similarly, to search for all attribute values beginning with the letter u, enter a value of u* in the value portion of the search filter.
\5c2a. For example, to search for all employees with businessCategory attribute values of Example*Net product line, enter the following value in the search filter:
Example\5c2a*Net product line
manager attribute:
"(manager=*)"
"(cn=babs jensen)"
"(cn=babs jensen)" filter:
cn: babs jensen cn;lang-fr: babs jensen
"(description=*X.500*)" "(sn=*nderson)" "(givenname=car*)"
"(employeeNumber>=500)" "(sn~=suret)" "(salary<=150000)"
Table 8.1. Search Filter Operators
| Search Type | Operator | Description |
|---|---|---|
| Equality | = |
Returns entries containing attribute values that exactly match the specified value. For example, cn=Bob Johnson
|
| Substring | =string* string |
Returns entries containing attributes containing the specified substring. For example, cn=Bob* cn=*Johnson cn=*John* cn=B*John. The asterisk (*) indicates zero (0) or more characters.
|
| Greater than or equal to | >= |
Returns entries containing attributes that are greater than or equal to the specified value. For example, buildingname >= alpha.
|
| Less than or equal to | <= |
Returns entries containing attributes that are less than or equal to the specified value. For example, buildingname <= alpha.
|
| Presence | =* |
Returns entries containing one or more values for the specified attribute. For example, cn=* telephoneNumber=* manager=*.
|
| Approximate | ~= |
Returns entries containing the specified attribute with a value that is approximately equal to the value specified in the search filter. For example, cn~=suret l~=san fransico could return cn=sarette l=san francisco.
|
(Boolean-operator(filter)(filter)(filter)...)(!(cn=Ray Kultgen)) (!(objectClass=person))
(Boolean-operator(filter)((Boolean-operator(filter)(filter)))Marketing and whose description field does not contain the substring X.500:
(&(ou=Marketing)(!(description=*X.500*)))
Marketing, that do not have the substring X.500, and that have Julie Fulmer or Cindy Zwaska as a manager:
(&(ou=Marketing)(!(description=*X.500*))(|(manager=cn=Julie Fulmer,ou=Marketing,dc=example,dc=com)(manager=cn=Cindy Zwaska,ou=Marketing,dc=example,dc=com)))
printer3b:
(&(!(objectClass=person))(cn~=printer3b))
Table 8.2. Search Filter Boolean Operators
| Operator | Symbol | Description |
|---|---|---|
| AND | & | All specified filters must be true for the statement to be true. For example, (&(filter)(filter)(filter)...). |
| OR | | | At least one specified filter must be true for the statement to be true. For example, (|(filter)(filter)(filter)...) |
| NOT | ! |
The specified statement must not be true for the statement to be true. Only one filter is affected by the NOT operator. For example, (!(filter)).
|
- Innermost to outermost parenthetical expressions first.
- All expressions from left to right.
- EQUALITY specifies how to compare two values for an equal match. For example, how to handle strings like “Fred” and “FRED”. Search filters that test for equality (e.g. attribute=value) use the EQUALITY rule. Equality (eq) indexes use the EQUALITY rule to generate the index keys. Update operations use the EQUALITY rule to compare values to be updated with values already in an entry.
- ORDERING specifies how to compare two values to see if one value is greater or less than another value. Search filters that set a range (e.g. attribute<=value or attribute>=value) use the ORDERING rule. An index for an attribute with an ORDERING rule orders the equality values.
- SUBSTR specifies how to do substring matching. Substring search filters (e.g. attribute=*partial_string* or attribute=*end_string) use the SUBSTR rule. Substring (sub) indexes use the SUBSTR rule to generate the index keys.
IMPORTANT
NOTE
TIP
nsMatchingRule attribute, as in Section 7.2.2, “Creating Indexes from the Command Line”.
attr:matchingRule:=value
- attr is an attribute belonging to entries being searched, such as
cnormail. - matchingRule is a string that contains the name or OID of the rule to use to match attribute values according to the required syntax.
- value is either the attribute value to search for or a relational operator plus the attribute value to search for. The syntax of the value of the filter depends on the matching rule format used.
2.16.840.1.113730.3.3.2.17.1 identifies the Finnish collation order.
NOTE
Table 8.3. General Syntax Matching Rules
| Matching Rule | Object Identifiers (OIDs) | Definitions | Compatible Syntaxes | ||
|---|---|---|---|---|---|
| Bitwise AND Match | 1.2.840.113556.1.4.803 | Performs bitwise AND matches. |
Typically used with:[a]
| ||
| Bitwise OR Match | 1.2.840.113556.1.4.804 | Performs bitwise OR matches. |
Typically used with:[a]
| ||
| generalizedTimeMatch | 2.5.13.27 | Compares values that are in a Generalized Time format. | Generalized Time | ||
| generalizedTimeOrderingMatch | 2.5.13.28 | Allows ranged searches (less than and greater than) on values that are in a Generalized Time format. | Generalized Time | ||
| integerMatch | 2.5.13.14 | Evaluates integer values. | Integer | ||
| integerOrderingMatch | 2.5.13.15 | Allows ranged searches (less than and greater than) on integer values. | Integer | ||
| numericStringMatch | 2.5.13.8 | Compares more general numeric values. | Numeric String | ||
| numericStringOrderingMatch | 2.5.13.9 | Allows ranged searches (less than and greater than) on more general numeric values. | Numeric String | ||
| numericStringSubstringMatch | 2.5.13.10 | Compares more general numeric values. | Numeric String | ||
[a]
This has a special format; the value is converted to integer before being used by Directory Server.
| |||||
Table 8.4. Language Ordering Matching Rules
| Matching Rule | Object Identifiers (OIDs) |
|---|---|
| English (Case Exact Ordering Match) | 2.16.840.1.113730.3.3.2.11.3 |
| Albanian (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.44.1 |
| Arabic (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.1.1 |
| Belorussian (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.2.1 |
| Bulgarian (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.3.1 |
| Catalan (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.4.1 |
| Chinese - Simplified (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.49.1 |
| Chinese - Traditional (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.50.1 |
| Croatian (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.22.1 |
| Czechoslovakian (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.5.1 |
| Danish (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.6.1 |
| Dutch (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.33.1 |
| Dutch - Belgian (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.34.1 |
| English - US (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.11.1 |
| English - Canadian (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.12.1 |
| English - Irish (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.14.1 |
| Estonian (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.16.1 |
| Finnish (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.17.1 |
| French (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.18.1 |
| French - Belgian (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.19.1 |
| French - Canadian (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.20.1 |
| French - Swiss (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.21.1 |
| German (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.7.1 |
| German - Austrian (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.8.1 |
| German - Swiss (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.9.1 |
| Greek (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.10.1 |
| Hebrew (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.27.1 |
| Hungarian (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.23.1 |
| Icelandic (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.24.1 |
| Italian (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.25.1 |
| Italian - Swiss (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.26.1 |
| Japanese (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.28.1 |
| Korean (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.29.1 |
| Latvian, Lettish (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.31.1 |
| Lithuanian (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.30.1 |
| Macedonian (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.32.1 |
| Norwegian (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.35.1 |
| Norwegian - Bokmul (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.36.1 |
| Norwegian - Nynorsk (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.37.1 |
| Polish (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.38.1 |
| Romanian (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.39.1 |
| Russian (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.40.1 |
| Serbian - Cyrillic (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.45.1 |
| Serbian - Latin (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.41.1 |
| Slovakian (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.42.1 |
| Slovenian (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.43.1 |
| Spanish (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.15.1 |
| Swedish (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.46.1 |
| Turkish (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.47.1 |
| Ukrainian (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.48.1 |
Table 8.5. Language Substring Matching Rules
| Matching Rule | Object Identifiers (OIDs) |
|---|---|
| English (Case Exact Substring Match) | 2.16.840.1.113730.3.3.2.11.3.6 |
| Albanian (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.44.1.6 |
| Arabic (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.1.1.6 |
| Belorussian (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.2.1.6 |
| Bulgarian (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.3.1.6 |
| Catalan (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.4.1.6 |
| Chinese - Simplified (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.49.1.6 |
| Chinese - Traditional (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.50.1.6 |
| Croatian (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.22.1.6 |
| Czechoslovakian (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.5.1.6 |
| Danish (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.6.1.6 |
| Dutch (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.33.1.6 |
| Dutch - Belgian (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.34.1.6 |
| English - US (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.11.1.6 |
| English - Canadian (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.12.1.6 |
| English - Irish (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.14.1.6 |
| Estonian (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.16.1.6 |
| Finnish (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.17.1.6 |
| French (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.18.1.6 |
| French - Belgian (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.19.1.6 |
| French - Canadian (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.20.1.6 |
| French - Swiss (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.21.1.6 |
| German (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.7.1.6 |
| German - Austrian (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.8.1.6 |
| German - Swiss (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.9.1.6 |
| Greek (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.10.1.6 |
| Hebrew (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.27.1.6 |
| Hungarian (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.23.1.6 |
| Icelandic (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.24.1.6 |
| Italian (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.25.1.6 |
| Italian - Swiss (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.26.1.6 |
| Japanese (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.28.1.6 |
| Korean (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.29.1.6 |
| Latvian, Lettish (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.31.1.6 |
| Lithuanian (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.30.1.6 |
| Macedonian (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.32.1.6 |
| Norwegian (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.35.1.6 |
| Norwegian - Bokmul (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.36.1.6 |
| Norwegian - Nynorsk (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.37.1.6 |
| Polish (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.38.1.6 |
| Romanian (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.39.1.6 |
| Russian (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.40.1.6 |
| Serbian - Cyrillic (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.45.1.6 |
| Serbian - Latin (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.41.1.6 |
| Slovakian (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.42.1.6 |
| Slovenian (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.43.1.6 |
| Spanish (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.15.1.6 |
| Swedish (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.46.1.6 |
| Turkish (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.47.1.6 |
| Ukrainian (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.48.1.6 |
- The search is for all entries in the directory.
- The directory is configured to support anonymous access for search and read. This means that no bind information has to be supplied in order to perform the search. For more information on anonymous access, see Section 12.4.2, “Defining User Access - userdn Keyword”.
- The server is located on a host named
server.example.com. - The server uses port number
389. Since this is the default port, the port number does not have to be sent in the search request. - SSL is enabled for the server on port
636(the default SSL port number). - The suffix under which all data are stored is
dc=example,dc=com.
/usr/lib64/mozldap/ldapsearch -D "cn=directory manager" -w secret -p 389 -h server.example.com -b "dc=example,dc=com" -s sub "(objectclass=*)"
"objectclass=*" is a search filter that matches any entry in the directory. Since every entry must have an object class, and the objectclass attribute is always indexed, this is a useful search filter to return every entry.
-f option. For example:
/usr/lib64/mozldap/ldapsearch -D "cn=directory manager" -w secret -p 389 -h server.example.com -b "dc=example,dc=com" -s sub "cn=babs jensen"
base, and a filter of "objectclass=*". For example:
/usr/lib64/mozldap/ldapsearch -D "cn=directory manager" -w secret -p 389 -h server.example.com -b "" -s base "objectclass=*"
cn=schema entry. This entry contains information on every object class and attribute defined for the Directory Server. The following command searches the contents of the cn=schema entry:
/usr/lib64/mozldap/ldapsearch -D "cn=directory manager" -w secret -p 389 -h server.example.com -b "cn=schema" -s base "objectclass=*"
LDAP_BASEDN environment variable. Doing this means that the search base does not have to be set with the -b option. For information on how to set environment variables, see the documentation for the operating system.
LDAP_BASEDN to the directory's suffix value. Since the directory suffix is equal to the root, or topmost, entry in the directory, this causes all searches to begin from the directory's root entry.
LDAP_BASEDN to dc=example,dc=com and search for cn=babs jensen in the directory, use the following command-line call:
export LDAP_BASEDN="dc=example,dc=com" /usr/lib64/mozldap/ldapsearch -D "cn=directory manager" -w secret -p 389 -h server.example.com "cn=babs jensen"
sub is used because the -s option was not used to specify the scope.
ldapsearch command returns all search results in LDIF format. By default, ldapsearch returns the entry's distinguished name and all of the attributes that a user is allowed to read. The directory access control can be set such that users are allowed to read only a subset of the attributes on any given directory entry. Only operational attributes are not returned. For operational attributes to be returned as a result of a search operation, explicitly specify them in the search command.
cn and sn attributes for every entry in the directory, use the following command-line call:
/usr/lib64/mozldap/ldapsearch -D "cn=directory manager" -w secret -p 389 -h server.example.com -b "dc=example,dc=com" -s sub "(objectclass=*)" sn cn
ldapsearches, so to return operational attributes, they have to be explicitly specified in the ldapsearch request.
/usr/lib64/mozldap/ldapsearch -D "cn=directory manager" -w secret -p 389 -h server.example.com -b "dc=example,dc=com" -s sub "(objectclass=*)" creatorsName createTimestamp modifiersName modifyTimestamp
ldapsearch command runs each search in the order in which it appears in the file.
sn=Francis givenname=Richard
ldapsearch first finds all the entries with the surname Francis, then all the entries with the givenname Richard. If an entry is found that matches both search criteria, then the entry is returned twice.
searchdb:
/usr/lib64/mozldap/ldapsearch -D "cn=directory manager" -w secret -p 389 -h server.example.com -f searchdb
ldapsearch command performs both searches but returns only the DN and the givenname and sn attributes of each entry:
/usr/lib64/mozldap/ldapsearch -D "cn=directory manager" -w secret -p 389 -h server.example.com -f searchdb sn givenname
example.com Bolivia, S.A. subtree, use the following command:
/usr/lib64/mozldap/ldapsearch -D "cn=directory manager" -w secret -p 389 -h server.example.com -s base -b "l=Bolivia\,S.A.,dc=example,dc=com" "objectclass=*"
bjensen searching the directory using client authentication:
/usr/lib64/mozldap/ldapsearch -h server.example.com -p 636 -b "dc=example,dc=com" -N "bjensenscertname" -Z -W certdbpassword -P /home/bjensen/certdb/cert8.db "givenname=Richard"
supportedControls attribute in its DSE. Some of these define server operations like replication; other are allowed extended operations like get effective rights or dereferencing controls which clients can pass through LDAP operations to the server. These controls can be specified using the -J option by giving the control OID, its criticality for the ldapsearch, and any information required for the control operation.
-J control_OID:boolean criticality:control_information/usr/lib64/mozldap/ldapsearch -D "cn=directory manager" -w secret -p 389 -h server.example.com -b "dc=example,dc=com" -s sub -J 1.3.6.1.4.1.42.2.27.9.5.2:true:dn:uid=jsmith,ou=people,dc=example,dc=com "(objectclass=*)"
attr:matchingRule:=value
2.16.840.1.113730.3.3.2.46.1) matching rule.
departmentNumber:2.16.840.1.113730.3.3.2.46.1:=>= N4709
NOTE
1.2.840.113556.1.4.803) checks that the bit given in the assertion value is set in the bit field attribute value. (This is somewhat analogous to an equality search.) In this example, the userAccountControl value must be set to the bit representing 2.
"(UserAccountControl:1.2.840.113556.1.4.803:=2)"
"(UserAccountControl:1.2.840.113556.1.4.803:=6)”
1.2.840.113556.1.4.804) checks to see if any of the bits in the assertion string are represented in the attribute value. (This is somewhat analogous to a substring search.) In this example, the userAccountControl value must have any of the bits which are set in the bit field of 6, meaning that the attribute value can be 2, 4, or 6.
"(UserAccountControl:1.2.840.113556.1.4.804:=6)"
NOTE
ldapsearch which remains open even after the initial search results are returned.
- Keep a consistent and current local cache.Any client will query local cache before trying to connect to and query the directory. Persistent searches provide the local cache necessary to improve performance for these clients.
- Automatically initiate directory actions.The persistent cache can be automatically updated as entries are modified, and the persistent search results can display what kind of modification was performed on the entry. Another application can use that output to update entries automatically, such as automatically creating an email account on a mail server for new users or generating a unique user ID number.
- The
ldapsearchdoes not send a notification when the client disconnects, and the change notifications are not sent for any changes made while the search is disconnected. This means that the client's cache will not be updated if it is ever disconnected and there is no good way to update the cache with any new, modified, or deleted entries that were changed while it was disconnected. - An attacker could open a large number of persistent searches to launch a denial of service attack.
- A persistent search requires leaving open a TCP connection between the Directory Server and client. This should only be done if the server is configured to allow a lot of client connections and has a way to close idle connections.
- Each persistent search runs as a separate thread inside the Directory Server.
- Whether to return all of the currently matching entries and then update the cache with changed entries or whether to only send changed entries which match the search parameters. This is the changesOnly setting.
- What kinds of changes, such as adds or modifies, to entries are returned. This is the changetype setting.
- Whether to display within the entry what kind of modification was performed. This is the entryChanges setting.
/usr/lib64/mozldap/ldapsearch -r -C PS:changetype:changesOnly:entryChanges-bbaseDN-sscope-DbindDN-wpassword-pport-hhost(filter)
ldapsearch takes the normal ldapsearch options, such as the server connection information and bind credentials.
-C argument and the PS: signal that this is a persistent search. The -r argument is a recommended ldapsearch argument that prints the entries immediately to the screen as soon as they enter the buffer. This prevents the search command from buffering its output, which ultimately makes the search command appear to hang.
- The only required term is the changetype, which sets what kinds of changes are returned in the persistent search. The possible values are
add,modify,modrdn(for modrdn operations),delete, andany. - changesOnly is optional. If this value is true (
1), then no entries are returned in the initial search, and entries are only returned as they are modified. If it is false (0), then all matching entries are returned in the initial search, as well as sending updated entries. The default is true. - entryChanges is also optional. If this value is true (
1), then the type of modification is included in achangetypeline in the returned entry. For example:dn: uid=scarter,ou=People,dc=example,dc=com
If the value is false (persistentSearch-changetype: modify0), then only the entry is returned, without the type of change being noted. The default is true.
ldapsearch with the -C and -r arguments and the change parameters for the search. If no bind credentials are given, the Directory Server is accessed by the anonymous user.
/usr/lib64/mozldap/ldapsearch -D "cn=directory manager" -w secret -p 389 -h server.example.com -r -C PS:any:1:0 -b dc=example,dc=com objectclass=person
0), will return every matching entry in the directory, as with a normal ldapsearch. Then, as entries are modified, the persistent search returns the newly updated entry with, optionally, the type of operation which updated it (changeType).
version: 1 dn: uid=scarter,ou=People,dc=example,dc=com persistentSearch-changetype: modify title: manager mail: scarter@example.com description: test uid: scarter givenname: scott objectClass: top objectClass: person objectClass: organizationalPerson objectClass: inetorgperson sn: carter cn: scott carter
options=persistent.
[12/Jan/2009:12:51:54 -0500] conn=19636710736396323 op=0 SRCH base="dc=example,dc=com" scope=2 filter="(objectClass=person)" attrs=ALL options=persistentIMPORTANT
-E 'deref=deref_attribute:list_of_attributes'member or manager.
NOTE
1.3.6.1.4.1.1466.115.121.1.12).
l,mail,cn.
member attribute in the search target entry (the Engineers group) as the deref_attribute. It then returns the locality attribute for each member.
ldapsearch -x -D "cn=Directory Manager" -w secret -b "cn=Example,ou=Groups,dc=example,dc=com" -E 'deref=member:mail,cn' "(objectclass=*)" # Engineers, Groups, example.com dn: cn=Engineers,ou=Groups,dc=example,dc=com control: 1.3.6.1.4.1.4203.666.5.16 false MIQAAADNMIQAAAA1BAZtZW1iZXIEK2NuPURld mVsb3BlcnMsIG91PUdyb3VwcywgZGM9ZXhhbXBsZSxkYz1jb20whAAAADIEBm1lbWJlcgQoY249VG VzdGVycywgb3U9R3JvdXBzLCBkYz1leGFtcGxlLGRjPWNvbTCEAAAAVAQGbWVtYmVyBCp1aWQ9ZW5 nLCBvdT1lbmdpbmVlcmluZywgZGM9ZXhhbXBsZSxkYz1jb22ghAAAABowhAAAABQEAWwxhAAAAAsE CUNhbWJyaWRnZQ== # member: <mail=jsmith@example.com><cn=John Smith>;uid=jsmith,ou=people,dc=example,dc=com objectClass: top objectClass: inetuser objectClass: groupofnames cn: Engineers member: uid=jsmith,ou=people,dc=example,dc=com
1.2.840.113556.1.4.319.
IMPORTANT
-E pg=sizeldapsearch:
ldapsearch -x -D "cn=Directory Manager" -w secret -b "ou=Engineers,ou=People,dc=example,dc=com" -E pg=3 "(objectclass=*)" cn dn: uid=jsmith,ou=Engineers,ou=People,dc=example,dc=com cn: John Smith dn: uid=bjensen,ou=Engineers,ou=People,dc=example,dc=com cn: Barbara Jensen dn: uid=hmartin,ou=Engineers,ou=People,dc=example,dc=com cn: Henry Martin Results are sorted. next page size (3): 5
5 as shown would open the next page of results with five entries.
NOTE
UNWILLING_TO_PERFORM error.
- 9.1. Replication Overview
- 9.1.1. What Directory Units Are Replicated
- 9.1.2. Read-Write and Read-Only Replicas
- 9.1.3. Suppliers and Consumers
- 9.1.4. Changelog
- 9.1.5. Replication Identity
- 9.1.6. Replication Agreement
- 9.1.7. Replicating a Subset of Attributes with Fractional Replication
- 9.1.8. Compatibility with Earlier Versions of Directory Server
- 9.2. Replication Scenarios
- 9.3. Creating the Supplier Bind DN Entry
- 9.4. Configuring Single-Master Replication
- 9.5. Configuring Multi-Master Replication
- 9.6. Configuring Cascading Replication
- 9.7. Configuring Replication from the Command Line
- 9.8. Making a Replica Updatable
- 9.9. Deleting the Changelog
- 9.10. Initializing Consumers
- 9.11. Forcing Replication Updates
- 9.12. Replication over SSL
- 9.13. Setting Replication Timeout Periods
- 9.14. Replicating o=NetscapeRoot for Admin Server Failover
- 9.15. Replication with Earlier Releases
- 9.16. Using the Retro Changelog Plug-in
- 9.17. Monitoring Replication Status
- 9.18. Solving Common Replication Conflicts
- 9.19. Troubleshooting Replication-Related Problems
- In the case of cascading replication, the hub server holds a read-only replica that it supplies to consumers. Section 9.2.3, “Cascading Replication” has more information.
- In the case of multi-master replication, the masters are both suppliers and consumers for the same information. For more information, see Section 9.2.2, “Multi-Master Replication”.
- It is created on the consumer server (or hub) and not on the supplier server.
- Create this entry on every server that receives updates from another server, meaning on every hub or dedicated consumer.
- When a replica is configured as a consumer or hub (a replica which receives updates from another server), this entry must be specified as the one authorized to perform replication updates.
- The replication agreement is created on the supplier server, the DN of this entry must be specified in the replication agreement.
- The supplier bind DN entry must not be part of the replicated database for security reasons.
- This entry, with its special user profile, bypasses all access control rules defined on the consumer server for the database involved in that replication agreement.
NOTE
- The database to be replicated.
- The consumer server to which the data is pushed.
- The days and times during which replication can occur.
- The DN and credentials that the supplier server must use to bind (the replication manager entry or supplier bind DN).
- How the connection is secured (SSL, client authentication).
- Any attributes that will not be replicated (fractional replication).
- Legacy Replication Plug-in. The Legacy Replication Plug-in makes a Directory Server 8.2 instance behave as a 4.x Directory Server in a consumer role. For information on how to implement legacy replication using this plug-in, see Section 9.15, “Replication with Earlier Releases”.
- Retro Changelog Plug-in. The Retro Changelog Plug-in can be used for a Directory Server supplier to maintain a 4.x-style changelog. This is sometimes necessary for legacy applications that have a dependency on the Directory Server 4.x changelog format because they read information from the changelog. For more information on the Retro Changelog Plug-in, see Section 9.16, “Using the Retro Changelog Plug-in”.
NOTE
ou=people,dc=example,dc=com suffix receives a large number of search requests. Therefore, to distribute the load, this tree, which is mastered on Server A, is replicated to two read-only replicas located on Server B and Server C.
- Automatic write failover when one supplier is inaccessible.
- Updates are made on a local supplier in a geographically distributed environment.
NOTE
NOTE
- It must be unique.
- It must be created on the consumer server (or hub) and not on the supplier server.
- It must correspond to an actual entry on the consumer server.
- It must be created on every server that receives updates from another server.
- It must not be part of the replicated database for security reasons.
- It must be defined in the replication agreement on the supplier server.
- It must have an idle timeout period set to a high enough limit to allow the initialization process for large databases to complete. Using the
nsIdleTimeOutoperational attribute allows the replication manager entry to override the globalnsslapd-idletimeoutsetting.
cn=Replication Manager,cn=config can be created under the cn=config tree on the consumer server. This would be the supplier bind DN that all supplier servers would use to bind to the consumer to perform replication operations.
NOTE
cn=config entry in the dse.ldif file. The cn=cn=config entry in the simple, flat dse.ldif configuration file is not stored in the same highly scalable database as regular entries. As a result, if many entries, and particularly entries that are likely to be updated frequently, are stored under cn=config, performance will suffer. However, although Red Hat recommends not storing simple user entries under cn=config for performance reasons, it can be useful to store special user entries such as the Directory Manager entry or replication manager (supplier bind DN) entry under cn=config since this centralizes configuration information.
- Stop the Directory Server. If the server is not stopped, the changes to the
dse.ldiffile will not be saved. See Section 1.4, “Starting and Stopping Servers” for more information on stopping the server. - Create a new entry, such as
cn=replication manager,cn=config, in thedse.ldiffile. - Specify a
userPasswordattribute-value pair. - Set an
nsIdleTimeoutperiod that gives the replication user a long enough time limit to allow replication initialization on large databases to complete. - If password expiration policy is enabled or ever will be enabled, disable it on the replication manager entry to prevent replication from failing due to passwords expiring. To disable the password expiration policy on the
userPasswordattribute, add thepasswordExpirationTimeattribute with a value of20380119031407Z, which means that the password will never expire. - Restart the Directory Server. See Section 1.4, “Starting and Stopping Servers” for more information on starting the server.
Example 9.1. Example Supplier Bind DN Entry
dn: cn=replication manager,cn=config objectClass: inetorgperson objectClass: person objectClass: top cn: replication manager sn: RM userPassword: password passwordExpirationTime: 20380119031407Z nsIdleTimeout: 0
- Specify the supplier settings for the server.
- In the Directory Server Console, select the Configuration tab.
- In the navigation tree, select the Replication folder.
- In the right-hand side of the window, select the Supplier Settings tab.

- Check the Enable Changelog checkbox.This activates all of the fields in the pane below that were previously grayed out.
- Specify a changelog by clicking the button, or click the button to display a file selector.
- Set the changelog parameters for the number and age of the log files.Clear the unlimited checkboxes to specify different values.
- Click .
- Specify the replication settings required for a read-write replica.
- In the navigation tree on the Configuration tab, expand the Replication node, and highlight the database to replicate.The Replica Settings tab opens in the right-hand side of the window.
- Check the Enable Replica checkbox.
- In the Replica Role section, select the Single Master radio button.

- In the Common Settings section, specify a Replica ID, which is an integer between
1and65534, inclusive.The replica ID must be unique for a given suffix, different from any other ID used for read-write replicas on this server and on other servers.
- In the Common Settings section, specify a purge delay in the Purge delay field.The purge delay is how often the state information stored for the replicated entries is deleted.
- Click .
- Create the database for the read-only replica if it does not exist. See Section 2.1.1, “Creating Suffixes” for instructions on creating suffixes.
- Create the entry for the supplier bind DN on the consumer server if it does not exist. The supplier bind DN is the special entry that the supplier will use to bind to the consumer. This is described in Section 9.3, “Creating the Supplier Bind DN Entry”.
- Specify the replication settings required for a read-only replica.
- In the Directory Server Console, select the Configuration tab.
- In the navigation tree, expand the Replication folder, and highlight the replica database.
The Replica Settings tab for that database opens in the right-hand side of the window. - Check the Enable Replica checkbox.

- In the Replica Role section, select the Dedicated Consumer radio button.
- In the Common Settings section, specify a purge delay in the Purge delay field.This option indicates how often the state information stored for the replicated entries is purged.

- In the Update Settings section, specify the bind DN that the supplier will use to bind to the replica. Enter the supplier bind DN in the Enter a new Supplier DN field, and click . The supplier bind DN appears in the Current Supplier DNs list.
The supplier bind DN should be the entry created in step 2. The supplier bind DN is a privileged user because it is not subject to access control.NOTE
There can be multiple supplier bind DNs per consumer but only one supplier DN per replication agreement. - Specify the URL for any supplier servers to which to refer updates.By default, all updates are first referred to the supplier servers that are specified here. If no suppliers are set here, updates are referred to the supplier servers that have a replication agreement that includes the current replica.Automatic referrals assume that clients bind over a regular connection; this has a URL in the form
ldap://hostname:port. For clients to bind to the supplier using SSL, use this field to specify a referral of the formldaps://hostname:port, where thesinldapsindicates a secure connection.
- Click .
- In the navigation tree of the Configuration tab, right-click the database to replicate, and select New Replication Agreement.
Alternatively, highlight the database, and select New Replication Agreement from the Object menu to start the Replication Agreement Wizard. - In the first screen, fill in a name and description for the replication agreement, and hit .
- In the Source and Destination screen, fill in the URL for the consumer and the supplier bind DN and password on that consumer. If the target server is not available, hit in other to fill in the information manually.

- Unless there is more than one instance of Directory Server configured, by default, there are no consumers available in the drop-down menu.
- The port listed is the non-SSL port, even if the Directory Server instance is configured to run over SSL. This port number is used only for identification of the Directory Server instance in the Console; it does not specify the actual port number or protocol that is used for replication.
- If SSL is enabled on the servers, it is possible to select the Using encrypted SSL connection radio button for SSL client authentication. Otherwise, fill in the supplier bind DN and password.
NOTE
If attribute encryption is enabled, a secure connection must be used for the encrypted attributes to be replicated.
- Select the connection type. There are three options:
- Use LDAP. This sets a standard, unencrypted connection.
- Use TLS/SSL. This uses a secure connection over the server's secure LDAPS port, such as
636. This setting is required to use TLS/SSL. - Use Start TLS. This uses Start TLS to establish a secure connection over the server's standard port.
NOTE
If secure binds are required for simple password authentication (Section 13.5.1, “Requiring Secure Binds”), then any replication operations will fail unless they occur over a secure connection. Using a secure connection (SSL/TLS and Start TLS connections or SASL authentication) is recommended, anyway. - Select the appropriate authentication method and supply the required information. This gives the information that the supplier uses to authenticate and bind to the consumer server to send updates.
- Simple means that the server connects over the standard port with no encryption. The only required information is the bind DN and password for the Replication Manager (which must exist on the consumer server).
- Server TLS/SSL Certificate uses the supplier's SSL certificate to authenticate to the consumer server. A certificate must be installed on the supplier for certificate-based authentication, and the consumer server must have certificate mapping configured so that it can map the subject DN in the supplier's certificate to its Replication Manager entry.Configuring SSL and certificate mapping is described in Section 14.2, “Using TLS/SSL”.
- SASL/DIGEST-MD5, like simple authentication, requires only the bind DN and password to authenticate. This can run over a standard or SSL/TLS connection.
- SASL/GSSAPI requires the supplier server to have a Kerberos keytab (as in Section 14.3.4.2, “About the KDC Server and Keytabs”), and the consumer server to have a SASL mapping to map the supplier's principal to the real replication manager entry (as in Section 14.3.5.1, “Configuring SASL Identity Mapping from the Console”).
- Fractional replication controls which entry attributes are replicated between servers. By default, all attributes are replicated. To select attributes that will not be replicated to the consumer, check the Enable Fractional Replication checkbox. Then, highlight the attribute (or attributes) in the Included column on the right, and click Remove. All attributes that will not be replicated are listed in the Excluded column on the left, as well as in the summary the replication agreement is complete.

- Set the schedule for when replication runs. By default, replication runs continually.

NOTE
The replication schedule cannot cross midnight (0000). So, it is possible to set a schedule that begins at0001and ends at2359on the same day, but it is not possible to set one that begins at2359on one day and ends at0001on the next.Hit . - Set when the consumer is initialized. Initializing a consumer manually copies all data over from the supplier to the consumer. The default is to create an initialization file (an LDIF of all supplier data) so that the consumer can be initialized later. It is also possible to initialize the consumer as soon as the replication agreement is completed or not at all. For information on initializing consumers, see Section 9.10, “Initializing Consumers”.

NOTE
Replication will not begin until the consumer is initialized.Hit . - The final screen shows the settings for the replication agreement, as it will be included in the
dse.ldiffile. Hit to save the agreement.
NOTE
NOTE
- Specify the supplier settings for the server.
- In the Directory Server Console, select the Configuration tab.
- In the navigation tree, select the Replication folder.
- In the right-hand side of the window, select the Supplier Settings tab.

- Check the Enable Changelog checkbox.This activates all of the fields in the pane below that were previously grayed out.
- Specify a changelog by clicking the button, or click the button to display a file selector.
- Set the changelog parameters for the number and age of the log files.Clear the unlimited checkboxes to specify different values.
- Click .
- Create the entry for the supplier bind DN on the consumer server if it does not exist. This is the special entry that the other suppliers will use to bind to this supplier, as in other supplier-consumer relationships. This is described in Section 9.3, “Creating the Supplier Bind DN Entry”.
NOTE
For multi-master replication, it is necessary to create this supplier bind DN on the supplier servers as well as the consumers because the suppliers act as both consumer and supplier to the other supplier servers. - Specify the replication settings for the multi-mastered read-write replica.
- In the Directory Server Console, select the Configuration tab.
- In the navigation tree, expand the Replication folder, and highlight the replica database.The Replica Settings tab for that database opens in the right-hand side of the window.

- Check the Enable Replica checkbox.
- In the Replica Role section, select the Multiple Master radio button.
- In the Common Settings section, specify a Replica ID, which is an integer between
1and65534, inclusive.
The replica ID must be unique for a given suffix, different from any other ID used for read-write replicas on this server and on other servers. - In the Common Settings section, specify a purge delay in the Purge delay field.The purge delay is how often the state information stored for the replicated entries is deleted.
- In the Update Settings section, specify the bind DN that the supplier will use to bind to the replica. Enter the supplier bind DN in the Enter a new Supplier DN field, and click . The supplier bind DN appears in the Current Supplier DNs list.
The supplier bind DN should be the entry created in step 2. The supplier bind DN is a privileged user because it is not subject to access control in the replicated database.NOTE
There can be multiple supplier bind DNs per consumer but only one supplier DN per replication agreement. - Specify the URL for any supplier servers to which to refer updates, such as the other suppliers in the multi-master replication set. Only specify the URL for the supplier server.For clients to bind using SSL, specify a URL beginning with
ldaps://. - Click .
- Create the database for the read-only replica if it does not exist. See Section 2.1.1, “Creating Suffixes” for instructions on creating suffixes.
- Create the entry for the supplier bind DN on the consumer server if it does not exist. The supplier bind DN is the special entry that the supplier will use to bind to the consumer. This is described in Section 9.3, “Creating the Supplier Bind DN Entry”.
- Specify the replication settings required for a read-only replica.
- In the Directory Server Console, select the Configuration tab.
- In the navigation tree, expand the Replication folder, and highlight the replica database.The Replica Settings tab for that database opens in the right-hand side of the window.

- Check the Enable Replica checkbox.
- In the Replica Role section, select the Dedicated Consumer radio button.
- In the Common Settings section, specify a purge delay in the Purge delay field.This option indicates how often the state information stored for the replicated entries is purged.

- In the Update Settings section, specify the bind DN that the supplier will use to bind to the replica. Enter the supplier bind DN in the Enter a new Supplier DN field, and click . The supplier bind DN appears in the Current Supplier DNs list.
The supplier bind DN should be the entry created in step 2. The supplier bind DN is a privileged user because it is not subject to access control in the replicated database.NOTE
There can be multiple supplier bind DNs per consumer but only one supplier DN per replication agreement. - Specify the URL for any supplier servers to which to refer updates.By default, all updates are first referred to the supplier servers that are specified here. If no suppliers are set here, updates are referred to the supplier servers that have a replication agreement that includes the current replica.Automatic referrals assume that clients bind over a regular connection; this has a URL in the form
ldap://hostname:port. For clients to bind to the supplier using SSL, use this field to specify a referral of the formldaps://hostname:port, where thesinldapsindicates a secure connection.
- Click .
NOTE
- First set up replication agreements on a single supplier, the data master, between the other multi-master suppliers, and initialize all of the other suppliers.
- Then create replication agreements for all other suppliers in the multi-master replication set, but do not reinitialize any of the suppliers.
- Then create replication agreements for all of the consumers from the single data master, and initialize the consumers.
- Then create replication agreements for all of the consumers from for all of the other suppliers, but do not reinitialize any of the consumers.
- In the navigation tree of the Configuration tab, right-click the database to replicate, and select New Replication Agreement.
Alternatively, highlight the database, and select New Replication Agreement from the Object menu to start the Replication Agreement Wizard. - In the first screen, fill in a name and description for the replication agreement, and hit .
- In the Source and Destination screen, fill in the URL for the consumer and the supplier bind DN and password on that consumer. If the target server is not available, hit in other to fill in the information manually.

- Unless there is more than one instance of Directory Server configured, by default, there are no consumers available in the drop-down menu.
- The port listed is the non-SSL port, even if the Directory Server instance is configured to run over SSL. This port number is used only for identification of the Directory Server instance in the Console; it does not specify the actual port number or protocol that is used for replication.
- If SSL is enabled on the servers, it is possible to select the Using encrypted SSL connection radio button for SSL client authentication. Otherwise, fill in the supplier bind DN and password.
NOTE
If attribute encryption is enabled, a secure connection is required for the encrypted attributes to be replicated.
- Select the connection type. There are three options:
- Use LDAP. This sets a standard, unencrypted connection.
- Use TLS/SSL. This uses a secure connection over the server's secure LDAPS port, such as
636. This setting is required to use TLS/SSL. - Use Start TLS. This uses Start TLS to establish a secure connection over the server's standard port.
NOTE
If secure binds are required for simple password authentication (Section 13.5.1, “Requiring Secure Binds”), then any replication operations will fail unless they occur over a secure connection. Using a secure connection (SSL/TLS and Start TLS connections or SASL authentication) is recommended, anyway. - Select the appropriate authentication method and supply the required information. This gives the information that the supplier uses to authenticate and bind to the consumer server to send updates.
- Simple means that the server connects over the standard port with no encryption. The only required information is the bind DN and password for the Replication Manager (which must exist on the consumer server).
- Server TLS/SSL Certificate uses the supplier's SSL certificate to authenticate to the consumer server. A certificate must be installed on the supplier for certificate-based authentication, and the consumer server must have certificate mapping configured so that it can map the subject DN in the supplier's certificate to its Replication Manager entry.Configuring SSL and certificate mapping is described in Section 14.2, “Using TLS/SSL”.
- SASL/DIGEST-MD5, like simple authentication, requires only the bind DN and password to authenticate. This can run over a standard or SSL/TLS connection.
- SASL/GSSAPI requires the supplier server to have a Kerberos keytab (as in Section 14.3.4.2, “About the KDC Server and Keytabs”), and the consumer server to have a SASL mapping to map the supplier's principal to the real replication manager entry (as in Section 14.3.5.1, “Configuring SASL Identity Mapping from the Console”).
- Hit .
- Fractional replication controls which entry attributes are replicated between servers. By default, all attributes are replicated. To select attributes that will not be replicated to the consumer, check the Enable Fractional Replication checkbox. Then, highlight the attribute (or attributes) in the Included column on the right, and click Remove. All attributes that will not be replicated are listed in the Excluded column on the left, as well as in the summary the replication agreement is complete.

- Set the schedule for when replication runs. By default, replication runs continually.

NOTE
The replication schedule cannot cross midnight (0000). So, it is possible to set a schedule that begins at0001and ends at2359on the same day, but it is not possible to set one that begins at2359on one day and ends at0001on the next.Hit . - Set when the consumer is initialized. Initializing a consumer manually copies all data over from the supplier to the consumer. The default is to create an initialization file (an LDIF of all supplier data) so that the consumer can be initialized later. It is also possible to initialize the consumer as soon as the replication agreement is completed or not at all. For information on initializing consumers, see Section 9.10, “Initializing Consumers”. For multi-master replication, consider the following:
- Ensure one supplier has the complete set of data to replicate to the other suppliers. Use this one supplier to initialize the replica on all other suppliers in the multi-master replication set.
- Initialize the replicas on the consumer servers from any of the multi-master suppliers.
- Do not try to reinitialize the servers when the replication agreements are set up. For example, do not initialize server1 from server2 if server2 has already been initialized from server1. In this case, select Do not initialize consumer.

NOTE
Replication will not begin until the consumer is initialized.IMPORTANT
For multi-master replication, be sure that consumers are only initialized once, by one supplier. When checking the replication status, be sure to check the replication agreement entry, on the appropriate supplier, which was used to initialize the consumer.Hit . - The final screen shows the settings for the replication agreement, as it will be included in the
dse.ldiffile. Hit to save the agreement.
NOTE
NOTE
nsds5ReplicaBusyWaitTime and nsds5ReplicaSessionPauseTime.
- nsds5ReplicaBusyWaitTime. The
nsds5ReplicaBusyWaitTimeattribute sets the amount of time in seconds a supplier should wait after a consumer sends back a busy response before making another attempt to acquire access. The default is3seconds. - nsds5ReplicaSessionPauseTime. The
nsds5ReplicaSessionPauseTimeattribute sets the amount of time in seconds a supplier should wait between update sessions. Set this interval so that it is at least one second longer than the interval specified fornsds5ReplicaBusyWaitTime. Increase the interval as needed until there is an acceptable distribution of consumer access among the suppliers. The default is0.
nsds5ReplicationAgreement object class, which is used to describe replication agreements. Set the attributes at any time by using changetype:modify with the replace operation. The change takes effect for the next update session if one is already in progress.
NOTE
LDAP_UNWILLING_TO_PERFORM error code.
nsds5ReplicaSessionPauseTime interval will always be at least one second longer than the interval specified for nsds5ReplicaBusyWaitTime. The longer interval gives waiting suppliers a better chance to gain consumer access before the previous supplier can re-access the consumer.
- If either attribute is specified but not both,
nsds5ReplicaSessionPauseTimeis set automatically to 1 second more thannsds5ReplicaBusyWaitTime. - If both attributes are specified, but
nsds5ReplicaSessionPauseTimeis less than or equal tonsds5ReplicaBusyWaitTime,nsds5ReplicaSessionPauseTimeis set automatically to 1 second more thannsds5ReplicaBusyWaitTime.
nsds5ReplicaSessionPauseTime, the value is changed internally only. The change is not visible to clients, and it not saved to the configuration file. From an external viewpoint, the attribute value appears as originally set.
8192. The log levels are described in more detail in the Directory Server Configuration and Command-Line Tool Reference.
- Specify the supplier settings for the server.
- In the Directory Server Console, select the Configuration tab.
- In the navigation tree, select the Replication folder.
- In the right-hand side of the window, select the Supplier Settings tab.

- Check the Enable Changelog checkbox.This activates all of the fields in the pane below that were previously grayed out.
- Specify a changelog by clicking the button, or click the button to display a file selector.
- Set the changelog parameters for the number and age of the log files.Clear the unlimited checkboxes to specify different values.
- Click .
- Specify the replication settings required for a read-write replica.
- In the navigation tree on the Configuration tab, expand the Replication node, and highlight the database to replicate.The Replica Settings tab opens in the right-hand side of the window.
- Check the Enable Replica checkbox.
- In the Replica Role section, select the Single Master radio button.

- In the Common Settings section, specify a Replica ID, which is an integer between
1and65534, inclusive.
The replica ID must be unique for a given suffix, different from any other ID used for read-write replicas on this server and on other servers. - In the Common Settings section, specify a purge delay in the Purge delay field.The purge delay is how often the state information stored for the replicated entries is deleted.
- Click .
- Create the database for the read-only replica if it does not exist. See Section 2.1.1, “Creating Suffixes” for instructions on creating suffixes.
- Create the entry for the supplier bind DN on the consumer server if it does not exist. The supplier bind DN is the special entry that the supplier will use to bind to the consumer. This is described in Section 9.3, “Creating the Supplier Bind DN Entry”.
- Specify the replication settings required for a read-only replica.
- In the Directory Server Console, select the Configuration tab.
- In the navigation tree, expand the Replication folder, and highlight the replica database.The Replica Settings tab for that database opens in the right-hand side of the window.

- Check the Enable Replica checkbox.
- In the Replica Role section, select the Dedicated Consumer radio button.
- In the Common Settings section, specify a purge delay in the Purge delay field.
This option indicates how often the state information stored for the replicated entries is purged. - In the Update Settings section, specify the bind DN that the supplier will use to bind to the replica. Enter the supplier bind DN in the Enter a new Supplier DN field, and click . The supplier bind DN appears in the Current Supplier DNs list.
The supplier bind DN should be the entry created in step 2. The supplier bind DN is a privileged user because it is not subject to access control in the replicated database.NOTE
There can be multiple supplier bind DNs per consumer but only one supplier DN per replication agreement. - Specify the URL for any supplier servers to which to refer updates.By default, all updates are first referred to the supplier servers that are specified here. If no suppliers are set here, updates are referred to the supplier servers that have a replication agreement that includes the current replica.In cascading replication, referrals are automatically sent to the hub server, which in turn refers the request to the original supplier. Therefore, set a referral to the original supplier to replace the automatically generated referral.
- Click .
- Create the database for the read-only replica if it does not exist. See Section 2.1.1, “Creating Suffixes” for instructions on creating suffixes.
- Create the entry for the supplier bind DN on the consumer server if it does not exist. The supplier bind DN is the special entry that the supplier will use to bind to the consumer. This is described in Section 9.3, “Creating the Supplier Bind DN Entry”.
- Create the changelog for the hub server.The hub must maintain a changelog even though it does not accept update operations because it records the changes sent from the supplier server.
- In the Directory Server Console, select the Configuration tab.
- In the navigation tree, select the Replication folder.
- In the right-hand side of the window, select the Supplier Settings tab.

- Check the Enable Changelog checkbox.This activates all of the fields in the pane below that were previously grayed out.
- Specify a changelog by clicking the button, or click the button to display a file selector.
- Set the changelog parameters for the number and age of the log files.Clear the unlimited checkboxes to specify different values.
- Click .
- Specify the required hub replica settings.
- In the Directory Server Console, select the Configuration tab.
- In the navigation tree, expand the Replication folder, and highlight the replica database.
The Replica Settings tab for that database opens in the right-hand side of the window. - Check the Enable Replica checkbox.

- In the Replica Role section, select the Hub radio button.
- In the Common Settings section, specify a purge delay in the Purge delay field.
This option sets how often the state information stored for the replicated entries is purged. - In the Update Settings section, specify the bind DN that the supplier will use to bind to the replica. Enter the supplier bind DN in the Enter a new Supplier DN field, and click . The supplier bind DN appears in the Current Supplier DNs list.
The supplier bind DN should be the entry created in step 2. The supplier bind DN is a privileged user because it is not subject to access control in the replicated database.NOTE
There can be multiple supplier bind DNs per consumer but only one supplier DN per replication agreement. - Specify the URL for any supplier servers to which to refer updates.By default, all updates are first referred to the supplier servers that are specified here. If no suppliers are set here, updates are referred to the supplier servers that have a replication agreement that includes the current replica.Automatic referrals assume that clients bind over a regular connection; this has a URL in the form
ldap://hostname:port. For clients to bind to the supplier using SSL, use this field to specify a referral of the formldaps://hostname:port, where thesinldapsindicates a secure connection.
- Click .
- Create the replication agreement on the supplier for the hub, then use the supplier server to initialize the replica on the hub server.
- Then create the replication agreement on the hub for each consumer, and initialize the consumer replicas from the hub.
- In the navigation tree of the Configuration tab, right-click the database to replicate, and select New Replication Agreement.
Alternatively, highlight the database, and select New Replication Agreement from the Object menu to start the Replication Agreement Wizard. - In the first screen, fill in a name and description for the replication agreement, and hit .
- In the Source and Destination screen, fill in the URL for the consumer and the supplier bind DN and password on that consumer. If the target server is not available, hit in other to fill in the information manually.

- Unless there is more than one instance of Directory Server configured, by default, there are no consumers available in the drop-down menu.
- The port listed is the non-SSL port, even if the Directory Server instance is configured to run over SSL. This port number is used only for identification of the Directory Server instance in the Console; it does not specify the actual port number or protocol that is used for replication.
- If SSL is enabled on the servers, it is possible to select the Using encrypted SSL connection radio button for SSL client authentication. Otherwise, fill in the supplier bind DN and password.
NOTE
If attribute encryption is enabled, a secure connection must be used for the encrypted attributes to be replicated.
- Select the connection type. There are three options:
- Use LDAP. This sets a standard, unencrypted connection.
- Use TLS/SSL. This uses a secure connection over the server's secure LDAPS port, such as
636. This setting is required to use TLS/SSL. - Use Start TLS. This uses Start TLS to establish a secure connection over the server's standard port.
NOTE
If secure binds are required for simple password authentication (Section 13.5.1, “Requiring Secure Binds”), then any replication operations will fail unless they occur over a secure connection. Using a secure connection (SSL/TLS and Start TLS connections or SASL authentication) is recommended, anyway. - Select the appropriate authentication method and supply the required information. This gives the information that the supplier uses to authenticate and bind to the consumer server to send updates.
- Simple means that the server connects over the standard port with no encryption. The only required information is the bind DN and password for the Replication Manager (which must exist on the consumer server).
- Server TLS/SSL Certificate uses the supplier's SSL certificate to authenticate to the consumer server. A certificate must be installed on the supplier for certificate-based authentication, and the consumer server must have certificate mapping configured so that it can map the subject DN in the supplier's certificate to its Replication Manager entry.Configuring SSL and certificate mapping is described in Section 14.2, “Using TLS/SSL”.
- SASL/DIGEST-MD5, like simple authentication, requires only the bind DN and password to authenticate. This can run over a standard or SSL/TLS connection.
- SASL/GSSAPI requires the supplier server to have a Kerberos keytab (as in Section 14.3.4.2, “About the KDC Server and Keytabs”), and the consumer server to have a SASL mapping to map the supplier's principal to the real replication manager entry (as in Section 14.3.5.1, “Configuring SASL Identity Mapping from the Console”).
- Hit .
- Fractional replication controls which entry attributes are replicated between servers. By default, all attributes are replicated. To select attributes that will not be replicated to the consumer, check the Enable Fractional Replication checkbox. Then, highlight the attribute (or attributes) in the Included column on the right, and click Remove. All attributes that will not be replicated are listed in the Excluded column on the left, as well as in the summary the replication agreement is complete.

- Set the schedule for when replication runs. By default, replication runs continually.

NOTE
The replication schedule cannot cross midnight (0000). So, it is possible to set a schedule that begins at0001and ends at2359on the same day, but it is not possible to set one that begins at2359on one day and ends at0001on the next.Hit . - Set when the consumer is initialized. Initializing a consumer manually copies all data over from the supplier to the consumer. The default is to create an initialization file (an LDIF of all supplier data) so that the consumer can be initialized later. It is also possible to initialize the consumer as soon as the replication agreement is completed or not at all. For information on initializing consumers, see Section 9.10, “Initializing Consumers”. For cascading replication, consider the following:
- Create the supplier-hub replication agreement on the supplier first, and initialize the hub from the supplier.
- Create the hub-consumer replication agreements on the hub, and initialize the consumers from the hub.

NOTE
Replication will not begin until the consumer is initialized.IMPORTANT
For multi-master replication, be sure that consumers are only initialized once, by one supplier. When checking the replication status, be sure to check the replication agreement entry, on the appropriate supplier, which was used to initialize the consumer.Hit . - The final screen shows the settings for the replication agreement, as it will be included in the
dse.ldiffile. Hit to save the agreement.
NOTE
- Create the supplier bind DN on every consumer, hub, and multi-master supplier (Section 9.3, “Creating the Supplier Bind DN Entry”).
- If the corresponding database and suffix do not exist on one of the replicas, create it (Section 2.1.1, “Creating Suffixes”).
- Configure the supplier replicas (Section 9.7.1, “Configuring Suppliers from the Command Line”).
- Configure consumers (Section 9.7.2, “Configuring Consumers from the Command Line”).
- Configure hubs for cascading replication (Section 9.7.3, “Configuring Hubs from the Command Line”).
- Create the replication agreements (Section 9.7.4, “Configuring Replication Agreements from the Command Line”). For cascading replication, create the agreement between the supplier and hub, then between the hub and consumers; for multi-master, create the agreements between all suppliers, then between the suppliers and consumers.
- Lastly, initialize all of the consumers (Section 9.7.5, “Initializing Consumers Online from the Command Line”), if the consumers were not initialized when the replication agreement was created.
- On the supplier server, use
ldapmodifyto create the changelog entry.Example 9.2. Example Changelog Entry
/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 -h supplier1.example.com -v -a dn: cn=changelog5,cn=config objectclass: top objectclass: extensibleObject cn: changelog5 nsslapd-changelogdir: /var/lib/dirsrv/slapd-
instance_name/changelogdb nsslapd-changelogmaxage: 10dThere are two important attributes with the changelog.nsslapd-changelogdirsets the directory where the changelog is kept.nsslapd-changelogmaxagesets how long the changelog is kept; since the changelog can get very large, this helps trim the changelog to prevent affecting server performance and using up disk space. If this parameter is not set, the default is for the changelog to be kept forever.
The changelog entry attributes are described in Table 9.1, “Changelog Attributes”. These attributes are described in more detail in the Directory Server Configuration and Command-Line Tool Reference. - Create the supplier replica.
Example 9.3. Example Supplier Replica Entry
/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 -h supplier1.example.com -v -a dn: cn=replica,cn=dc=example\,dc=com,cn=mapping tree,cn=config objectclass: top objectclass: nsds5replica objectclass: extensibleObject cn: replica nsds5replicaroot: dc=example,dc=com nsds5replicaid: 7 nsds5replicatype: 3 nsds5flags: 1 nsds5ReplicaPurgeDelay: 604800 nsds5ReplicaBindDN: cn=replication manager,cn=config
- nsds5replicaroot sets the subtree (suffix) which is being replicated.
- nsds5replicatype sets what kind of replica this database is. For either a single master or a multi-master supplier, this value must be
3. - nsds5replicaid sets the replica ID. The value must be unique among all suppliers and hubs; the valid range is
1to65534. - nsds5ReplicaPurgeDelay sets how long an entry holds its status information or how long a tombstone entry is kept before deleting the information. The default value is
604800(one week). - nsds5flags sets whether the replica writes to the changelog. For a supplier, this value must be
1.
The replica entry attributes are described in Table 9.2, “Replica Attributes”.
Table 9.1. Changelog Attributes
| Object Class or Attribute | Description | Values |
|---|---|---|
| objectclass: top | Required object class for every entry. | |
| objectclass: extensibleObject | An object class which allows any other object class or attribute to be added to an entry. | |
| cn: changelog5 | The naming attribute for the changelog entry. |
Any string; the default usage is to set the common name to changelog5.
|
| nsslapd-changelogdir: directory | Sets the file and directory changelog, to which the Directory Server writes changes. |
Any directory; the default is /var/lib/dirsrv/slapd-.
|
| nsslapd-changelogmaxage: number unit | Sets how long the changelog keeps an entry before purging it. This is not used by consumers, but is recommended for hubs and suppliers, which keep changelogs. |
The number is any integer.
The unit can be
s for seconds, m for minutes, h for hours, d for days, or w for weeks.
|
Table 9.2. Replica Attributes
| Object Class or Attribute | Description | Values | ||
|---|---|---|---|---|
| objectclass: top | Required object class for every entry. | |||
| objectclass: extensibleObject | An object class which allows any other object class or attribute to be added to an entry. | |||
| objectclass: nsds5replica | An object class which allows replication attributes to be added to an entry. | |||
| cn: replica | The naming attribute for the replica. |
Any string; the default usage is to set the common name to replica for every configured replica.
| ||
| nsds5replicaroot: suffix | Sets which subtree is replicated. |
A root suffix associated with a database, since the entire database is replicated. For example:
dc=example,dc=com | ||
| nsds5replicaid: number |
The ID of the replica. This must be set to 65535 for consumers or hubs. For suppliers, this value must be a unique value.
|
| ||
| nsds5replicatype: number | Sets the type of replica, either read-only or read-write. |
| ||
| nsds5flags: number | Sets whether the replica writes to the changelog. |
| ||
| nsds5ReplicaPurgeDelay: number | Sets the period of time in seconds to wait before purging the state information from an entry or purging tombstone entries. This setting is required for all types of replicas — suppliers, hubs, and consumers. |
0 (keep forever) to 2147483647 (the maximum 32-bit integer); the default value is 604800, one week.
| ||
| nsds5ReplicaBindDN: DN | The supplier bind DN used by the supplier to bind to the consumer. This is required for consumers, hubs, and multi-master suppliers, but not for single-master suppliers. |
Any DN; the recommended DN is cn=Replication Manager,cn=config.
NOTE
For security, it is strongly recommended that you do not use the Directory Manager as the supplier bind DN.
| ||
| nsds5replicareferral: URL | Optional. An LDAP URL which a consumer or hub to which a consumer or hub can forward update requests. By default, update requests are sent to the masters for the consumer; use this parameter to override the default. |
Any LDAP URL. For example:
nsds5replicareferral:
ldap://supplier1.example.com:389
.
|
consumer1.example.com, create the replica entry. This entry identifies the database and suffix as participating in replication and sets what kind of replica the database is. There are four key attributes:
- nsds5replicaroot sets the subtree (suffix) which is being replicated.
- nsds5replicatype sets what kind of replica this database is. For a consumer, this value must be
2. - nsds5ReplicaBindDN give the DN as which the supplier will bind to the consumer to make changes.
- nsds5flags sets whether the replica writes to the changelog. For a consumer, this value must be
0.
ldapmodify creates a new consumer replica on the consumer1.example.com host for the dc=example,dc=com subtree.
/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 -h consumer1.example.com -v -a dn: cn=replica,cn=dc=example\,dc=com,cn=mapping tree,cn=config objectclass: top objectclass: nsds5replica objectclass: extensibleObject cn: replica nsds5replicaroot: dc=example,dc=com nsds5replicatype: 2 nsds5ReplicaBindDN: cn=replication manager,cn=config nsds5flags: 0
- On the hub server, such as
hub1.example.com, useldapmodifyto create the changelog entry./usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 -h hub1.example.com -v -a dn: cn=changelog5,cn=config objectclass: top objectclass: extensibleObject cn: changelog5 nsslapd-changelogdir: /var/lib/dirsrv/slapd-
instance_name/changelogdbThere is one important attribute with the changelog,nsslapd-changelogdir, which sets the directory where the changelog is kept.The changelog entry attributes are described in Table 9.1, “Changelog Attributes”. These attributes are described in more detail in the Directory Server Configuration and Command-Line Tool Reference. - On the hub host, create the replica entry. This
ldapmodifycommand creates a new hub replica on thehub1.example.comhost for thedc=example,dc=comsubtree./usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 -h hub1.example.com -v -a dn: cn=replica,cn=dc=example\,dc=com,cn=mapping tree,cn=config objectclass: top objectclass: nsds5replica objectclass: extensibleObject cn: replica nsds5replicaroot: dc=example,dc=com nsds5replicatype: 2 nsds5ReplicaPurgeDelay: 604800 nsds5ReplicaBindDN: cn=replication manager,cn=config nsds5flags: 1
This entry identifies the database and suffix as participating in replication and sets what kind of replica the database is. There are five key attributes:- nsds5replicaroot sets the subtree (suffix) which is being replicated.
- nsds5replicatype sets what kind of replica this database is. For a hub, this value must be
2. - nsds5ReplicaPurgeDelay sets how long an entry holds its status information or how long a tombstone entry is kept before deleting the information. The default value is
604800(one week). - nsds5ReplicaBindDN give the DN as which the supplier will bind to the hub to make changes.
- nsds5flags sets whether the replica writes to the changelog. For a hub, this value must be
1.
- The consumer host (
nsds5replicahost) and port (nsds5replicaport). - The DN for the supplier to use to bind with the consumer (
nsds5ReplicaBindDN). - The way that the supplier binds (
nsds5replicabindmethod). - Any credentials required (
nsds5replicabindcredentials) for that bind method and specified DN. - The subtree being replicated (
nsds5replicaroot). - The replication schedule (
nsds5replicaupdateschedule). - Any attributes which will not be replicated (
nsds5replicatedattributelist).
ldapmodify to add a replication agreement to every supplier for every consumer which it will updated. For example:
Example 9.4. Example Replication Agreement Entry
dn: cn=ExampleAgreement,cn=replica,cn=dc=example\,dc=com,cn=mapping tree,cn=config objectclass: top objectclass: nsds5replicationagreement cn: ExampleAgreement nsds5replicahost: consumer1 nsds5replicaport: 389 nsds5ReplicaBindDN: cn=replication manager,cn=config nsds5replicabindmethod: SIMPLE nsds5replicaroot: dc=example,dc=com description: agreement between supplier1 and consumer1 nsds5replicaupdateschedule: 0000-0500 1 nsds5replicatedattributelist: (objectclass=*) $ EXCLUDE authorityRevocationList nsds5replicacredentials: secret nsds5BeginReplicaRefresh: start
Table 9.3. Replication Agreement Attributes
| Object Class or Attribute | Description | Values | ||||
|---|---|---|---|---|---|---|
| objectclass: top | Required object class for every entry. | |||||
| objectclass: nsds5replicationagreement | An operational object class which contains the replication agreement attributes. | |||||
| cn: agreement_name | The naming attribute for the replication agreement. | Any string. | ||||
| nsds5replicahost: hostname | Gives the hostname of the consumer server; the hostname can be the fully qualified host and domain name. If TLS/SSL is enabled, the fully-qualified domain name is required. |
Any hostname. For example:
nsds5replicahost: consumer1 | ||||
| nsds5replicaport: number |
Gives the LDAP port for the consumer server.
To use TLS/SSL, give the secure port number (
636 by default) and set the nsds5ReplicaTransportInfo attribute to SSL.
To use Start TLS, which initiates a secure connection over a standard port, use the standard port,
389, with the nsds5ReplicaTransportInfo attribute to TLS.
To use simple authentication, use the standard port,
389, with the nsds5ReplicaTransportInfo attribute to LDAP.
| Any port number. | ||||
| nsds5replicatransportinfo: method |
To use TLS/SSL, set this parameter to
SSL.
To use Start TLS, which initiates a secure connection over a standard port, set this parameter to
TLS.
To use simple authentication, set this parameter to
LDAP.
|
| ||||
| nsds5ReplicaBindDN: DN | The supplier bind DN used by the supplier to bind to the consumer. This is required for consumers, hubs, and multi-master suppliers, but not for single-master suppliers. |
Any DN; the recommended DN is cn=Replication Manager,cn=config.
| ||||
| nsds5replicabindmethod: type |
The connection type for replication between the servers. The connection type defines how the supplier authenticates to the consumer.
Leaving the bind method empty or setting it to
SIMPLE means that the server uses basic password-based authentication. This requires the nsds5ReplicaBindDN and nsds5ReplicaCredentials attributes to give the bind information.
The
SSLCLIENTAUTH option uses a secure connection. This requires setting the nsds5ReplicaTransportInfo attribute be set to SSL or TLS. For certificate-based authentication, the consumer server must also have a certificate mapping to map the subject DN in the supplier's certificate to the replication manager entry.
Using
SASL/GSSAPI requires that the supplier server have a Kerberos keytab (as in Section 14.3.4.2, “About the KDC Server and Keytabs”), and the consumer server have a SASL mapping to map the supplier's principal to the real replication manager entry (as in Section 14.3.5.1, “Configuring SASL Identity Mapping from the Console”).
The
SASL/DIGEST-MD5 setting, like SIMPLE, uses password-based authentication and requires the nsds5ReplicaBindDN and nsds5ReplicaCredentials attributes to give the bind information.
NOTE
If secure binds are required for simple password authentication (Section 13.5.1, “Requiring Secure Binds”), then any replication operations will fail unless they occur over a secure connection. Using a secure connection (SSL/TLS and Start TLS connections or SASL authentication) is recommended, anyway.
|
| ||||
| nsds5replicabindcredentials: hash | Only for simple authentication. Stores the hashed password used with the bind DN given for simple authentication. | |||||
| nsds5replicaroot: suffix | Sets which subtree is replicated. |
A root suffix associated with a database, since the entire database is replicated. For example:
dc=example,dc=com | ||||
| description: text | A text description of the replication agreement. | Any text string. It is advisable to make this a useful description, such as agreement between supplier1 and consumer1. | ||||
| nsds5replicatedattributelist: '(objectclass=*)' $ EXCLUDE attributes |
Optional. Sets which attributes will not be replicated. The filter must be set to "(objectclass=*)", and the list of attributes are separated by a single space.
|
'(objectclass=*)' $ EXCLUDE userPassword manager cn | ||||
| nsds5replicaupdateschedule: start_time end_time days |
Sets the start and end time for the replication updates and the days on which replication occurs. If the schedule is omitted, replication will take place all the time.
The replication schedule cannot cross midnight (
0000). So, it is possible to set a schedule that begins at 0001 and ends at 2359 on the same day, but it is not possible to set one that begins at 2359 on one day and ends at 0001 on the next.
|
Has the following value, with the start (SSSS) and end (EEEE) times set in the form
HHMM
The times are given in 24 hour clock format, so 0000 is midnight and 2359 is 11:59 PM. For example, the setting
1030 1630 schedules replication from 10:30 AM to 4:30 PM. The times cannot wrap around midnight, so the setting 2300 0100 is not valid.
The days ranging from
0 (Sunday) to 6 (Saturday). Setting 06 schedules replication on Sunday and Saturday, while 135 schedules replication on Monday, Wednesday, and Friday.
nsds5replicaupdateschedule:
For example, this schedules replication between midnight (0000) and 5am (0500) on Monday and Tuesday:
nsds5replicaupdateschedule:
0000 0500 12
| ||||
| nsds5BeginReplicaRefresh: start |
Optional. Performs an online (immediate) initialization of the consumer. If this is set, the attribute is only present as long as the consumer is being initialized; when the initialization is complete, the attribute is deleted automatically.
If this is not set, then consumer initialization must be performed manually.
|
start; any other value is ignored.
|
nsds5replicarefresh attribute to the replication agreement entry. If the attribute is included when the replication agreement is created, initialization begins immediately. It can be added later to initialize the consumer at any time. This attribute is absent by default, and it will be automatically deleted once the consumer initialization is complete.
- Find the DN of the replication agreement on the supplier server that is for the consumer to be initialized. For example:
ldapsearch -h supplier1.example.com -p 389 -D "cn=directory manager" -w secret -s sub -b cn=config "(objectclass=nsds5ReplicationAgreement)"
This command returns all of the replication agreements configured on the supplier in LDIF format. Get the DN of the replication agreement with the consumer to be initialized. This is the replication agreement which will be edited. - Edit the replication agreement, and add the
nsds5BeginReplicaRefreshattribute:/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 -h supplier1.example.com dn: cn=ExampleAgreement,cn=replica,cn=dc=example\,dc=com,cn=mapping tree,cn=config changetype: modify replace: nsds5beginreplicarefresh nsds5beginreplicarefresh: start
ldapmodifydoes not prompt for input; simply type in the LDIF statement, and then hit enter twice when the LDIF statement is complete. Close theldapmodifyutility by hitting Ctrl+C.
nsds5beginreplicarefresh attribute is automatically deleted from the replication agreement entry.
IMPORTANT
NOTE
nsslapd-idletimeout setting must be set to a large enough time period (or even an unlimited period) to allow the entire database to be initialized before the operation times out. Alternatively, the nsIdleTimeout setting for the supplier bind DN entry can be set high enough to allow the online initialization operation to complete, without having to change the global setting.
- Use one supplier, a data master, as the source for initializing consumers.
- Do not reinitialize a data master when the replication agreements are created. For example, do not initialize server1 from server2 if server2 has already been initialized from server1.
- For a multi-master scenario, initialize all of the other master servers in the configuration from one master.
- For cascading replication, initialize all of the hubs from a supplier, then initialize the consumers from the hubs.
- Make sure there are no updates in progress.
- Stop the supplier server.
- Open the Directory Server Console for the read-only replica.
- In the Configuration tab, select Replication. In the right pane, select the Enable changelog checkbox.
- Select the suffix, and, in the Replica Settings tab, change the replica role to a single master or multi-master.

- Assign a unique replica ID.

- Save the changes, and restart the server.
- In the Directory Server Console, select the Configuration tab.
- Select the Replication folder in the left navigation tree and then the Supplier Server Settings tab in the right pane.
- Clear the Enable Changelog checkbox.

- Click .
- Restart the Directory Server.
- Reinitialize the consumers, as in Section 9.10, “Initializing Consumers”.
NOTE
NOTE
NOTE
nsslapd-idletimeout setting must be set to a large enough time period (or even an unlimited period) to allow the entire database to be initialized before the operation times out. Alternatively, the nsIdleTimeout setting for the supplier bind DN entry can be set high enough to allow the online initialization operation to complete, without having to change the global setting.
NOTE
- Create a replication agreement.
- On the supplier server, on the Directory Server Console, select the Configuration tab.
- Expand the Replication folder, then expand the replicated database. Right-click the replication agreement, and choose Initialize Consumer from the pop-up menu.
A message opens warning that any information already stored in the replica on the consumer will be removed. - Click Yes in the confirmation box.
IMPORTANT
nsds5BeginReplicaRefresh attribute to the replication agreement entry. This attribute is absent by default, and it will be automatically deleted once the consumer initialization is complete.
- Find the DN of the replication agreement on the supplier server that is for the consumer to be initialized. For example:
ldapsearch -h supplier1.example.com -p 389 -D "cn=directory manager" -w secret -s sub -b cn=config "(objectclass=nsds5ReplicationAgreement)"This command returns all of the replication agreements configured on the supplier in LDIF format. Get the DN of the replication agreement with the consumer to be initialized. This is the replication agreement which will be edited. - Edit the replication agreement, and add the
nsds5BeginReplicaRefreshattribute:/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 -h supplier1.example.com dn: cn=ExampleAgreement,cn=replica,cn=dc=example\,dc=com,cn=mapping tree,cn=config changetype: modify replace: nsds5beginreplicarefresh nsds5beginreplicarefresh: start
ldapmodifydoes not prompt for input; simply type in the LDIF statement, and then hit enter twice when the LDIF statement is complete. Close theldapmodifyutility by hitting Ctrl+C.
ldapsearch for the replication agreement entry.
ldapsearch -D "cn=directory manager" -w secret -p 389 -h server.example.com -s base -b 'cn=ExampleAgreement,cn=dc=example\,dc=com,cn=mapping tree,cn=config' '(objectclass=*)'
nsds5BeginReplicaRefresh attribute is present, the initialization is still in progress. If the initialization is complete, then the attribute nsds5ReplicaLastInitStatus shows the status. If the initialization was successful, the value of nsds5ReplicaLastInitStatus is Total update succeeded. If the initialization was not successful, this attribute shows information about the error; check the error logs for both the supplier and consumer for additional information.
IMPORTANT
- Create a replication agreement.
- Export the replica on the supplier server to an LDIF file.
- Import the LDIF file with the supplier replica contents to the consumer server.
- When creating a replication agreement, by selecting Create consumer initialization file in the Initialize Consumer dialog box of the Replication Agreement Wizard.
- From the Directory Server Console, by right-clicking the replication agreement under the Replication folder and choosing Create LDIF File from the pop-up menu.
- From the command line by using the export command, as described in Section 4.2.3, “Exporting to LDIF from the Command Line”. Exporting to LDIF with any of the command-line tools requires using an option to export the database as a replica; this means that the exported LDIF contains the proper entries to initialize the consumer when the LDIF is imported.For the
db2ldifanddb2ldif.plscripts, this is the-roption. For example:db2ldif
-r-n database1 -a /export/output.ldifFor thecn=export,cn=tasks,cn=configentry, this is thensExportReplicaattribute./usr/lib64/mozldap/ldapmodify
-a-D "cn=directory manager" -w secret -p 389 -h server.example.com dn: cn=example export,cn=export,cn=tasks,cn=config objectclass: extensibleObject cn: example export nsInstance: userRoot nsFilename: /home/files/example.ldifnsExportReplica: true
ldif2db script or ldif2db.pl script. Both import methods are described in Section 4.1.4, “Importing from the Command Line”.
NOTE
NOTE
- Create a new database on the destination server to match the database from the source server.Before initializing the consumer from the backup files, be certain that the appropriate database has been created on the destination server so that the database exists to be restored and initialized.
- Enable replication on the backend as a dedicated consumer.
- If there is already a replication agreement to that host and port, then replication should resume immediately after running the restore script. Otherwise, create the replication agreement on the source server (or whatever server is the supplier), and select the Do not initialize consumers at this time radio button.
- Stop the source Directory Server if it is running. For example:
service dirsrv stop slapd-example
- From the command line, run the
db2bakutility, and archive the current directory installation./etc/dirsrv/slapd-
instance_name/db2bakIn addition, a new backup can be created by hitting the button in the Tasks tab of the Directory Server Console and then putting the name of the archive directory in the Directory:... field. Alternatively, select any previous back-up to initialize the consumer.This backup information is recovered in the destination replica. - Restart the source Directory Server. For example:
service dirsrv start slapd-example
- Copy the archived files to a directory on the destination server, such as
archiveDirectory. - Stop the destination Directory Server if it is running.
service dirsrv stop slapd-example2
- On the destination server, restore the archives with the
bak2dbscript, using the optional-nparameter to specify the backend instance name. This-nparameter is similar to the-nused withldif2dbanddb2ldif. For example:/usr/lib/dirsrv/slapd-example2/bak2db /tmp/archiveDirectory -n userRoot
- Restart the destination Directory Server. For example:
service dirsrv start slapd-example2
NOTE
- In the Directory Server Console, click the Configuration tab, expand the Replication folder and database nodes, and select the replication agreement corresponding to the replica to update.
- Right click the replication agreement, and choose Send Updates Now from the drop-down list.

replicate_now.sh. Substitute the actual values for the variables listed in Example 9.5, “Replicate_Now Script Example”.
NOTE
Example 9.5. Replicate_Now Script Example
#!/bin/sh SUP_HOST=supplier_hostnameSUP_PORT=supplier_portnumberSUP_MGRDN=supplier_directoryManagerSUP_MGRPW=supplier_directoryManager_passwordMY_HOST=consumer_hostnameMY_PORT=consumer_portnumberldapsearch -1 -T -h ${SUP_HOST} -p ${SUP_PORT} -D "${SUP_MGRDN}" \ -w ${SUP_MGRPW} -b "cn=mapping tree,cn=config" \"(&(objectclass=nsds5replicationagreement)(nsDS5ReplicaHost=${MY_HOST}) \(nsDS5ReplicaPort=${MY_PORT}))" dn nsds5ReplicaUpdateSchedule > /tmp/$$ cat /tmp/$$ |awk 'BEGIN { s = 0 }/^dn: / { print $0;print "changetype: modify";print "replace: nsds5ReplicaUpdateSchedule";print "nsds5ReplicaUpdateSchedule: 0000-2359 0123456";print "-";print "";print $0;print "changetype: modify"; print "replace:nsds5ReplicaUpdateSchedule";} /^nsds5ReplicaUpdateSchedule: / { s = 1; print $0; }/^$/{if ( $s == 1 ){ print "-" ; print ""; }else{ print "nsds5ReplicaUpdateSchedule: 0000-2359 0123456";print "-" ; print ""; };s = 0; } ' > /tmp/ldif.$$echo "Ldif is in /tmp/ldif.$$"echo ldapmodify -c -h ${SUP_HOST} -p ${SUP_PORT} -D "${SUP_MGRDN}" \-w ${SUP_MGRPW} -f /tmp/ldif.$$
Table 9.4. Replicate_Now Variables
| Variable | Definition |
|---|---|
| supplier_hostname | Hostname of the supplier to contact for information on replication agreements with the current consumer. |
| supplier_portnumber | LDAP port in use on the supplier. |
| supplier_directoryManager | DN of the privileged Directory Manager user on the supplier. |
| supplier_directoryManager_password | Password of the privileged Directory Manager user on the supplier. |
| consumer_hostname | Hostname of the current consumer. |
| consumer_portnumber | LDAP port in use on the consumer. |
ldapmodify command in the script with the appropriate parameters and values. For more information on the ldapmodify command, see Section 3.2, “Managing Entries from the Command Line”.
- Configure both the supplier and consumer servers to use SSL.
- Configure the consumer server to recognize the supplier server's certificate as the supplier DN. Do this only to use SSL client authentication rather than simple authentication.
NOTE
- Select SSL Client Authentication.With SSL client authentication, the supplier and consumer servers use certificates to authenticate to each other.
- Select Simple Authentication.With simple authentication, the supplier and consumer servers use a bind DN and password to authenticate to each other, which are supplied in the Replication Agreement Wizard text fields provided. Simple authentication takes place over a secure channel but without certificates.
NOTE
If secure binds are required for simple password authentication (Section 13.5.1, “Requiring Secure Binds”), then any replication operations will fail unless they occur over a secure connection. Using a secure connection (SSL/TLS and Start TLS connections or SASL authentication) is recommended, anyway.
nsDS5ReplicaTimeoutsets the number of seconds that the replication operation waits for a response from the consumer before timing out and failing. To set the optimum number, check the access logs to see the average amount of time that the replication process takes, and set the timeout period accordingly.nsDS5DebugReplicaTimeoutsets the timeout period for the replication operation when debug logging is enabled. This setting may be appreciably higher than thensDS5ReplicaTimeoutsetting because debug logging can slow down directory operations. This attribute can optionally set an error log level where this parameter is applied; the default is replication debugging (8192).
NOTE
ou=People suffix:
/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 dn: cn=replica,cn=ou=People\,dc=example\,dc=com,cn=mapping tree,cn=config changetype: modify add: nsDS5ReplicaTimeout nsDS5ReplicaTimeout: 600 add: nsDS5DebugReplicaTimeout nsDS5DebugReplicaTimeout: 6000
o=NetscapeRoot.
- Install and configure the first Directory Server instance.The
setup-ds-admin.plscript has an option,-f, which references aninf. Theinfcan be used to import LDIF files through theConfigFileparameter, and the LDIF files can create databases, suffixes, and replication entries. (Theinffile is described in more detail in the Directory Server Installation Guide.)/usr/sbin/setup-ds-admin.pl -f /tmp/server1.inf
To configure theo=NetscapeRootdatabase onserver1as a multi-master supplier replica, use the following statements in theinffile:[slapd] ... ConfigFile = repluser.ldif Example 9.1, “Example Supplier Bind DN Entry” ConfigFile = changelog.ldif Example 9.2, “Example Changelog Entry” ConfigFile = replica.ldif Example 9.3, “Example Supplier Replica Entry” ConfigFile = replagreement.ldif Example 9.4, “Example Replication Agreement Entry” ...
- Install and configure the second Directory Server instance. For the second server,
server2.example.com, use thesetup-ds.plcommand, which installs a Directory Server instance without installing a local Admin Server./usr/sbin/setup-ds.pl -f /tmp/server2.inf
With server2, use theinffile to create and configure ao=NetscapeRootdatabase onserver2as a multi-master supplier replica:[slapd] ... ConfigFile = netscaperootdb.ldif Example 2.1, “Example Root Suffix Entry” ConfigFile = repluser.ldif Example 9.1, “Example Supplier Bind DN Entry” ConfigFile = changelog.ldif Example 9.2, “Example Changelog Entry” ConfigFile = replica.ldif Example 9.3, “Example Supplier Replica Entry” ConfigFile = replagreement.ldif Example 9.4, “Example Replication Agreement Entry” ...
- Initialize the
o=NetscapeRootdatabase onserver2fromserver1. Add thensds5replicarefreshattribute to the replication agreement onserver1./usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 -h supplier1.example.com dn: cn=ExampleAgreement1,cn=replica,cn=o=NetscapeRoot,cn=mapping tree,cn=config changetype: modify replace: nsds5beginreplicarefresh nsds5beginreplicarefresh: start
- Run the
register-ds-admin.plto create a local Admin Server onserver2and switch the configuration directory forserver2to its owno=NetscapeRootdatabase fromserver1./usr/sbin/register-ds-admin.pl
- Disable the PTA Plug-in on
server2so that it does not pass bind operations for the administrative users in itso=NetscapeRoottoserver1.
- Directory Server 8.2 is a consumer.
- The legacy suppliers can be Directory Server 4.0, 4.1, and 4.1x.
- A legacy Directory Server and Directory Server 8.2 cannot update the same replica. However, this version of Directory Server can have different replicas, where one is supplied by a legacy Directory Server and the other is supplied by Directory Server 8.2.
- Directory Server 8.2 cannot be a supplier for other replicas.
inetorgperson object class, but not the top or person object classes:
dn: uid=jsmith,ou=People,dc=example,dc=com objectclass: inetorgperson uid: jsmith cn: John Smith sn: Smith
dn: uid=jsmith,ou=People,dc=example,dc=comobjectclass: topobjectclass: personobjectclass: inetorgperson uid: jsmith cn: John Smith sn: Smith
- In the Directory Server Console, click the Configuration tab.
- Select the Replication node, and click the Legacy Consumer Settings tab in the right pane.
- Check the Enable Legacy Consumer checkbox.
This activates the fields in the Authentication box. - Optionally, specify a password at least 8 characters long.
- Click .
- Now configure legacy consumer settings for each replica that will receive updates from a legacy supplier.
- In the navigation tree, expand the Replication node, and select a replica that will receive updates from the legacy supplier.
- In the Common Settings area, select the Enable Replica and Updatable by a 4.x Replica checkboxes.
These options are the only ones required for replication to work. Optionally, specify a replica ID. It is not necessary to specify a supplier DN because the one specified in step 4 will be used. - Click .
- Repeat step 6 for each read-only replica that will receive updates from a legacy supplier.
- To complete the legacy replication setup, configure the legacy supplier to replicate to the Directory Server 8.2 instance. For instructions on configuring a replication agreement on a 4.x Directory Server, refer to the documentation for the legacy Directory Server.
NOTE
cn=changelog.
changeLogEntry and can include the attributes listed in Table 9.5, “Attributes of a Retro Changelog Entry”.
Table 9.5. Attributes of a Retro Changelog Entry
| Attribute | Definition |
|---|---|
| changeNumber | This single-valued attribute is always present. It contains an integer which uniquely identifies each change. This number is related to the order in which the change occurred. The higher the number, the later the change. |
| targetDN |
This attribute contains the DN of the entry that was affected by the LDAP operation. In the case of a modrdn operation, the targetDN attribute contains the DN of the entry before it was modified or moved.
|
| changetype |
Specifies the type of LDAP operation. This attribute can have a value of add, delete, modify, or modrdn.
|
| changes | For add and modify operations, contains the changes made to the entry in LDIF format. |
| newrdn |
In the case of modrdn operations, specifies the new RDN of the entry.
|
| deleteoldrdn |
In the case of modrdn operations, specifies whether the old RDN was deleted.
|
| newSuperior |
In the case of modrdn operations, specifies the newSuperior attribute of the entry.
|
cn=Retro Changelog Plugin,cn=plugins,cn=config entry in dse.ldif. To enable the retro changelog plug-in from the command line:
- Create an LDIF file that contains the following LDIF update statements:
dn: cn=Retro Changelog Plugin,cn=plugins,cn=config changetype: modify replace: nsslapd-pluginEnabled nsslapd-pluginEnabled: on
- Use the
ldapmodifycommand to import the LDIF file into the directory./usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 -h server.example.com -f retro.ldif
- Restart the server.For information on restarting the server, see Section 1.4, “Starting and Stopping Servers”.
cn=changelog.
nsslapd-changelogmaxage configuration attribute in the cn=Retro Changelog Plugin,cn=plugins,cn=config entry.
nsslapd-changelogmaxage attribute is a single-valued attribute. Its syntax is as follows:
nsslapd-changelogmaxage: Integer timeUnits for seconds, m for minutes, h for hours, d for days, or w for weeks.
NOTE
nsslapd-changelogmaxage: 2d
(&(changeNumber>=X)(changeNumber<=Y)).
- Read, search, and compare rights are granted to all authenticated users (
userdn=anyone, not to be confused with anonymous access whereuserdn=all) to the retro changelog top entrycn=changelog. - Write and delete access are not granted, except implicitly to the Directory Manager.
aci attribute of the cn=changelog entry.
- Select the Status tab, and then, in the left navigation tree, select Replication Status.
In the right pane, a table appears that contains information about each of the replication agreements configured for this server. - Click to update the contents of the tab.The status information displayed is described in Table 9.6, “Directory Server Console Replication Status”.
Table 9.6. Directory Server Console Replication Status
| Table Header | Description |
|---|---|
| Agreement | The name of the replication agreement. |
| Replica suffix | The suffix that is replicated. |
| Supplier | The supplier server in the agreement. |
| Consumer | The consumer server in the agreement. |
| Number of changes | The number of changes sent to this replica since the server started. |
| Last replica update began | The time when the most recent replication update started. |
| Last replica update ended | The time when the most recent replication update ended. |
| Last update message | The status for the most recent replication updates. |
| Consumer initialization | The current status on consumer initialization (in progress or not). |
| Last consumer initialization update message | The status on the last initialization of the consumer. |
| Last consumer initialization began | The time when the initialization of the consumer replica started. |
| Last consumer initialization ended | The time when the initialization of the consumer replica ended. |
repl-monitor.pl script, which is explained in detail in the Directory Server Configuration and Command-Line Tool Reference, monitors replication status to a greater extent by providing these functionalities:
- Lists for each supplier replica on each Directory Server discovered, server URL or alias, replica ID, replica root, and maximum change sequence number (
maxcsn). - Lists corresponding to each supplier replica listed above and for each direct or indirect consumer replicas discovered, server URL or alias, replica root, replica type, connection type of the replication sessions, replication schedule, replication status, supplier
maxcsn, and time lag between the consumermaxcsnand the suppliermaxcsn.The time lag field uses different colors to indicate the degree of time lag. The threshold for each color is configurable. - Displays the change sequence number (CSN) in human-readable format (instead of hex strings) in the MM/DD/YYYY HH:MI Seq# SubSeq# format, where Seq# and SubSeq# are omitted if they are zero.
- Shows the output/result in the HTML format. The script writes the output to an HTML file, which can be configured to refresh itself automatically; the refresh interval is also configurable.
- Open the Administration Server URL in a web browser.
http://
hostname:admin_port - Click Red Hat Administration Express, and, when prompted, log in.
- Select a supplier Directory Server instance, and click Replication Status.This brings up a page for specifying the runtime parameters of the replication-monitoring tool.
- In the Configuration file field, type the path to the configuration file created in step 1, and click .

300 seconds.

| Table | Description |
|---|---|
| Table Header | The table header shows the replica ID of the supplier replica, the replica root, and the maximum Change State Number (CSN) on the supplier. The important thing is to make sure that each supplier LDAP server has its unique replica ID. Multiple replica roots on one LDAP server, however, could share the same replica ID. |
| Table Row | Each row represents a direct or indirect consumer of the supplier (identified in the Table Header). |
| Max CSN | It is the most recent CSN the consumer has replayed that was originated from the supplier (identified in the Table Header). |
| Time Lag |
It shows the time difference between the supplier and the consumer's max CSNs for the changes originated from the supplier (identified in the Table Header). A consumer is in sync with its supplier when its time lag is 0.
|
| Last Modify Time | It is roughly the time when the consumer's max CSN was replayed. |
| Supplier | This column lists all the suppliers of the consumer. |
| Sent/Skipped | Each supplier lists roughly how many changes originated from the supplier (identified in the Table Header) have been replayed or skipped by the consumer. The numbers are kept in suppliers' memory only. They will be cleared if the supplier is restarted. |
| Update Status | The number is the status code, and the string is the implication of the status code. Watch this column for possible deadlock if all the suppliers complain that they cannot acquire the busy replica. It is normal if one of the suppliers is doing an update while the others can't acquire the busy replica. |
nsds5ReplConflict. The nsds5ReplConflict attribute is an operational attribute which is indexed for presence and equality, so it is simple to search for entries that contain this attribute. For example:
ldapsearch -DadminDN-wpassword-b "dc=example,dc=com" "nsds5ReplConflict=*" \* nsds5ReplConflict
nsds5ReplConflict attribute is already indexed for presence and equality, but for performance reasons, if there are many conflicting entries every day, index the nsds5ReplConflict attribute in other indexes. For information on indexing, see Chapter 7, Managing Indexes.
nsuniqueid. When a naming conflict occurs, this unique ID is appended to the non-unique DN.
uid=adamss,ou=people,dc=example,dc=com is created on Server A at time t1 and on Server B at time t2, where t2 is greater (or later) than t1. After replication, Server A and Server B both hold the following entries:
uid=adamss,ou=people,dc=example,dc=com(created at timet1)nsuniqueid=66446001-1dd211b2+uid=adamss,dc=example,dc=com(created at timet2)
- Rename the entry using a new value for the naming attribute, and keep the old RDN. For example:
/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 -h server.example.com dn: nsuniqueid=66446001-1dd211b2+uid=adamss,dc=example,dc=com changetype: modrdn newrdn: uid=
NewValuedeleteoldrdn: 0 - Remove the old RDN value of the naming attribute and the conflict marker attribute. For example:
/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 -h server.example.com dn: uid=
NewValue,dc=example,dc=com changetype: modify delete: uid uid: adamss - delete: nsds5ReplConflict -
NOTE
nsuniqueid cannot be deleted.
nsuniqueid uid value. Attempting to modify this entry from the Console returns the error Changes cannot be saved for entries with multi-valued RDNs.
nsuniqueid uid. However, the entry cannot be changed or corrected by changing the user ID and RDN values to something different. For example, if jdoe was the user ID and it should be changed to jdoe1, it cannot be done from the Console. Instead, use the ldapmodify command:
/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 -h server.example.com dn: cn=John Doe changetype: modify replace: uid uid: jdoe dn: cn=John Doe changetype: modrdn newrdn: uid=jdoe1 deleteoldrdn: 1
- Rename the entry using a different naming attribute, and keep the old RDN. For example:
/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 -h server.example.com dn: nsuniqueid=66446001-1dd211b2+dc=pubs,dc=example,dc=com changetype: modrdn newrdn: cn=
TempValuedeleteoldrdn: 0 - Remove the old RDN value of the naming attribute and the conflict marker attribute. For example:
/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 -h server.example.com dn: cn=
TempValue,dc=example,dc=com changetype: modify delete: dc dc: pubs - delete: nsds5ReplConflict -NOTE
The unique identifier attributensuniqueidcannot be deleted. - Rename the entry with the intended attribute-value pair. For example:
/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 -h server.example.com dn: cn=
TempValue,dc=example,dc=com changetype: modrdn newrdn: dc=NewValuedeleteoldrdn: 1Setting the value of thedeleteoldrdnattribute to1deletes the temporary attribute-value paircn=TempValue. To keep this attribute, set the value of thedeleteoldrdnattribute to0.
glue entry to avoid having orphaned entries in the directory.
glue and extensibleObject. Glue entries can be created in several ways:
- If the conflict resolution procedure finds a deleted entry with a matching unique identifier, the glue entry is a resurrection of that entry, with the addition of the
glueobject class and thensds5ReplConflictattribute.In such cases, either modify the glue entry to remove theglueobject class and thensds5ReplConflictattribute to keep the entry as a normal entry or delete the glue entry and its child entries. - The server creates a minimalistic entry with the
glueandextensibleObjectobject classes.
nsds5ReplConflict attribute. If access is not restricted to these entries, then the applications requiring one attribute only pick up both the original entry and the conflict resolution entry containing the nsds5ReplConflict, and operations will fail.
/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 -h server.example.com
dn: dc=example,dc=com
changetype: modify
delete: aci
aci: (target ="ldap:///dc=example,dc=com")(targetattr
!="userPassword")(version 3.0;acl "Anonymous read-search
access";allow (read, search, compare)(userdn = "ldap:///anyone");)
-
add: aci
aci: (target="ldap:///dc=example,dc=com")(targetattr!="userPassword")
(targetfilter="(!(nsds5ReplConflict=*))")(version 3.0;acl
"Anonymous read-search access";allow (read, search, compare)
(userdn="ldap:///anyone");)
-nsds5ReplConflict attribute from search results.
8192, which is replication debugging. See Section 15.3.5, “Configuring Log Levels”.
8192 with ldapmodify:
/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 -h server.example.com dn: cn=config changetype: modify replace: nsslapd-errorlog-level nsslapd-errorlog-level: 8192
0.
cl-dump.pl script, which is explained in detail in the Directory Server Configuration and Command-Line Tool Reference can also help troubleshoot replication-related problems. Depending on the usage options, the script can selectively dump a particular replica:
- Dump the contents of a
replication-change-logfile and in-memory variablespurge RUVandmaxRUV. - Grep and interpret change sequence numbers (CSNs) in the changelog.
- Get the base-64 encoded changelog from the Directory Server, and then decode the changelog.
Table 9.7. Replication Errors
| Error/Symptom | Reason | Impact | Remedy |
|---|---|---|---|
| agmt=%s (%s:%d) Replica has a different generation ID than the local data | The consumer specified at the beginning of this message has not been (successfully) initialized yet, or it was initialized from a different root supplier. | The local supplier will not replicate any data to the consumer. | Ignore this message if it occurs before the consumer is initialized. Otherwise, reinitialize the consumer if the message is persistent. In a multi-master environment, all the servers should be initialized only once from a root supplier, directly or indirectly. For example, M1 initializes M2 and M4, M2 then initializes M3, and so on. The important thing to note is that M2 must not start initializing M3 until M2's own initialization is done (check the total update status from the M1's Console or M1 or M2's error log). Also, M2 should not initialize M1 back. |
| Warning: data for replica's was reloaded, and it no longer matches the data in the changelog. Recreating the changelog file. This could affect replication with replica's consumers, in which case the consumers should be reinitialized. | This message may appear only when a supplier is restarted. It indicates that the supplier was unable to write the changelog or did not flush out its RUV at its last shutdown. The former is usually because of a disk-space problem, and the latter because a server crashed or was ungracefully shut down. |
The server will not be able to send the changes to a consumer if the consumer's maxcsn no longer exists in the server's changelog.
| Check the disk space and the possible core file (under the server's logs directory). If this is a single-master replication, reinitialize the consumers. Otherwise, if the server later complains that it can't locate some CSN for a consumer, see if the consumer can get the CSN from other suppliers. If not, reinitialize the consumer. |
| agmt=%s(%s:%d): Can't locate CSN %s in the changelog (DB rc=%d). The consumer may need to be reinitialized. | Most likely the changelog was recreated because of the disk is full or the server ungracefully shutdown. | The local server will not be able to send any more change to that consumer until the consumer is reinitialized or gets the CSN from other suppliers. | If this is a single-master replication, reinitialize the consumers. Otherwise, see if the consumer can get the CSN from other suppliers. If not, reinitialize the consumer. |
| Too much time skew | The system clocks on the host machines are extremely out of sync. | The system clock is used to generate a part of the CSN. In order to reflect the change sequence among multiple suppliers, suppliers would forward-adjust their local clocks based on the remote clocks of the other suppliers. Because the adjustment is limited to a certain amount, any difference that exceeds the permitted limit will cause the replication session to be aborted. |
Synchronize the system clocks on the Directory Server host machines. If applicable, run the network time protocol (ntp) daemon on those hosts.
|
| agmt=%s(%s:%d): Warning: Unable to send endReplication extended operation (%s) | The consumer is not responding. | If the consumer recovers without being restarted, there is a chance that the replica on the consumer will be locked forever if it did not receive the release lock message from the supplier. | Watch if the consumer can receive any new change from any of its suppliers, or start the replication monitor, and see if all the suppliers of this consumer warn that the replica is busy. If the replica appears to be locked forever and no supplier can get in, restart the consumer. |
| Changelog is getting too big. | Either changelog purge is turned off, which is the default setting, or changelog purge is turned on, but some consumers are way behind the supplier. |
By default changelog purge is turned off. To turn it on from the command line, run ldapmodify as follows:
/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 -h server.example.com dn: cn=changelog5,cn=config changetype: modify add: nsslapd-changelogmaxage nsslapd-changelogmaxage: 1d
where
1d means 1 day. Other valid time units are s for seconds, m for minutes, h for hours, and w for weeks. A value of 0 turns off the purge.
With changelog purge turned on, a purge thread that wakes up every five minutes will remove a change if its age is greater than the value of
nsslapd-changelogmaxage and if it has been replayed to all the direct consumers of this supplier (supplier or hub).
If it appears that the changelog is not purged when the purge threshold is reached, check the maximum time lag from the replication monitor among all the consumers. Irrespective of what the purge threshold is, no change will be purged before it is replayed by all the consumers.
| |
| The Replication Monitor is not responding. (For information on Replication Monitor, see Section 9.17, “Monitoring Replication Status”.) | The SSL port is specified in some replication agreement, but the certificate database is not specified or not accessible by the Replication Monitor. If there is no SSL port problem, one of the servers in the replication topology might hang. |
Map the SSL port to a non-SSL port in the configuration file of the Replication Monitor. For example, if 636 is the SSL port and 389 is the non-SSL port, add the following line in the [connection] section:
*:636=389:*:password | |
| In the Replication Monitor, some consumers show just the header of the table. (For information on Replication Monitor, see Section 9.17, “Monitoring Replication Status”.) |
No change has originated from the corresponding suppliers. In this case, the MaxCSN: in the header part should be "None".
| There is nothing wrong if there is no change originated from a supplier. |
- 10.1. About Windows Sync
- 10.2. Configuring Windows Sync
- 10.2.1. Step 1: Configure SSL on Directory Server
- 10.2.2. Step 2: Configure the Active Directory Domain
- 10.2.3. Step 3: Select or Create the Sync Identity
- 10.2.4. Step 4: Install the Password Sync Service
- 10.2.5. Step 5: Configure the Password Sync Service
- 10.2.6. Step 6: Configure the Directory Server Database for Synchronization
- 10.2.7. Step 7: Create the Synchronization Agreement
- 10.2.8. Step 8: Configure Directory Server User and Group Entries for Synchronization
- 10.2.9. Step 9: Begin Synchronization
- 10.3. Synchronizing Users
- 10.4. Synchronizing Groups
- 10.4.1. About Windows Group Types
- 10.4.2. Group Attributes Synchronized between Directory Server and Active Directory
- 10.4.3. Group Schema Differences between Red Hat Directory Server and Active Directory
- 10.4.4. Configuring Group Sync for Directory Server Groups
- 10.4.5. Configuring Group Sync for Active Directory Groups
- 10.5. Deleting and Resurrecting Entries
- 10.6. Sending Synchronization Updates
- 10.7. Modifying the Sync Agreement
- 10.8. Configuring Unidirectional Synchronization
- 10.9. Managing the Password Sync Service
- 10.10. Troubleshooting
- Directory Server Windows Sync. Synchronization for user and group entries is configured in a synchronization agreement, much like replication is configured in a replication agreement. A sync agreement defines what kinds of entries are synchronized (users, groups, or both) and which direction changes are synced (from the Directory Server to Active Directory, from Active Directory to Directory Server, or both).The Directory Server relies on the Multi-Master Replication Plug-in to synchronize user and group entries. The same changelog that is used for multi-master replication is also used to send updates from the Directory Server to Active Directory as LDAP operations. The server also performs LDAP search operations against its Windows server to synchronize changes made to Windows entries to the corresponding Directory Server entry.
- Password Sync Service. Password changes made on Directory Server are automatically synced over to Active Directory, but there must be a special hook to recognize and transmit password changes on Active Directory over to Directory Server. This is done by the Password Sync Service. This application captures password changes on the Windows machines and send them to the Directory Server over LDAPS.The Password Sync Service must be installed on every Active Directory domain controller.
NOTE
- When creating the sync agreement, there is an option to synchronizing new Windows entries (
nsDS7NewWinUserSyncEnabledandnsDS7NewWinGroupSyncEnabled) as they are created. If these attributes are set toon, then existing Windows users/groups are synchronized to the Directory Server, and users/groups as they are created are synchronized to the Directory Server.Within the Windows subtree, only entries with user or group object classes can be synchronized to Directory Server. - On the Directory Server, only entries with the
ntUserorntGroupobject classes and attributes can be synchronized.
IMPORTANT
WARNING
NOTE
- CA certificate, shared between the Directory Server and Active Directory
- Server certificates for the Directory Server and Active Directory sync peers, which are accessible by the sync services
- Generate a certificate request.
- In the Directory Server Console, select the Tasks tab, and click Manage Certificates.

- Select the Server Certs tab, and click the button at the bottom.

- Fill in the certificate information, and save the certificate request to a file.
- Submit the certificate to a certificate authority, and retrieve it once it is issued.The method for submitting certificate requests and retrieving certificates varies for each CA.
- Install the new certificate.
- In the Directory Server Console, select the Tasks tab, and click Manage Certificates.
- Select the Server Certs tab, and click at the bottom of the window.
- Paste in the certificate, and set the password for the token database.
- Install the CA certificate for the issuing CA.
- Download and save the CA certificate from the CA's site. Each CA has a slightly different way of making its CA certificate available.
- In the Directory Server Console, select the Tasks tab, and click Manage Certificates.
- Go to the CA Certs tab, and click at the bottom of the window.

- Paste in the CA certificate or point to the downloaded file, and go through the certificate installer.

- Change the server to the SSL port; this is described in much more detail in Section 1.7, “Changing Directory Server Port Numbers”.
- Open the Directory Server Console, and open the Configuration tab for the Directory Server.
- In the Settings tab, set the secure port for the server to use for TLS/SSL communications, such as
636. Click .
- Select the Encryption tab in the right pane.
- Select the Enable SSL for this Server checkbox, then select the certificate to use from the drop-down menu. Click .

- Restart the Directory Server. The Directory Server must be restarted from the command line.
service dirsrv restart example
To restart the Directory Server without the password prompt, create a PIN file or use a hardware crypto device. See Section 14.2.3.3, “Creating a Password File for the Directory Server” for information on how to create a PIN file.
NOTE
- Run
secpol.mscfrom the command line. - Select .
- Open , and then open .
- Enable the
Password must meet complexity requirementsoption and save.
- Install a certificate authority in the Windows Components section in Add/Remove Programs.
- Select the Enterprise Root CA option.
- Reboot the Active Directory server. If IIS web services are running, the CA certificate can be accessed by opening
http://servername/certsrv. - Set up the Active Directory server to use the SSL server certificate.
- Create a certificate request
.inf, using the fully-qualified domain name of the Active Directory as the certificate subject. For example:;----------------- request.inf ----------------- [Version] Signature="$Windows NT$ [NewRequest] Subject = "CN=ad.server.example.com, O=Engineering, L=Raleigh, S=North Carolina, C=US" KeySpec = 1 KeyLength = 2048 Exportable = TRUE MachineKeySet = TRUE SMIME = False PrivateKeyArchive = FALSE UserProtected = FALSE UseExistingKeySet = FALSE ProviderName = "Microsoft RSA SChannel Cryptographic Provider" ProviderType = 12 RequestType = PKCS10 KeyUsage = 0xa0 [EnhancedKeyUsageExtension] OID=1.3.6.1.5.5.7.3.1 ;-----------------------------------------------
For more information on the.infrequest file, see the Microsoft documentation, such as http://technet.microsoft.com/en-us/library/cc783835.aspx. - Generate the certificate request.
certreq -new request.inf request.req
- Submit the request to the Active Directory CA. For example:
certreq -submit request.req certnew.cer
NOTE
If the command-line tool returns an error message, then use the Web browser to access the CA and submit the certificate request. If IIS is running, then the CA URL ishttp://servername/certsrv. - Accept the certificate request. For example:
certreq -accept certnew.cer
- Make sure that the server certificate is present on the Active Directory server.In the menu, click , then click and .
- Import the CA certificate from Directory Server into Active Directory. Click Trusted Root CA, then Import, and browse for the Directory Server CA certificate.
- Reboot the domain controller.
- An Active Directory user, specified in the sync agreement.The user specified in the sync agreement is the entity as whom the Directory Server binds to Active Directory to send and receive updates. The Active Directory user should be a member of the Domain Admins group, or have equivalent rights, and must have rights to replicate directory changes.For information on adding users and setting privileges in Active Directory, see the Microsoft documentation.
- A Directory Server user, specified in the Password Sync Service.The user referenced in the Password Sync Service must have read and write permissions to every entry within the synchronized subtree and absolutely must have write access to password attributes in Directory Server so that Password Sync can update password changes.
NOTE
- Create a new entry, such as
cn=sync user,cn=config, with a password. For example:/usr/lib64/mozldap/ldapmodify
-a-D "cn=directory manager" -w secret -p 389 -h server.example.com dn: cn=sync user,cn=config objectClass: inetorgperson objectClass: person objectClass: top cn: sync user sn: SU userPassword: secret passwordExpirationTime: 20380119031407Z - Set an ACI that grants the sync user access to compare and write user passwords.The ACI must be set at the top of the subtree which will be synchronized. For example:
/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 dn: ou=people,dc=example,dc=com changetype: modify add: aci aci: (targetattr="userPassword")(version 3.0;aci "password sync";allow (write,compare) userdn="ldap:///cn=sync user,cn=config";)
For security reasons, the Password Sync user should not be Directory Manager and should not be part of the synchronized subtree.
- Download the
PassSync.msifile from the appropriate Directory Server channel in Red Hat Network and save it to the Active Directory machine.NOTE
There are two PassSync packages available, one for 32-bit Windows servers and one for 64-bit. Make sure to select the appropriate packages for your Windows platform. - Double-click on the
PassSync.msifile to install it. - The Password Sync Setup window appears. Hit Next to begin installing.
- Fill in the Directory Server hostname, secure port number, user name (such as
cn=sync user,cn=config), the certificate token (password), and the search base (e.g.,ou=People,dc=example,dc=com).
Hit , then to install Password Sync. - Reboot the Windows machine to start Password Sync.
NOTE
The Windows machine must be rebooted. Without the rebooting,PasswordHook.dllis not enabled, and password synchronization will not function.
.msi.
C:\Program Files\Red Hat Directory Password Synchronization. All of the files installed with Password Sync are listed in Table 10.1, “Installed Password Sync Libraries”.
Table 10.1. Installed Password Sync Libraries
| Directory | Library | Directory | Library |
|---|---|---|---|
| C:\WINDOWS\system32 | passhook.dll | C:\WINDOWS\system32 | libnspr4.dll |
| C:\WINDOWS\system32 | nss3.dll | C:\WINDOWS\system32 | sqlite3.dll |
| C:\WINDOWS\system32 | softokn3.dll | C:\WINDOWS\system32 | nssdbm3.dll |
| C:\WINDOWS\system32 | nssutil3.dll | ||
| C:\WINDOWS\system32 | smime3.dll | C:\WINDOWS\system32 | freebl3.dll |
| C:\Program Files\Red Hat Directory Password Synchronization | nsldap32v60.dll | C:\Program Files\Red Hat Directory Password Synchronization | certutil.exe |
| C:\Program Files\Red Hat Directory Password Synchronization | nsldappr32v60.dll | C:\Program Files\Red Hat Directory Password Synchronization | nsldapssl32v60.dll |
| C:\WINDOWS\system32 | ssl3.dll | C:\WINDOWS\system32 | libplc4.dll |
| C:\Program Files\Red Hat Directory Password Synchronization | nssckbi.dll | C:\Program Files\Red Hat Directory Password Synchronization | nsldif32v60.dll |
| C:\Program Files\Red Hat Directory Password Synchronization | passsync.log[a] | C:\Program Files\Red Hat Directory Password Synchronization | passsync.exe |
| C:\Program Files\Red Hat Directory Password Synchronization | pk12util.exe | C:\Program Files\Red Hat Directory Password Synchronization | msvcr71.dll |
| C:\WINDOWS\system32 | libplds4.dll | ||
[a]
This log file is not an installed library, but it is created at installation.
| |||
NOTE
- On the Directory Server, export the server certificate.
cd /etc/dirsrv/slapd-
instance_namecertutil -d . -L -n "CA certificate" -a > dsca.crt - Copy the exported certificate from the Directory Server to the Windows machine.
- Open a command prompt on the Windows machine, and open the Password Sync installation directory.
cd "C:\Program Files\Red Hat Directory Password Synchronization"
- Create new
cert8.dbandkey.dbdatabases on the Windows machine.certutil.exe -d . -N
- Import the server certificate from the Directory Server into the new certificate database.
certutil.exe -d . -A -n "DS CA cert" -t CT,, -a -i
\path\to\dsca.crt - Verify that the CA certificate was correctly imported.
certutil.exe -d . -L -n "DS CA cert"
- Reboot the Windows machine. The Password Sync service is not available until after a system reboot.
NOTE
NOTE
- In the Directory Server Console, select the Configuration tab.
- In the left-hand navigation tree, click the Replication folder.
- In the main window, click the Supplier Settings tab.
- Check the Enable Changelog database.

- Set the changelog database directory. Click the Use default button to use the default or Browse... to select a custom directory.
- Save the changelog settings.
IMPORTANT
- In the Directory Server Console, select the Configuration tab.
- In the left-hand navigation tree, click the Replication folder, then click the name of the database to synchronize.By default, there are two databases,
NetscapeRootfor directory configuration anduserRootfor directory entries. Other databases may be listed if they have been added to Directory Server. - Check the Enable Replica checkbox, and select the radio button by the type of replica which the database is.

- In the Update Settings section, either select or add a supplier DN. This is the user account as which synchronization process will be run. As mentioned in Section 10.2.3, “Step 3: Select or Create the Sync Identity”, this user must be on the Active Directory server.

- Save the replication settings for the database.
NOTE
/usr/lib64/mozldap/ldapmodify-a-D "cn=directory manager" -w secret -p 389 -h server.example.com dn: cn=changelog5,cn=config objectclass: top objectclass: extensibleObject cn: changelog5 nsslapd-changelogdir: /var/lib/dirsrv/slapd-instance_name/changelogdb
/usr/lib64/mozldap/ldapmodify -a -D "cn=directory manager" -w secret -p 389 -h server.example.com
dn: cn=sync replica,cn=dc=example\,dc=com,cn=mapping tree,cn=config
objectclass: top
objectclass: nsds5replica
objectclass: extensibleObject
cn: sync replica
nsds5replicaroot: dc=example,dc=com
nsds5replicaid: 7
nsds5replicatype: 3
nsds5flags: 1
nsds5ReplicaPurgeDelay: 604800
nsds5ReplicaBindDN: cn=sync user,cn=configNOTE
- In the Directory Server Console, select the Configuration tab.
- In the left-hand navigation tree, click Replication, then right-click on the database to sync. The default user database is
userRoot, but additional databases are added as new suffixes are added to the Directory Server.Alternatively, highlight the database, and in the top tool bar, click Object. - Select New Windows Sync Agreement from the menu.

- In the two fields, supply a name and description of the synchronization agreement. Hit .
- In the Windows Sync Server Info window, fill in the Active Directory information in the Windows Domain Information area.

- The name of the Windows domain.
- What kinds of entries to synchronize; users and groups are synchronized independently. When a type of entry is chosen, then all of the entries of that type that are found in the Windows subtree are created in the Directory Server.
- The Windows and Directory Server subtree information; this is automatically filled in.
- The hostname of the domain controller
- The Windows server's port number
- Set the connection type. There are three options:
- Use LDAP. This sets either a standard, unencrypted connection.
- Use TLS/SSL. This uses a secure connection over the server's secure LDAPS port, such as
636. Both the Directory Server and the Windows server must be properly configured to run in TLS/SSL for this connection and must have installed each other's CA certificates in order to trust their server certificates. - Use Start TLS. This uses Start TLS to establish a secure connection over the server's standard port. Like regular SSL, these peer servers must be able to trust each other's certificates.
Using either TLS/SSL or Start TLS is recommended for security reasons. TLS/SSL or Start TLS is required for synchronizing passwords because Active Directory refuses to modify passwords unless the connection is SSL-protected. - Fill in the authentication information in the Bind as... and Password fields with the sync ID information. This user must exist in the Active Directory domain.
- Save the sync agreement.
NOTE
winSyncInterval attribute manually. See Section 10.7, “Modifying the Sync Agreement”.
/usr/lib64/mozldap/ldapmodify -a -D "cn=directory manager" -w secret -p 389 -h server.example.com
dn: cn=ExampleSyncAgreement,cn=sync replica,cn=dc=example\,dc=com,cn=mapping tree,cn=config
changetype: add
objectclass: top
objectclass: nsDSWindowsReplicationAgreement
cn: ExampleSyncAgreement
nsds7WindowsReplicaSubtree: cn=Users,dc=ad1
nsds7DirectoryReplicaSubtree: ou=People,dc=example,dc=com
nsds7NewWinUserSyncEnabled: on
nsds7NewWinGroupSyncEnabled: on
nsds7WindowsDomain: ad1
nsDS5ReplicaRoot: dc=example,dc=com
nsDS5ReplicaHost: ad1.windows-server.com
nsDS5ReplicaPort: 389
nsDS5ReplicaBindDN: cn=sync user,cn=config
nsDS5ReplicaBindCredentials: {DES}ffGad646dT0nnsT8nJOaMA==
nsDS5ReplicaTransportInfo: TLS
winSyncInterval: 1200ntUser and ntGroup object classes to any user and group entries, respectively, which will be synchronized, along with any required attributes. Only Directory Server entries with those object classes are synchronized. Active Directory entries which are synced over to Directory Server have those object classes automatically.
- Go to the Configuration tab in the Console.
- Open the Replication folder and expand the appropriate database.
- Select the sync agreement.
- Right-click on the agreement or open the Object menu.
- Select .

- Users in the Active Directory domain are synced if it is configured in the sync agreement by selecting the Sync New Windows Users option. All of the Windows users are copied to the Directory Server when synchronization is initiated and then new users are synced over when they are created.
- A Directory Server user account is synchronized to Active Directory through specific attributes that are present on the Directory Server entry. Any Directory Server entry must have the
ntUserobject class and thentUserCreateNewAccountattribute; thentUserCreateNewAccountattribute (even on an existing entry) signals Directory Server Win Syn to write the entry over to the Active Directory server.New or modified user entries with thentUserobject class added are created and synced over to the Windows machine at the next regular update, which is a standard poll of entry.
NOTE
- ntUserDomainId. This corresponds to the
sAMAccountNameattribute for Active Directory entries. - ntUniqueId. This contains the value of the
objectGUIDattribute for the corresponding Windows entry. This attribute is set by the synchronization process and should not be set or modified manually. - ntUserDeleteAccount. This attribute is set automatically when a Windows entry is synced over but must be set manually for Directory Server entries. If
ntUserDeleteAccounthas the valuetrue, the corresponding Windows entry be deleted when the Directory Server entry is deleted. Otherwise, the entry remains in Active Directory, but is removed from the Directory Server database if it is deleted in the Directory Server.
ntUserCreateNewAccount and ntUserDeleteAccount on Directory Server entries allows the Directory Manager precise control over which users within the synchronized subtree are synced on Active Directory.
Table 10.2. User Schema Mapped between Directory Server and Active Directory
| Directory Server | Active Directory |
|---|---|
| cn[a] | name |
| ntUserDomainId | sAMAccountName |
| ntUserHomeDir | homeDirectory |
| ntUserScriptPath | scriptPath |
| ntUserLastLogon | lastLogon |
| ntUserLastLogoff | lastLogoff |
| ntUserAcctExpires | accountExpires |
| ntUserCodePage | codePage |
| ntUserLogonHours | logonHours |
| ntUserMaxStorage | maxStorage |
| ntUserProfile | profilePath |
| ntUserParms | userParameters |
| ntUserWorkstations | userWorkstations |
[a]
The cn is treated differently than other synced attributes. It is mapped directly (cn to cn) when syncing from Directory Server to Active Directory. When syncing from Active Directory to Directory Server, however, cn is mapped from the name attribute on Windows to the cn attribute in Directory Server.
| |
Table 10.3. User Schema That Are the Same in Directory Server and Windows Servers
| cn[a] | physicalDeliveryOfficeName |
| description | postOfficeBox |
| destinationIndicator | postalAddress |
| facsimileTelephoneNumber | postalCode |
| givenname | registeredAddress |
| homePhone | sn |
| homePostalAddress | st |
| initials | street |
| l | telephoneNumber |
| teletexTerminalIdentifier | |
| mobile | telexNumber |
| o | title |
| ou | usercertificate |
| pager | x121Address |
[a]
The cn is treated differently than other synced attributes. It is mapped directly (cn to cn) when syncing from Directory Server to Active Directory. When syncing from Active Directory to Directory Server, however, cn is mapped from the name attribute on Windows to the cn attribute in Directory Server.
| |
cn attribute can be multi-valued, while in Active Directory this attribute must have only a single value. When the Directory Server cn attribute is synchronized, then, only one value is sent to the Active Directory peer.
cn value is added to an Active Directory entry and that value is not one of the values for cn in Directory Server, then all of the Directory Server cn values are overwritten with the single Active Directory value.
cn attribute attribute as its naming attribute, where Directory Server uses uid. This means that there is the potential to rename the entry entirely (and accidentally) if the cn attribute is edited in the Directory Server. If that cn change is written over to the Active Directory entry, then the entry is renamed, and the new named entry is written back over to Directory Server.
streetAddress for a user or group's postal address; this is the way that Directory Server uses the street attribute. There are two important differences in the way that Active Directory and Directory Server use the streetAddress and street attributes, respectively:
- In Directory Server,
streetAddressis an alias forstreet. Active Directory also has thestreetattribute, but it is a separate attribute that can hold an independent value, not an alias forstreetAddress. - Active Directory defines both
streetAddressandstreetas single-valued attributes, while Directory Server definesstreetas a multi-valued attribute, as specified in RFC 4519.
streetAddress and street attributes, there are two rules to follow when setting address attributes in Active Directory and Directory Server:
- Windows Sync maps
streetAddressin the Windows entry tostreetin Directory Server. To avoid conflicts, thestreetattribute should not be used in Active Directory. - Only one Directory Server
streetattribute value is synced to Active Directory. If thestreetAddressattribute is changed in Active Directory and the new value does not already exist in Directory Server, then allstreetattribute values in Directory Server are replaced with the new, single Active Directory value.
initials attribute, Active Directory imposes a maximum length constraint of six characters, but Directory Server does not have a length limit. If an initials attribute longer than six characters is added to Directory Server, the value is trimmed when it is synchronized with the Active Directory entry.
- In the Directory Server Console, select the Directory tab.
- For an existing entry, right-click the entry, and click Properties to open the property editor for the entry.For a new entry, right-click the main entry in the left window to add the new entry, select User, and then fill in the required entry attributes.
- On the left side of the Property Editor, click the NT User link.
- In the NT User tab, check the Enable NT Attributes checkbox.

- To enable synchronization, two fields are required:
- Setting a NT User ID
- Selecting the Create New NT Account checkbox
- Selecting the Delete NT Account checkbox means that the corresponding Windows user is deleted if the Directory Server entry is deleted.
- Set the other Windows attributes. These attributes are mapped to relevant Windows attributes.Additional
ntUserattributes can be created either by using the button; see Section 3.2.4.2, “Modifying Entries Using ldapmodify”.
TIP
- The
ntUserobject class - The
ntUserDomainIdattribute, to give the Windows ID - The
ntUserCreateNewAccountattribute, to signal to the synchronization plug-in to sync the Directory Server entry over to Active Directory
/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 -h server.example.com dn: uid=scarter,ou=People,dc=example,dc=com changetype: modify add: objectClass objectClass:ntUser add: ntUserDomainId ntUserDomainId: Sam Carter add: ntUserCreateNewAccount ntUserCreateNewAccount: true add: ntUserDeleteAccount ntUserDeleteAccount: true
ntUser object class, are described in more detail in the Schema Reference.
TIP
- Open the Configuration tab and expand the Replication folder.
- Open the appropriate database, and select the sync agreement.

- Open the Connection tab.
- Check the New Windows User Sync checkbox to enable users sync. To disable sync, uncheck the box.

nsds7NewWinUserSyncEnabled and is set on the sync agreement. To enable user sync, add this attribute to the sync agreement or create a sync agreement with this attribute set to on:
/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 -h server.example.com dn: cn=ExampleSyncAgreement,cn=userRoot,cn=dc=example\,dc=com,cn=mapping tree,cn=config changetype: modify replace: nsds7NewWinUserSyncEnabled nsds7NewWinUserSyncEnabled: on
nsds7NewWinUserSyncEnabled: off.
- Groups in the Active Directory domain are synced if it is configured in the sync agreement by selecting the Sync New Windows Groups option. All of the Windows groups are copied to the Directory Server when synchronization is initiated and then new groups are synced over as they are created.
- A Directory Server group account is synchronized to Active Directory through specific attributes that are present on the Directory Server entry. Any Directory Server entry must have the
ntGroupobject class and thentGroupCreateNewGroupattribute; thentGroupCreateNewGroupattribute (even on an existing entry) signals Directory Server Win Syn to write the entry over to the Active Directory server.New or modified groups that have thentGroupobject class are created and synced over to the Windows machine at the next regular update.
IMPORTANT
- Two attributes control whether Directory Server groups are created and deleted on Active Directory,
ntGroupCreateNewGroupandntGroupDeleteGroup.ntGroupCreateNewGroupis required to sync Directory Server groups over to Active Directory. - ntUserDomainId contains the unique ID for the entry on the Active Directory domain. This is the only required attribute for the
ntGroupobject class. - ntGroupType is the type of Windows group. Windows group types are global/security, domain local/security, global/distribution, or domain local/distribution. This is set automatically for Windows groups that are synchronized over, but this attribute must be set manually on Directory Server entries before they can be synced.
-21483646for global/security (the default)-21483644for domain local/security2for global/distribution4for domain local/distribution
Table 10.5. Group Entry Attributes That Are the Same between Directory Server and Active Directory
| cn | o |
| description | ou |
| l | seeAlso |
- In the Directory Server Console, select the Directory tab.
- Right-click the group entry, and click Advanced to open the advanced property editor for the entry. All of the sync-related attributes must be added manually, so only the advanced property editor can set the attributes.
- Click the objectClasses field, and then click the button.
- Select the
ntGroupobject class.
- Setting the
ntGroupobject class automatically adds thentUserDomainIdattribute. This attribute is required, so add a value.
- To enable synchronization, click the button, and select the
ntGroupCreateNewGroupattribute from the list. Then, set its value toon. This signals to the sync plug-in that the entry should be added to the Active Directory directory.
To delete the group entry from the Active Directory domain if it is deleted from the Directory Server database, set thentGroupDeleteGroupattribute and set it toon. - Add any other Windows attributes for the Directory Server entry. The available attributes are listed in Section 10.4.2, “Group Attributes Synchronized between Directory Server and Active Directory”.If the
ntGroupTypeis not added, then the group is automatically added as a global security group (ntGroupType:-21483646).
- The
ntGroupobject class. - The
ntUserDomainIdattribute, to give the Windows ID for the entry. - The
ntGroupCreateNewGroupattribute, to signal to the synchronization plug-in to sync the Directory Server entry over to Active Directory.ThentGroupDeleteGroupattribute is optional, but this sets whether to delete the entry automatically from the Active Directory domain if it is deleted in the Directory Server.
ntGroupType attribute. If this attribute is not specified, then the group is automatically added as a global security group (ntGroupType:-21483646).
/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 -h server.example.com dn: cn=Example Group,ou=Groups,dc=example,dc=com changetype: modify add: objectClass objectClass:ntGroup add: ntUserDomainId ntUserDomainId: example-group add: ntGroupCreateNewGroup ntGroupCreateNewGroup: true add: ntGroupDeleteGroup ntGroupDeleteGroup: true add: ntGroupType ntGroupType: 2
ntGroup object class, are described in more detail in the Schema Reference.
- Open the Configuration tab and expand the Replication folder.
- Open the appropriate database, and select the sync agreement.

- Open the Connection tab.
- Check the New Windows Group Sync checkbox to enable group sync. To disable sync, uncheck the box.

nsds7NewWinGroupSyncEnabled and is set on the sync agreement. To enable group sync, add this attribute to the sync agreement or create a sync agreement with this attribute set to on:
/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 -h server.example.com dn: cn=ExampleSyncAgreement,cn=userRoot,cn=dc=example\,dc=com,cn=mapping tree,cn=config changetype: modify replace: nsds7NewWinGroupSyncEnabled nsds7NewWinGroupSyncEnabled: on
nsds7NewWinGroupSyncEnabled: off.
ntUserDeleteAccount or ntGroupDeleteGroup attribute set to true.
NOTE
ntUniqueId attribute. If the Directory Server entry is deleted on Active Directory before the unique ID is synchronized back to Directory Server, the entry will not be deleted on Directory Server. Directory Server uses the ntUniqueId attribute to identify and synchronize changes made on Active Directory to the corresponding Directory Server entry; without that attribute, Directory Server will not recognize the deletion.
winSyncInterval (by default, five minutes) after the entry is created before deleting it so that the ntUniqueId attribute is synchronized.
ntUniqueId attribute which was used to synchronize the entries, which signals to the Active Directory server that this new entry is a tombstone entry.
- On Windows 2000, Active Directory creates a new entry with a new unique ID; this new ID is synced back to the Directory Server entry.
- On Windows 2003, Active Directory resurrects the old entry and preserves the original unique ID for the entry.
winSyncInterval setting (for retrieving changes from the Active Directory domain) or nsds5replicaupdateschedule setting (for pushing changes from the Directory Server). By default, changes are retrieved from Active Directory every five minutes, and changes from the Directory Server are sent immediately.
- Go to the Configuration tab in the Console.
- Open the Replication folder and expand the appropriate database.
- Select the sync agreement.
- Right-click on the agreement or open the Object menu.
- Select Send and Receive Updates from the drop down menu.

- Go to the Configuration tab in the Console.
- Open the Replication folder and expand the appropriate database.
- Select the sync agreement.
- Right-click on the agreement or open the Object menu.
- Select Initialize Full Re-synchronization from the drop down menu.
Resynchronizing will not delete data on the sync peer; it sends and receives all updates and add any new or modified Directory Server entries; for example, it adds a pre-existing Directory Server user that had thentUserobject class added.
nsDS5BeginReplicaRefresh attribute to the sync agreement. For example:
/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 -h server.example.com dn: cn=ExampleSyncAgreement,cn=sync replica,cn=dc=example\,dc=com,cn=mapping tree,cn=config changetype: modify add: nsDS5BeginReplicaRefresh nsDS5BeginReplicaRefresh: start
NOTE
- Go to the Configuration tab in the Console.
- Open the Replication folder and expand the appropriate database.
- Select the sync agreement.
- In the Summary tab, the status of the latest sync process is shown at the bottom.

- In the Configuration tab, expand the Replication folder.
- Expand the database being synced. All of the synchronization agreements are listed below the database. Double-click the sync agreement to open it in the main window.

- Click the Connection tab.
There are three areas of information that can be edited.- The connection type (standard, TLS/SSL, and Start TLS).
- The bind user, both DN and password.
- Whether to sync new Directory Server users and new Directory Server groups automatically.
There are three options for the connection type — standard, TLS/SSL, and Start TLS — but there are really only two connection protocols, LDAP and LDAPS. Both a standard connection and Start TLS connection use LDAP (Start TLS creates a secure connection over an insecure port).It is not possible to change the connection protocol because it is not possible to change the port number used to connect to the Windows sync peer.It is possible to change the connection type between the standard connection and Start TLS, but it is not possible to change from TLS/SSL to either the standard or Start TLS connections. Likewise, it is not possible to go from standard or Start TLS to TLS/SSL. If you need to change the connection protocol or the port number, delete the sync agreement and create a new one.
- For the Directory Server database:
- The replicated subtree in the directory (
nsds7DirectoryReplicaSubtree) - The Directory Server root DN (
nsDS5ReplicaRoot) - The replicated subtree in the directory (
nsds7DirectoryReplicaSubtree)
- For the Active Directory domain:
- The replicated subtree in the Active Directory domain (
nsds7WindowsReplicaSubtree) - The Active Directory domain name (
nsds7WindowsDomain)
- The Active Directory hostname (
nsDS5ReplicaHost). - The Active Directory port (
nsDS5ReplicaPort). - The type of connection (
nsDS5ReplicaTransportInfo), which can be standard (LDAP), SSL (SSL), or Start TLS (TLS), which is a secure connection over a standard port. - The username (
nsDS5ReplicaBindDN) and password (nsDS5ReplicaBindCredentials) for the Directory Server to use to bind to the Active Directory server.
/usr/lib64/mozldap/ldapmodify -a -D "cn=directory manager" -w secret -p 389 -h server.example.com
dn: cn=ExampleSyncAgreement,cn=sync replica,cn=dc=example\,dc=com,cn=mapping tree,cn=config
changetype: add
objectclass: top
objectclass: nsDSWindowsReplicationAgreement
cn: ExampleSyncAgreement
nsds7WindowsReplicaSubtree: cn=Users,dc=ad1
nsds7DirectoryReplicaSubtree: ou=People,dc=example,dc=com
nsds7WindowsDomain: ad1
nsDS5ReplicaRoot: dc=example,dc=com
nsDS5ReplicaHost: ad1.windows-server.com
nsDS5ReplicaPort: 389
nsDS5ReplicaBindDN: cn=sync user,cn=config
nsDS5ReplicaBindCredentials: {DES}ffGad646dT0nnsT8nJOaMA==
nsDS5ReplicaTransportInfo: TLS
nsds7NewWinUserSyncEnabled: on
nsds7NewWinGroupSyncEnabled: onnsds5replicaupdateschedule attribute. The Directory Server polls the Active Directory to check for changes; the frequency that it checks the Active Directory server is set in the winSyncInterval attribute.
nsds5replicaupdateschedule attribute. The schedule is set with start (SSSS) and end (EEEE) times in the form HHMM, using a 24-hour clock. The days to schedule sync updates are use ranging from 0 (Sunday) to 6 (Saturday).
nsds5replicaupdateschedule: SSSS EEEE DDDDDDDnsds5replicaupdateschedule: 1200 1400 0246
NOTE
2300 0100 is not valid.
winSyncInterval attribute. This attribute is set in seconds, so the default of 300 means that the Directory Server polls the Active Directory server every 300 seconds, or five minutes. Setting this to a higher value can be useful if the directory searches are taking too long and affecting performance.
winSyncInterval: 1000
- The bind username and password (
nsDS5ReplicaBindDNandnsDS5ReplicaBindCredentials). - The connection method (
nsDS5ReplicaTransportInfo).It is only possible to change thensDS5ReplicaTransportInfofromLDAPtoTLSand vice versa. It is not possible to change to or fromSSLbecause it is not possible to change the port number, and switching between LDAP and LDAPS requires changing the port number.
nsDS5ReplicaBindDN: cn=sync user,cn=config
nsDS5ReplicaBindCredentials: {DES}ffGad646dT0nnsT8nJOaMA==
nsDS5ReplicaTransportInfo: TLSCAUTION
Table 10.6. Sync Agreement Attributes
| Object Class or Attribute | Description |
|---|---|
| nsDSWindowsReplicationAgreement | An operational object class which contains the sync agreement attributes. |
| cn | Gives the name for the sync agreement. |
| nsds7WindowsReplicaSubtree | Specifies the Windows server suffix (root or sub) that is synced. |
| nsds7DirectoryReplicaSubtree | Specifies the Directory Server suffix (root or sub) that is synced. |
| nsds7NewWinUserSyncEnabled | Sets whether new Windows user accounts are automatically created on the Directory Server. |
| nsds7NewWinGroupSyncEnabled | Specifies whether new Windows group accounts are automatically created on the Directory Server. |
| nsds7WindowsDomain |
Identifies the Windows domain being synchronized; analogous to nsDS5ReplicaHost in a replication agreement.
|
| nsds5replicaport |
Gives the LDAP port for the Windows server.
To use TLS/SSL, give the secure port number (
636 by default) and set the nsds5ReplicaTransportInfo attribute to SSL.
To use Start TLS, which initiates a secure connection over a standard port, use the standard port,
389, with the nsds5ReplicaTransportInfo attribute to TLS.
|
| nsds5replicatransportinfo |
To use TLS/SSL, set this parameter to
SSL.
To use Start TLS, which initiates a secure connection over a standard port, set this parameter to
TLS.
To use simple authentication, set this parameter to
LDAP.
|
| nsds5ReplicaBindDN | The sync user DN used by the Directory Server instance to bind to the Windows server. |
| nsds5replicabindmethod |
The connection type for replication between the servers. The connection type defines how the supplier authenticates to the consumer.
Leaving the bind method empty or setting it to
SIMPLE means that the server uses basic password-based authentication. This requires the nsds5ReplicaBindDN and nsds5ReplicaCredentials attributes to give the bind information.
The
SSLCLIENTAUTH option uses a secure connection. This requires setting the nsds5ReplicaTransportInfo attribute be set to SSL or TLS.
|
| nsds5replicabindcredentials | Only for simple authentication. Stores the hashed password used with the bind DN given for simple authentication. |
| nsds5replicaroot |
Sets which Directory Server subtree is replicated. Usually, it is recommended that the replicated subtree be high in the directory tree so that the entire database is replicated. For example:
dc=example,dc=com |
| description | A text description of the replication agreement. Make this a useful description so it is easier to manage sync agreements. |
| nsds5replicaupdateschedule |
Sets the start and end time for the replication updates and the days on which replication occurs in the form start_time end_time days. If the schedule is omitted, synchronization occurs all of the time.
|
| winSyncInterval |
Optional. Sets how frequently, in seconds, the Directory Server polls the Windows server for updates to write over. If this is not set, the default is 300, which is 300 seconds or five (5) minutes.
|
| nsds5BeginReplicaRefresh |
Optional. Performs an online (immediate) initialization of the sync peer. If this is set, the attribute is only present as long as the sync peer is being updated initialized; when the initialization is complete, the attribute is deleted automatically. The only value when adding this attribute is start.
|
ntUser and ntGroup object classes and attributes on the user and group entries, respectively.
NOTE
- Open Control Panel, and double-click Add/Remove Programs.
- Click the button to relaunch the installer to change the settings.

- Go back through the configuration screens to make any changes to the configuration.
- Go to the Control Panel, and select Services.
- Scroll through the list of services for the Password Sync Service. The Startup field is set to
Automatic. - Double-click on Password Sync.
- Select the radio button, and then click .

- Go to the Control Panel, and select Services.
- Scroll through the list of services for Password Sync, and right-click.
- Select , , or , and hit okay.
It's also possible to select the sync service and then click the start or stop links in the upper left of the Services window.
- Open Control Panel, and double-click Add/Remove Programs.
- Select click to uninstall the Password Sync Service.

- If SSL was configured for the Password Sync, then the
cert8.dbandkey3.dbdatabases that were created were not removed when Password Sync was uninstalled. Delete these files by hand.
- Download the
PassSync.msifile from the appropriate Directory Server channel in Red Hat Network and save it to the Active Directory machine.NOTE
There are two PassSync packages available, one for 32-bit Windows servers and one for 64-bit. Make sure to select the appropriate packages for your Windows platform. - Double-click on the
PassSync.msifile to install it. - All of the previous information should be included, so click to install the new Password Sync.The previous SSL certificates and configuration is also preserved, so it is not necessary to reconfigure SSL.
- Open the
Add/Remove Programswindow. - Select the older version of Password Sync and click the button.
NOTE
Check the version numbers to make sure the right Password Sync service is removed. - Reboot the Windows machine to start Password Sync.
NOTE
The Windows machine must be rebooted. Without the rebooting,PasswordHook.dllis not enabled, and password synchronization will not function.
- In the Console, click the Configuration tab, select Logs from the navigation menu on the right, and open the error log.
- Scroll down to error log level, and select Replication from the menu. Hit save.For complete information on error log levels, refer to Red Hat Directory Server Configuration and Command-Line Tool Reference.
NOTE
- 11.1. Using Groups
- 11.2. Using Roles
- 11.2.1. About Roles
- 11.2.2. Creating a Managed Role
- 11.2.3. Creating a Filtered Role
- 11.2.4. Creating a Nested Role
- 11.2.5. Editing and Assigning Roles to an Entry
- 11.2.6. Viewing Roles for an Entry through the Command Line
- 11.2.7. Making a Role Inactive or Active
- 11.2.8. Viewing the Activation Status for Entries
- 11.2.9. About Deleting Roles
- 11.2.10. Using Roles Securely
- 11.3. Using Views
NOTE
memberOf attribute to identify in user entries to what groups a user belongs. The memberOf attribute is maintained by the Directory Server and updated automatically on entries as group membership changes. See Section 11.1.4, “Using the memberOf Attribute to Manage Group Membership Information” for information on using the memberOf attribute.
NOTE
- In the Directory Server Console, select the Directory tab.
- In the left pane, right-click the entry under which to add a new group, and select New > Group.
Alternatively, go to the Object menu, and select New > Group. - Click General in the left pane. Type a name for the new group in the Group Name field (the name is required), and enter a description of the new group in the Description field.

- Click Members in the left pane. In the right pane, select the Static Group tab. Click to add new members to the group.
- In the Search drop-down list, select what sort of entries to search for (users, groups, or both) then click Search.

- Select the members from the returned entries, and click .

- Click Languages in the left pane to add language-specific information for the group.

- Click to create the new group. It appears in the right pane.
NOTE
(objectclass=person) and scope sub-tree.
- In the Directory Server Console, select the Directory tab.
- In the left pane, right-click the entry under which to add a new group, and select New > Group.
Alternatively, go to the Object menu, and select New > Group. - Click General in the left pane. Type a name for the new group in the Group Name field (the name is required), and enter a description of the new group in the Description field.

- Click Members in the left pane. In the right pane, select the Dynamic Group tab. Click to create a LDAP URL for querying the database.
- Enter an LDAP URL in the text field or select to be guided through the construction of an LDAP URL.
The results show the current entries (group members) which correspond to the filter.
- Click Languages in the left pane to add language-specific information for the group.

- Click . The new group appears in the right pane.
NOTE
(objectclass=person) and scope sub-tree.
groupOfNamesis a simple group, that allows any entry to be added. The attribute used to determine members for this ismember.groupOfUniqueNames, likegroupOfNames, simply lists user DNs as members, but the members must be unique. This prevents users being added more than once as a group member, which is one way of preventing self-referential group memberships. The attribute used to determine members for this isuniqueMember.groupOfURLsuses a list of LDAP URLs to filter and generate its membership list. This object class is required for any dynamic group and can be used in conjunction withgroupOfNamesandgroupOfUniqueNames.groupOfCertificatesis similar togroupOfURLsin that it uses an LDAP filter to search for and identify certificates (or, really, certificate names) to identify group members. This is useful for group-based access control, since the group can be given special access permissions. The attribute used to determine members for this ismemberCertificate.
Table 11.1. Dynamic and Static Group Schema
| Type of Group | Group Object Classes | Member Attributes | ||
|---|---|---|---|---|
| Static | groupOfUniqueNames | uniqueMember | ||
| Dynamic |
| memberURL |
/usr/lib64/mozldap/ldapmodify -a -D "cn=directory manager" -w secret -p 389 -h server.example.com
dn: cn=static group,ou=Groups,dc=example,dc=com
objectClass: top
objectClass: groupofuniquenames
cn: static group
description: Example static group.
uniqueMember: uid=mwhite,ou=People,dc=example,dc=com
uniqueMember: uid=awhite,ou=People,dc=example,dc=comgroupOfUniqueNames, can explicitly list some group members along with the dynamic LDAP URL.
/usr/lib64/mozldap/ldapmodify -a -D "cn=directory manager" -w secret -p 389 -h server.example.com
dn: cn=dynamic group,ou=Groups,dc=example,dc=com
objectClass: top
objectClass: groupofuniquenames
objectClass: groupofurls
cn: dynamic group
description: Example dynamic group.
memberURL: ldap:///dc=example,dc=com??sub?(&(objectclass=person)(cn=*sen*))member) in a group entry and automatically writes a corresponding memberOf attribute in the member's entry. As membership changes, the plug-in updates the memberOf attributes on the user entries. The MemberOf Plug-in provides a way to view the groups to which a user belongs simply by looking at the entry, including nested group membership. It can be very difficult to backtrack memberships through nested groups, but the MemberOf Plug-in shows memberships for all groups, direct and indirect.
NOTE
inetorgperson and person — do not allow the memberof attribute. To allow the MemberOf Plug-in to add the memberof attribute to a user entry, make sure that that entry belongs to the inetUser object class, which does allow the memberof attribute.
memberof is used in the user entry, then make sure that the user entry belongs to an object class that allows that attribute.
IMPORTANT
memberOf attributes for user entries should not be replicated in multi-master environments. Make sure that the memberOf attribute is excluded from replication in the replication agreement. (Fractional replication is described in Section 9.1.7, “Replicating a Subset of Attributes with Fractional Replication”.)
memberOf attributes for entries are the same across servers, simply configure the MemberOf Plug-in the same on all servers.
memberOf attributes. Configure the MemberOf Plug-in for the supplier, then replicate the memberOf attributes to the consumers.
memberofgroupattr) and the other for the attribute to create and manage in the member's user entry (memberofattr).
Example 11.1. Default MemberOf Plug-in Entry
dn: cn=MemberOf Plugin,cn=plugins,cn=config objectClass: top objectClass: nsSlapdPlugin objectClass: extensibleObjectcn: MemberOf Pluginnsslapd-pluginPath: libmemberof-pluginnsslapd-pluginInitfunc: memberof_postop_initnsslapd-pluginType: postoperationnsslapd-pluginEnabled: onnsslapd-plugin-depends-on-type: databasememberofgroupattr: membermemberofattr: memberOfnsslapd-pluginId: memberof nsslapd-pluginVersion: 8.2.4 nsslapd-pluginVendor: Red Hat, Inc. nsslapd-pluginDescription: memberof plugin
Table 11.2. MemberOf Syntax
| Plug-in Attribute | Description |
|---|---|
| cn | Gives a unique name for the plug-in instance. |
| memberofgroupattr |
Gives the attribute in the group entry to poll to identify member DNs. By default, this is the member attribute, but it can be any attribute used to identify group members, such as uniqueMember.
|
| memberofattr |
Gives the attribute for the plug-in to create and manage on the user entry. By default, this is the memberOf attribute.
|
| nsslapd-pluginEnabled | Sets whether the plug-in instance is enabled (active) or disabled. The default MemberOf Plug-in instance is disabled by default. |
| nsslapd-pluginPath |
Gives the name of the specific plug-in to load. This must be libmemberof-plugin.
|
| nsslapd-pluginInitfunc |
Gives the name of the function to call to initialize the plug-in. This must be memberof_postop_init.
|
- Select the Configuration tab, and expand to the Plugins folder.
- Scroll to the Memberof Plugin entry.

- Make sure that the plug-in is enabled. This is disabled by default.

- Click the button to open the Advanced Properties Editor.
- The
memberofgroupattrattribute sets the attribute in the group entry which the server uses to identify member entries. Thememberofattrattribute sets the attribute which the plug-in creates and manages on user entries.
- Save the changes.
- Restart the server to update the plug-in. For example, open the Tasks tab and click the Restart server task.
- Enable the MemberOf Plug-in.
/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 -h server.example.com dn: cn=MemberOf Plugin,cn=plugins,cn=config changetype: replace replace: nsslapd-pluginEnabled nsslapd-pluginEnabled: on -
- Set the attribute to use for the group member entry attribute. For example:
/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 -h server.example.com dn: cn=MemberOf Plugin,cn=plugins,cn=config changetype: replace replace: memberofgroupattr memberofgroupattr: uniqueMember -
- Set the attribute to set on the user entries to show group membership. For example:
/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 -h server.example.com dn: cn=MemberOf Plugin,cn=plugins,cn=config changetype: replace replace: memberofattr memberofattr: memberOf -
- Restart the Directory Server to load the modified new plug-in instance.
service dirsrv restart
instance_name
memberOf attribute on group member entries, based on the configuration in the group entry itself. However, the memberOf attribute can be edited on a user entry directly (which is improper) or new entries can be imported or replicated over to the server that have a memberOf attribute already set. These situations create inconsistencies between the memberOf configuration managed by the server plug-in and the actual memberships defined for an entry.
memberOf repair task which manually runs the plug-in to make sure the appropriate memberOf attributes are set on entries. There are three ways to trigger this task:
- In the Directory Server Console
- Using the
fixup-memberof.plscript - Running a
cn=memberof task,cn=tasks,cn=configtasks entry
NOTE
memberOf attributes for the entries on other servers are not updated until the updated entry is replicated.
fixup-memberof.pl script launches a special task to regenerate all of the memberOf attributes on user entries based on the member attributes in the group entries. This is a clean-up task which synchronizes the membership defined in group entries and the corresponding user entries and overwrites any accidental or improper edits on the user entries.
- Open the tool directory for the Directory Server instance,
/usr/lib/dirsrv/slapd-.instance_name/ - Run the script, binding as the Directory Manager.
./fixup-memberof.pl -D "cn=Directory Manager" -w password
fixup-memberof.pl command is described in more detail in the Configuration and Command-Line Tool Reference.
memberOf attributes is one of the tasks which can be managed through a special task configuration entry. Task entries occur under the cn=tasks configuration entry in the dse.ldif file, so it is also possible to initiate a task by adding the entry using ldapmodify. As soon as the task is complete, the entry is removed from the directory.
fixup-memberof.pl script creates a special task entry in a Directory Server instance which regenerates the memberOf attributes.
cn=memberof task, cn=tasks,cn=config entry. The only required attribute is the cn for the specific task.
/usr/lib64/mozldap/ldapmodify -a -D "cn=directory manager" -w secret -p 389 -h server.example.com
dn: cn=example memberof,cn=memberof task,cn=tasks,cn=config
cn:example memberofdse.ldif configuration, so it is possible to reuse the same task entry continually.
cn=memberof task configuration is described in more detail in the Configuration and Command-Line Tool Reference.
- Managed roles have an explicit enumerated list of members.
- Filtered roles are assigned entries to the role depending upon the attribute contained by each entry, specified in an LDAP filter. Entries that match the filter possess the role.
- Nested roles are roles that contain other roles.
NOTE
nsRole attribute. The nsRole attribute is a computed attribute, which identifies to which roles an entry belongs; the nsRole attribute is not stored with the entry itself. From the client application point of view, the method for checking membership is uniform and is performed on the server side.
nsRoleDN attribute to the entry.
- In the Directory Server Console, select the Directory tab.
- Browse the tree in the left navigation pane, and select the parent entry for the new role.
- Go to the Object menu, and select New > Role.
Alternatively, right-click the entry and select New > Role. - Click General in the left pane. Type a name for the new role in the Role Name field. The role name is required.

- Enter a description of the new role in the Description field.
- Click Members in the left pane.
- In the right pane, select Managed Role. Click to add new entries to the list of members.

- In the Search drop-down list, select Users from the Search drop-down list, then click Search. Select one of the entries returned, and click .

- After adding all of the entries, click .
ldapsubentry object class, which is defined in the ITU X.509 standard. In addition, each managed role requires two object classes that inherit from the nsRoleDefinition object class:
- nsSimpleRoleDefinition
- nsManagedRoleDefinition
description attribute.
nsRoleDN attribute in their entry.
- Use
ldapmodifywith the-aoption to add the managed role entry. The new entry must contain thensManagedRoleDefinitionobject class, which in turn inherits from theLdapSubEntry,nsRoleDefinition, andnsSimpleRoleDefinitionobject classes.ldapmodify
-a-D "cn=Directory Manager" -w secret -h host -p 389 dn: cn=Marketing,ou=people,dc=example,dc=com objectclass: top objectclass: LdapSubEntry objectclass: nsRoleDefinition objectclass: nsSimpleRoleDefinition objectclass: nsManagedRoleDefinition cn: Marketing description: managed role for marketing staff - Assign the role to the marketing staff members, one by one, using
ldapmodify:ldapmodify -D "cn=Directory Manager" -w secret -h host -p 389 dn: cn=Bob,ou=people,dc=example,dc=com changetype: modify add: nsRoleDN nsRoleDN: cn=Marketing,ou=people,dc=example,dc=com
ThensRoleDNattribute in the entry indicates that the entry is a member of a managed role,cn=Marketing,ou=people,dc=example,dc=com.
- In the Directory Server Console, select the Directory tab.
- Browse the tree in the left navigation pane, and select the parent entry for the new role.
- Go to the Object menu, and select New > Role.
Alternatively, right-click the entry and select New > Role. - Click General in the left pane. Type a name for the new role in the Role Name field. The role name is required.

- Enter a description of the new role in the Description field.
- Click Members in the left pane.A search dialog box appears briefly.
- In the right pane, select Filtered Role.

- Enter an LDAP filter in the text field, or click to be guided through the construction of an LDAP filter.The opens the standard LDAP URL construction dialog. Ignore the fields for LDAP Server Host, Port, Base DN, and Search (since the search scope cannot be set filtered role definitions).

- Select the types of entries to filter from the For drop-down list. The entries can be users, groups, or both.
- Select an attribute from the Where drop-down list. The two fields following it refine the search by selecting one of the qualifiers from the drop-down list, such
as contains,does not contain,is, oris not. Enter an attribute value in the text box. To add additional filters, click . To remove unnecessary filters, click .
- Click to try the filter.

- Click .
ldapsubentry object class, which is defined in the ITU X.509 standard. In addition, each filtered role requires two object classes that inherit from the nsRoleDefinition object class:
- nsComplexRoleDefinition
- nsFilteredRoleDefinition
nsRoleFilter attribute to define the LDAP filter to determine role members. Optionally, the role can take a description attribute.
nsRoleFilter attribute.
- Run
ldapmodifywith the-aoption to add a new entry:ldapmodify
-a-D "cn=Directory Manager" -w secret -h host -p 389 - Create the filtered role entry.The role entry has the
nsFilteredRoleDefinitionobject class, which inherits from theLdapSubEntry,nsRoleDefinition, andnsComplexRoleDefinitionobject classes.ThensRoleFilterattribute sets a filter foro(organization) attributes that contain a value ofsales managers.dn: cn=SalesManagerFilter,ou=people,dc=example,dc=com objectclass: top objectclass: LDAPsubentry objectclass: nsRoleDefinition objectclass: nsComplexRoleDefinition objectclass: nsFilteredRoleDefinition cn: SalesManagerFilter nsRoleFilter: o=sales managers Description: filtered role for sales managers
o attribute with the value sales managers), and, therefore, it is a member of this filtered role automatically:
dn: cn=Pat Smith,ou=people,dc=example,dc=com objectclass: person cn: Pat sn: Smith userPassword: secret o: sales managers
nsRoleDN attribute.
- In the Directory Server Console, select the Directory tab.
- Browse the tree in the left navigation pane, and select the parent entry for the new role.
- Go to the Object menu, and select New > Role.
Alternatively, right-click the entry and select New > Role. - Click General in the left pane. Type a name for the new role in the Role Name field. The role name is required.

- Click Members in the left pane.
- In the right pane, select Nested Role.

- Click to add roles to the list. The members of the nested role are members of other existing roles.
- Select a role from the Available roles list, and click .

ldapsubentry object class, which is defined in the ITU X.509 standard. In addition, each nested role requires two object classes that inherit from the nsRoleDefinition object class:
- nsComplexRoleDefinition
- nsNestedRoleDefinition
nsRoleDN attribute to identify the roles to nest within the container role. Optionally, the role can take a description attribute.
nsRoleDN attributes of the nested role definition entry.
- Run
ldapmodifywith the-aoption to add a new entry:ldapmodify
-a-D "cn=Directory Manager" -w secret -h host -p 389 - Create the nested role entry. The nested role has four object classes:
nsNestedRoleDefinitionLDAPsubentry(inherited)nsRoleDefinition(inherited)nsComplexRoleDefinition(inherited)
ThensRoleDNattributes contain the DNs for both the marketing managed role and the sales managers filtered role.dn: cn=MarketingSales,ou=people,dc=example,dc=com objectclass: top objectclass: LDAPsubentry objectclass: nsRoleDefinition objectclass: nsComplexRoleDefinition objectclass: nsNestedRoleDefinition cn: MarketingSales nsRoleDN: cn=SalesManagerFilter,ou=people,dc=example,dc=com nsRoleDN: cn=Marketing,ou=people,dc=example,dc=com
- Select the Directory tab.
- In the left navigation pane, browse the tree, and select the entry for which to view or edit a role.
- Select Set Roles from the Object menu.

- Select the Managed Roles tab to display the managed roles to which this entry belongs.

- To add a new managed role, click , and select an available role from the Role Selector window.
TIP
The configuration for a managed role associated with an entry can be edited by clicking the button. The Edit Entry dialog box opens, and the general information or members for the role can be changed. - Select the Other Roles tab to view the filtered or nested roles to which this entry belongs.
Click to make changes to any filtered or nested roles associated with the entry.
ldapsearch command returns the list of roles of which uid=scarter is a member, in addition to the regular attributes for the entry:
/usr/lib64/mozldap/ldapsearch -D "cn=directory manager" -w secret -p 389 -h server.example.com “(uid=scarter)”\* nsRoledn: uid=scarter,ou=people,dc=example,dc=com objectClass: inetorgperson objectClass: top objectClass: person objectClass: organizationalperson uid: scarter cn: Sam Carter sn: Carter givenName: Sam mail: scarter@example.com userPassword: {SSHA}6BE31mhTfcYyIQF60kWlnEL8sIvPZ59hvFTRKw== manager: uid=lbrown,ou=people,dc=example,dc=comnsrole: cn=Role for Managers,dc=example,dc=comnsrole: cn=Role for Accounting,dc=example,dc=com
IMPORTANT
nsRole attribute, not the nsRoleDN attribute, to evaluate role membership.
nsAccountLock attribute set to true.
- Select the Directory tab.
- Browse the navigation tree in the left pane to locate the base DN for the role. Roles appear in the right pane with other entries.

- Double-click the role, open the Account tab, and click the Inactivate button.
Alternatively, select the role. Right-click the role and select Inactivate from the menu.
nsAccountLock set to true. There can be several layers of nested roles, and inactivating a nested role at any point in the nesting will inactivate all roles and users beneath it.

nsAccountLock attribute is an operational attribute and must be explicitly requested in the search command in the list of search attributes. For example:
/usr/lib64/mozldap/ldapsearch -D "cn=directory manager" -w secret -p 389 -h server.example.com “(uid=scarter)” nsAccountLock
nsRoleDN attribute for each role member. To delete the nsRoleDN attribute for each role member, enable the Referential Integrity plug-in, and configure it to manage the nsRoleDN attribute. For more information on the Referential Integrity plug-in, see Section 3.5, “Maintaining Referential Integrity”.
Mountain Biking, interested users should be able to add themselves or remove themselves easily.
MR. The MR role has been locked using account inactivation. This means that user A cannot bind to the server because the nsAccountLock attribute is computed as true for that user. However, if user A was already bound to Directory Server and noticed that he is now locked through the MR role, the user can remove the nsRoleDN attribute from his entry and unlock himself if there are no ACIs preventing him.
nsRoleDN attribute, use the following ACIs depending upon the type of role being used.
- Managed roles. For entries that are members of a managed role, use the following ACI to prevent users from unlocking themselves by removing the appropriate
nsRoleDN:aci: (targetattr="nsRoleDN") (targattrfilters= add=nsRoleDN:(!(nsRoleDN=cn=AdministratorRole,dc=example,dc=com)), del=nsRoleDN:(!(nsRoleDN=cn=nsManagedDisabledRole,dc=example,dc=com))) (version3.0;aci allow mod of nsRoleDN by self but not to critical values; allow(write) userdn=ldap:///self;)
- Filtered roles. The attributes that are part of the filter should be protected so that the user cannot relinquish the filtered role by modifying an attribute. The user should not be allowed to add, delete, or modify the attribute used by the filtered role. If the value of the filter attribute is computed, then all attributes that can modify the value of the filter attribute should be protected in the same way.
- Nested roles. A nested role is comprised of filtered and managed roles, so both ACIs should be considered for modifying the attributes (
nsRoleDNor something else) of the roles that comprise the nested role.
nsview) and a filter attribute (nsviewfilter) that set up a filter for the entries which belong in that view. Once the view container entry is added, all of the entries that match the view filter instantly populate the view. The target entries only appear to exist in the view; their true location never changes. For example, a view may be created as ou=Location Views, and a filter is set for l=Mountain View. Every entry, such as cn=Jane Smith,l=Mountain View,ou=People,dc=example,dc=com, is immediately listed under the ou=Location Views entry, but the real cn=Jane Smith entry remains in the ou=People,dc=example,dc=com subtree.
NOTE
Example-views.ldif, installed with Directory Server. This file is in the /usr/share/dirsrv/data directory on Red Hat Enterprise Linux 5 (64-bit).
- Select the Directory tab.
- In the left navigation tree, create an organizational unit suffix to hold the views. For instance, for views based on the locality (
l) attribute, name this organizational unitLocation Views. Creating sub suffixes is described in Section 2.1.1.2, “Creating a New Sub Suffix Using the Console”. - Right-click
ou=Location Views, and select New > Other.
- Select
nsviewfrom the New Object menu, and click .
- In the Property Editor window, click the button, and add the organization unit object class.

- Name the organization unit according to how to organize the views. For instance,
ou=Sunnyvale. Make theouattribute the naming attribute.
- Click the button, and add the
nsviewfilterattribute.
- Create a filter that reflects the views, such as
(l=Sunnyvale).
- Click the button in the lower right corner to change the naming attribute.
Use theouof the entry as the naming attribute instead ofdescription.
- Click to close the attributes box, and click again to save the new view entry.
- Use the
ldapmodifyutility to bind to the server and prepare it to add the new view entry to the configuration file./usr/lib64/mozldap/ldapmodify
-a-D "cn=directory manager" -w secret -p 389 -h server.example.com - Add the new views container entry, in this example, under the
dc=example,dc=comroot suffix. This entry must have thensviewobject class and thensViewFilterattribute. ThensViewFilterattribute sets the attribute-value which identifies entries that belong in the view.dn: ou=Example View,dc=example,dc=com objectClass: top objectClass: organizationalunit objectClass: nsview ou=Example View nsViewFilter: l=Mountain View description: Example View
- 12.1. Access Control Principles
- 12.2. Default ACIs
- 12.3. Creating ACIs Manually
- 12.4. Bind Rules
- 12.4.1. Bind Rule Syntax
- 12.4.2. Defining User Access - userdn Keyword
- 12.4.3. Defining Group Access - groupdn Keyword
- 12.4.4. Defining Role Access - roledn Keyword
- 12.4.5. Defining Access Based on Value Matching
- 12.4.6. Defining Access from a Specific IP Address
- 12.4.7. Defining Access from a Specific Domain
- 12.4.8. Requiring a Certain Level of Security in Connections
- 12.4.9. Defining Access at a Specific Time of Day or Day of Week
- 12.4.10. Defining Access Based on Authentication Method
- 12.4.11. Using Boolean Bind Rules
- 12.5. Creating ACIs from the Console
- 12.6. Viewing ACIs
- 12.7. Checking Access Rights on Entries (Get Effective Rights)
- 12.8. Logging Access Control Information
- 12.9. Access Control Usage Examples
- 12.9.1. Granting Anonymous Access
- 12.9.2. Granting Write Access to Personal Entries
- 12.9.3. Restricting Access to Key Roles
- 12.9.4. Granting a Group Full Access to a Suffix
- 12.9.5. Granting Rights to Add and Delete Group Entries
- 12.9.6. Granting Conditional Access to a Group or Role
- 12.9.7. Denying Access
- 12.9.8. Setting a Target Using Filtering
- 12.9.9. Allowing Users to Add or Remove Themselves from a Group
- 12.9.10. Setting an ACI to Require a Certain Security Strength Factor for Some Operations
- 12.9.11. Defining Permissions for DNs That Contain a Comma
- 12.9.12. Proxied Authorization ACI Example
- 12.10. Advanced Access Control: Using Macro ACIs
- 12.11. Access Control and Replication
- 12.12. Compatibility with Earlier Releases
- For the entire directory, a subtree of the directory, specific entries in the directory (including entries defining configuration tasks), or a specific set of entry attributes.
- For a specific user, all users belonging to a specific group or role, or all users of the directory.
- For a specific location such as an IP address or a DNS name.
aci attribute is an operational attribute; it is available for use on every entry in the directory, regardless of whether it is defined for the object class of the entry. It is used by the Directory Server to evaluate what rights are granted or denied when it receives an LDAP request from a client. The aci attribute is returned in an ldapsearch operation if specifically requested.
- Target
- Permission
- Bind Rule
aci attribute is multi-valued, which means that you can define several ACIs for the same entry or subtree.
inetorgperson object class can be created at the level of an organizationalUnit entry or a locality entry.
NOTE
- If your directory tree is distributed over several servers using the chaining feature, some restrictions apply to the keywords you can use in access control statements:
- ACIs that depend on group entries (
groupdnkeyword) must be located on the same server as the group entry. If the group is dynamic, then all members of the group must have an entry on the server, too. If the group is static, the members' entries can be located on remote servers. - ACIs that depend on role definitions (
rolednkeyword) must be located on the same server as the role definition entry. Every entry that is intended to have the role must also be located on the same server.
However, you can match values stored in the target entry with values stored in the entry of the bind user; for example, using theuserattrkeyword. Access is evaluated normally even if the bind user does not have an entry on the server that holds the ACI.For more information on how to chain access control evaluation, see Section 2.3.6, “Database Links and Access Control Evaluation”. - Attributes generated by class of service (CoS) cannot be used in all ACI keywords. Specifically, you should not use attributes generated by CoS with the following keywords:
- targattrfilters (Section 12.3.2.2, “Targeting Attributes”)
If you create target filters or bind rules that depend on the value of attributes generated by CoS, the access control rule will not work. For more information on CoS, see Chapter 11, Organizing Entries with Groups, Roles, and Views. - Access control rules are always evaluated on the local server. Therefore, it is not necessary to specify the hostname or port number of the server in LDAP URLs used in ACI keywords. If you do, the LDAP URL is not taken into account at all. For more information on LDAP URLs, see Appendix B, LDAP URLs.
userRoot database:
- Users can modify a list of common attributes in their own entries, including the
mail,telephoneNumber,userPassword, andseeAlsoattributes. Operational and most of the security attributes, such asaci,nsroledn, andpasswordExpirationTime, cannot be modified by users. - Users have anonymous access to the directory for search, compare, and read operations.
- The administrator (by default
uid=admin,ou=Administrators,ou=TopologyManagement,o=NetscapeRoot) has all rights except proxy rights. - All members of the
Configuration Administratorsgroup have all rights except proxy rights. - All members of the
Directory Administratorsgroup have all rights except proxy rights. Server Instance Entry(SIE) group.
NetscapeRoot subtree has its own set of default ACIs:
- All members of the
Configuration Administratorsgroup have all rights on theNetscapeRootsubtree except proxy rights. - Users have anonymous access to the
NetscapeRootsubtree for search and read operations. - All authenticated users have search, compare, and read rights to configuration attributes that identify the Admin Server.
- Group expansion.
ldapmodify utility, similar to the instructions in Section 3.3, “Using LDIF Update Statements to Create or Modify Entries”. The following sections explain in detail how to create the LDIF statements.
NOTE
aci attribute uses the following syntax:
aci: (target)(version 3.0;acl "name";permissionbind_rules;)
- target specifies the entry, attributes, or set of entries and attributes for which to control access. The target can be a distinguished name, one or more attributes, or a single LDAP filter. The target is an optional part of the ACI.
version 3.0is a required string that identifies the ACI version.- name is a name for the ACI. The name can be any string that identifies the ACI. The ACI name is required.
- permission specifically outlines what rights are being allowed or denied; for example, read or search rights.
- bind_rules specify the credentials and bind parameters that a user has to provide to be granted access. Bind rules can also specifically deny access to certain users or groups of users.
target(permissionbind_rule)(permissionbind_rule)...
aci: (target)(version 3.0;acl "name";permissionbind_rule;permissionbind_rule; ...permissionbind_rule;)
aci: (target="ldap:///uid=bjensen,dc=example,dc=com")(targetattr=*) (version 3.0;acl "aci1";allow (write) userdn="ldap:///self";)
bjensen has rights to modify all attributes in her own directory entry.
aci attribute and to the entries below it. A target can be any of the following:
- A directory entry or all of the entries in a subtree, as described in Section 12.3.2.1, “Targeting a Directory Entry”.
- Attributes of an entry, as described in Section 12.3.2.2, “Targeting Attributes”.
- A set of entries or attributes that match a specified LDAP filter, as described in Section 12.3.2.4, “Targeting Entries or Attributes Using LDAP Filters”.
- An attribute value, or a combination of values, that match a specified LDAP filter, as described in Section 12.3.2.5, “Targeting Attribute Values Using LDAP Filters”.
(keyword= "expression") (keyword!= "expression")
- keyword indicates the type of target.
- equal (=) indicates that the target is the object specified in the expression, and not equal (!=) indicates the target is not the object specified in the expression.
- expression identifies the target.
"") around expression are required. What you use for expression is dependent upon the keyword that you supply.
Table 12.1. LDIF Target Keywords
| Keyword | Valid Expressions | Wildcard Allowed |
|---|---|---|
| target | ldap:///distinguished_name | Yes |
| targetattr | attribute | Yes |
| targetfilter | LDAP_filter | Yes |
| targetattrfilters | LDAP_operation:LDAP_filter | Yes |
ou=accounting,dc=example,dc=com, the permissions you set apply to all entries in the accounting branch of the example tree.
ou=accounting,dc=example,dc=com entry, you cannot target the uid=sarette,ou=people,dc=example,dc=com entry because it is not located under the accounting tree.
!= when specifying an attribute to deny. ACLs are treated as a logical OR, which means that if you created two ACLs as shown below, the result allows all values of the target attribute.
acl1: ( target=...)( targetattr!=a )(version 3.0; acl "name";allow (...).. acl2: ( target=...)( targetattr!=b )(version 3.0; acl "name";allow (...)..
acl1) allows b and the second ACL (acl2) allows a. The result of these two ACLs is the same as the one resulting from using an ACL of the following form:
acl3: ( targetattr="*" ) allow (...) ...
deny in the permissions clause rather than using allow with ( targetattr != value ). For example, usages such as these are recommended:
acl1: ( target=...)( targetattr=a )(version 3.0; acl "name";deny (...).. acl2: ( target=...)( targetattr=b )(version 3.0; acl "name";deny (...)..
target keyword. The target keyword can accept a value of the following format:
target="ldap:///distinguished_name(target = "ldap:///uid=bjensen,dc=example,dc=com")
NOTE
\), such as (target="ldap:///uid=lfuentes,dc=example.com Bolivia\,S.A.").
target keyword. The wildcard indicates that any character or string or substring is a match for the wildcard. Pattern matching is based on any other strings that have been specified with the wildcard.
(target="ldap:///uid=*,dc=example,dc=com")— Matches every entry in the entireexampletree that has theuidattribute in the entry's RDN.(target="ldap:///uid=*Anderson,dc=example,dc=com")— Matches every entry directly under theexamplenode with auidending in Anderson.(target="ldap:///uid=C*A,dc=example,dc=com")— Matches every entry directly under theexamplenode with auidbeginning with C and ending with A.(target="ldap:///uid=*,dc=example,dc=com")— Matches every entry in the entireexampletree that has theuidattribute in the entry's RDN.(target="ldap:///uid=*,ou=*,dc=example,dc=com")— Matches every entry in theexampletree whose distinguished name contains theuidandouattributes. Thus,uid=fchen,ou=Engineering,dc=example,dc=comoruid=claire,ou=Engineering,ou=people,dc=example,dc=comwould match, butuid=bjensen,dc=example,dc=com ou=Engineering,dc=example,dc=comwould not.
uid=andy*,dc=example,dc=com targets all the directory entries in the entire example tree with a matching uid attribute and not just the entries that are immediately below the dc=example,dc=com node. In other words, this target matches with longer expressions such as uid=andy,ou=eng,dc=example,dc=com or uid=andy,ou=marketing,dc=example,dc=com.
NOTE
c=US and c=GB, then you cannot use (target="ldap:///dc=example,c=*") as a target to reference both suffixes. Neither can you use a target such as uid=bjensen,dc=*.com.
targetattr keyword. The keyword uses the following syntax:
(targetattr = "attribute")targetattr keyword with the following syntax:
(targetattr = "attribute1||attribute2...||attributen")
cn) attribute:
(targetattr = "cn")
(targetattr = "cn || sn || uid")
targetattr keyword apply to the entry that the ACI is targeting and to all the entries below it. If you target the password attribute on the entry uid=bjensen,ou=Marketing,dc=example,dc=com, only the password attribute on the bjensen entry is affected by the ACI because it is a leaf entry.
ou=Marketing,dc=example,dc=com, then all the entries beneath the branch point that can contain a password attribute are affected by the ACI.
targetattr keyword is the entry on which the ACI is placed. That is, putting an ACI such as aci: (targetattr = "uid")(access_control_rules;) on the ou=Marketing,dc=example,dc=com entry means that the ACI applies to the entire Marketing subtree. However, you can also explicitly specify a target using the target keyword:
aci: (target="ldap:///ou=Marketing,dc=example,dc=com")(targetattr="uid")(access_control_rules;)target and the targetattr keywords is not important.
targetfilter keyword with an LDAP filter. The syntax of the targetfilter keyword is as follows:
(targetfilter = "LDAP_filter")ou=accounting, and all entries in the engineering department include the attribute-value pair ou=engineering subtree. The following filter targets all the entries in the accounting and engineering branches of the directory tree:
(targetfilter = "(|(ou=accounting)(ou=engineering))")
targetfilter and the targetattr keywords to create ACIs that apply to a subset of attributes in the targeted entries.
departmentNumber and manager attributes of all entries in the Engineering business category. This example uses LDAP filtering to select all entries with businessCategory attributes set to Engineering:
dn: dc=example,dc=com objectClass: top objectClass: organization aci: (targetattr="departmentNumber || manager") (targetfilter="(businessCategory=Engineering)") (version 3.0; acl "eng-admins-write"; allow (write) groupdn ="ldap:///cn=Engineering Admins,dc=example,dc=com";)
NOTE
ldapsearch operation.
nsroledn attribute in their own entry. However, you would also want to ensure that they do not give themselves certain key roles, such as Top Level Administrator. LDAP filters are used to check that the conditions on attribute values are satisfied.
targattrfilters keyword with the following syntax:
(targattrfilters="add=attr1:F1 && attr2:F2... && attrn:Fn,del=attr1:F1 &&attr2:F2... &&attrn:Fn")
addrepresents the operation of creating an attribute.delrepresents the operation of deleting an attribute.- attrx represents the target attributes.
- Fx represents filters that apply only to the associated attribute.
(targattrfilters="add=nsroledn:(!(nsroledn=cn=superAdmin)) && telephoneNumber:(telephoneNumber=123*)")
nsroledn attribute) to their own entry, except the superAdmin role. It also allows users to add a telephone number with a 123 prefix.
NOTE
- By creating a bind rule that matches user input in the bind request with an attribute value stored in the targeted entry. For more details, see Section 12.4.5, “Defining Access Based on Value Matching”.
- By using the
targetattrandtargetfilterkeywords.
targetattr keyword to specify an attribute that is only present in the entry you want to target, and not in any of the entries below your target. For example, if you want to target ou=people,dc=example,dc=com, and there are not any organizational units (ou) defined below that node, you could specify an ACI that contains targetattr=ou.
targetfilter keyword and to specify explicitly an attribute value that appears in the entry alone. For example, during the installation of the Directory Server, the following ACI is created:
aci: (targetattr="*")(targetfilter=(o=NetscapeRoot))(version 3.0;
acl "Default anonymous access"; allow (read, search) userdn="ldap:///anyone";)o=NetscapeRoot entry.
- Allowing or denying access
- Assigning rights
NOTE
Table 12.2. User Rights
NOTE
dc=example,dc=com tree, that entity can do anything. Make sure you set the proxy ACI at the lowest possible level of the DIT; see Section 12.9.12, “Proxied Authorization ACI Example”.
- Adding an entry:
- Grant add permission on the entry being added.
- Grant write permission on the value of each attribute in the entry. This right is granted by default but could be restricted using the
targattrfilterskeyword.
- Deleting an entry:
- Grant delete permission on the entry to be deleted.
- Grant write permission on the value of each attribute in the entry. This right is granted by default but could be restricted using the
targattrfilterskeyword.
- Modifying an attribute in an entry:
- Grant write permission on the attribute type.
- Grant write permission on the value of each attribute type. This right is granted by default but could be restricted using the
targattrfilterskeyword.
- Modifying the RDN of an entry:
- Grant write permission on the entry.
- Grant write permission on the attribute type used in the new RDN.
- Grant write permission on the attribute type used in the old RDN, if you want to grant the right to delete the old RDN.
- Grant write permission on the value of attribute type used in the new RDN. This right is granted by default but could be restricted using the
targattrfilterskeyword.
- Comparing the value of an attribute:
- Grant compare permission on the attribute type.
- Searching for entries:
- Grant search permission on each attribute type used in the search filter.
- Grant read permission on attribute types used in the entry.
ldapsearch operation:
ldapsearch -hhost-sbase-b "uid=bkolics,dc=example,dc=com" objectclass=* mail
bkolics can be granted access:
aci: (targetattr = "mail")(version 3.0; acl "self access to
mail"; allow (read, search) userdn = "ldap:///self";)objectclass attribute. If you want the search operation described above to be successful, modify the ACI to allow read and search access for the mail and objectclass attributes.
aci: (targetattr = "mail || objectclass")(version 3.0; acl "self
access to mail"; allow (read, search) userdn = "ldap:///self";)allow|deny (rights). rights is a list of 1 to 8 comma-separated keywords enclosed within parentheses. Valid keywords are read, write, add, delete, search, compare, selfwrite, proxy, or all.
aci: (target="ldap:///dc=example,dc=com") (version 3.0;acl "example";
allow (read, search, compare) bind_rule;)modrdn rights using ACIs, target the relevant entries but omit the targetattr keyword. For example, to prevent the cn=helpDeskGroup,ou=groups,dc=example,dc=com group from renaming any entries in the set specified by the pattern cn=*,ou=people,dc=example,dc=com, add the following ACI:
aci: (target="ldap:///cn=*,ou=people,dc=example,dc=com")
(version 3.0; acl "Deny modrdn rights to the helpDeskGroup";
deny(write) groupdn="ldap:///cn=helpDeskGroup,ou=groups,dc=example,dc=com";)- Users, groups, and roles that are granted access.
- Locations from which an entity must bind.
- Times or days on which binding must occur.
- Types of authentication that must be in use during binding.
keyword= "expression"; orkeyword!= "expression";
=) indicates that keyword and expression must match in order for the bind rule to be true, and not equal (!=) indicates that keyword and expression must not match in order for the bind rule to be true.
NOTE
timeofday keyword also supports the inequality expressions (<, <=, >,>=). This is the only keyword that supports these expressions.
"") around expression and the delimiting semicolon (;) are required. The expressions you can use depend on the associated keyword.
Table 12.3. LDIF Bind Rule Keywords
| Keyword | Valid Expressions | Wildcard Allowed | ||||||
|---|---|---|---|---|---|---|---|---|
| userdn |
| Yes, in DN only | ||||||
| groupdn |
| No | ||||||
| roledn | ldap:///DN|| DN | No | ||||||
| userattr | attribute#bindType orattribute#value | No | ||||||
| ip | IP_address | Yes | ||||||
| dns | DNS_host_name | Yes | ||||||
| dayofweek | sun mon tue wed thu fri sat | No | ||||||
| timeofday | 0 - 2359 | No | ||||||
| authmethod |
| No |
userdn keyword. The userdn keyword requires one or more valid distinguished names in the following format:
userdn = "ldap:///dn[|| ldap:///dn]...[||ldap:///dn]"
anyone, all, self, or parent:
userdn = "ldap:///anyone" Defines anonymous access userdn = "ldap:///all" Defines general access userdn =ldap:///self" Defines self access userdn =ldap:///parent" Defines access for the parent entry
userdn keyword can also be expressed as an LDAP filter:
ldap:///suffix??scope?(filter)
NOTE
\) escape character.
userdn = "ldap:///suffix??scope?(filter)"
example tree would be granted or denied access to the targeted resource dynamically based on the following URL:
userdn = "ldap:///dc=example,dc=com??sub?(|(ou=engineering)(ou=accounting))"
NOTE
userdn keyword definitions. For example:
userdn="ldap:///dc=example,dc=com??sub?(ou=engineering)" and userdn="ldap:///dc=example,dc=com??sub?(manager="uid=bjensen,ou=managers,dc=example,dc=com")"
&& is not allowed. For example, this is not an acceptable bind rule:
groupdn="ldap:///dc=example,dc=com??sub?(ou=engineering) && ldap:///dc=example,dc=com??sub?(manager="uid=bjensen,ou=managers,dc=example,dc=com")"
uid=u*,dc=example,dc=com indicates that only users with a bind DN beginning with the letter u are allowed or denied access based on the permissions you set.
Table 12.4. userdn Keyword Examples
groupdn keyword to specify that access to a targeted entry is granted or denied if the user binds using a DN that belongs to a specific group.
groupdn keyword requires one or more valid distinguished names in the following format:
groupdn="ldap:///dn[|| ldap:///dn]...[|| ldap:///dn]"
NOTE
\).
groupdn keyword can also be expressed with an LDAP filter:
groupdn="ldap:///suffix??scope?(filter)
groupdn syntax, the value of the groupdn expression is a single LDAP URL. Multiple groupdns can be grouped together within parentheses and use or or and connectors to define additional conditions on the group membership. For example:
(groupdn = "ldap:///ou=Groups,dc=example,dc=com??sub?(cn=*s_0)" or groupdn = "ldap:///ou=Groups,dc=example,dc=com??sub?(cn=*s_1)") and groupdn = "ldap:///ou=Groups,dc=example,dc=com??sub?(cn=*s_2)"
groupdn URLs together, the keyword supports pipes to separate the URLs:
groupdn = "LDAPURI0 || LDAPURL1 || LDAPURL2"
&), like groupdn = "LDAPURI0 && LDAPURL1", or double quotes.
groupdn keywords so that the bind user must belong to both an Administrators group and a Managers group:
groupdn="ldap:///dc=example,dc=com??sub?(cn=*Administrators)" and groupdn="ldap:///dc=example,dc=com??sub?(cn=*Managers)"
Table 12.5. groupdn Examples
| Scenario | Example | Description | |
|---|---|---|---|
| Groupdn keyword containing an LDAP URL | groupdn = "ldap:///cn=Administrators,dc=example,dc=com"; |
The bind rule is evaluated to be true if the bind DN belongs to the Administrators group. If you wanted to grant the Administrators group permission to write to the entire directory tree, you would create the following ACI on the dc=example,dc=com node:
| |
| Groupdn keyword containing an LDAP URL with a filter | groupdn = "ldap:///dc=example,dc=com??sub?(cn=*Administrators)"; | The bind rule is evaluated to be true if the bind DN belongs to any of the groups which are returned, meaning they match the filter. | |
| Groupdn keyword containing logical OR of LDAP URLs | groupdn = "ldap:///cn=Administrators,dc=example,dc=com" || "ldap:///cn=Mail Administrators,dc=example,dc=com"; |
The bind rule is evaluated to be true if the bind DN belongs to either the Administrators or the Mail Administrators group.
|
roledn keyword to specify that access to a targeted entry is granted or denied if the user binds using a DN that belongs to a specific role.
roledn keyword requires one or more valid distinguished names in the following format:
roledn = "ldap:///dn[|| ldap:///dn]... [|| ldap:///dn]"
NOTE
\).
roledn keyword has the same syntax and is used in the same way as the groupdn keyword, with the exception of the LDAP filter, which is not implemented for role membership.
manager attribute of a user entry in order for the ACI to apply. In this case, only the user's manager would have access to the entry.
favoriteDrink attribute is beer to read all the entries of other users that have the same value for favoriteDrink.
userattr keyword can be used to specify which attribute values must match between the entry used to bind and the targeted entry. You can specify any of the following:
- A user DN
- A group DN
- A role DN
- An LDAP filter, in an LDAP URL
- Any attribute type
userattr keyword is as follows:
userattr = "attrName#bindType
userattr = "attrName#attrValue
- attrName is the name of the attribute used for value matching.
- bindType is either
USERDN,GROUPDN, orLDAPURL. - attrValue is any string representing an attribute value.
userattr keyword with a bind based on the user DN:
userattr = "manager#USERDN"
manager attribute in the targeted entry. You can use this to allow a user's manager to modify employees' attributes. This mechanism only works if the manager attribute in the targeted entry is expressed as a full DN.
aci: (target="ldap:///dc=example,dc=com")(targetattr=*)
(version 3.0; acl "manager-write"; allow (all) userattr = "manager#USERDN";)userattr keyword with a bind based on a group DN:
userattr = "owner#GROUPDN"
owner attribute of the targeted entry. For example, you can use this mechanism to allow a group to manage employees' status information. You can use an attribute other than owner as long as the attribute you use contains the DN of a group entry.
userattr = "ldap:///dc=example,dc=com?owner#GROUPDN"
dc=example,dc=com suffix. The server can process this type of syntax more quickly than the previous example.
owner is not an allowed entry in a user's entry. You would have to extend your schema to allow this attribute in a person object.)
userattr keyword with a bind based on a role DN:
userattr = "exampleEmployeeReportsTo#ROLEDN"
exampleEmployeeReportsTo attribute of the targeted entry. For example, if you create a nested role for all managers in your company, you can use this mechanism to grant managers at all levels access to information about employees that are at a lower grade than themselves.
NOTE
exampleEmployeeReportsToattribute to the schema and that all employee entries contain this attribute. It also assumes that the value of this attribute is the DN of a role entry. For information on adding attributes to the schema, see Section 6.4.2, “Creating Attributes”.
userattr = "ldap:///dc=example,dc=com?employeeReportsTo#ROLEDN"
dc=example,dc=com suffix. The server can process this type of syntax more quickly than the previous example.
userattr keyword with a bind based on an LDAP filter:
userattr = "myfilter#LDAPURL
userattr keyword with a bind based on any attribute value:
userattr = "favoriteDrink#Beer"
favoriteDrink attribute with a value of Beer.
userattr keyword to associate the entry used to bind with the target entry, the ACI applies only to the target specified and not to the entries below it. In some circumstances, you might want to extend the application of the ACI several levels below the targeted entry. This is possible by using the parent keyword and specifying the number of levels below the target that should inherit the ACI.
userattr keyword in association with the parent keyword, the syntax is as follows:
userattr = "parent[inheritance_level].attrName#bindType
userattr = "parent[inheritance_level].attrName#attrValue
- inheritance_level is a comma-separated list that indicates how many levels below the target inherits the ACI. You can include five levels (
0,1,2,3,4) below the targeted entry; zero (0) indicates the targeted entry. - attribute is the attribute targeted by the
userattrorgroupattrkeyword. - bindType can be one of
USERDN,GROUPDN, orLDAPURL.
userattr = "parent[0,1].manager#USERDN"
bjensen is allowed to read and search the cn=Profiles entry as well as the first level of child entries which includes cn=mail and cn=news, thus allowing her to search through her own mail and news IDs.
- Explicitly set read and search access for user
bjensenon thecn=Profiles,cn=mail, andcn=newsentries in the directory. - Add the owner attribute with a value of
bjensento thecn=mailandcn=newsentries, and then add the following ACI to thecn=mailandcn=newsentries.aci: (targetattr="*") (version 3.0; acl "profiles access"; allow (read,search) userattr="owner#USERDN";)
userattr keyword in conjunction with all or add permissions does not behave as one would typically expect. Typically, when a new entry is created in the directory, Directory Server evaluates access rights on the entry being created and not on the parent entry. However, in the case of ACIs using the userattr keyword, this behavior could create a security hole, and the server's normal behavior is modified to avoid it.
aci: (target="ldap:///dc=example,dc=com")(targetattr=*) (version 3.0;
acl "manager-write"; allow (all) userattr = "manager#USERDN";)cn=Joe,ou=eng,dc=example,dc=com) might want to create an entry in the Human Resources branch of the tree to use (or misuse) the privileges granted to Human Resources employees.
dn: cn= Trojan Horse,ou=Human Resources,dc=example,dc=com objectclass: top ... cn: Trojan Horse manager: cn=Joe,ou=eng,dc=example,dc=com
parent keyword to grant add rights below existing entries. You must specify the number of levels below the parent for add rights. For example, the following ACI allows child entries to be added to any entry in the dc=example,dc=com that has a manager attribute that matches the bind DN:
aci: (target="ldap:///dc=example,dc=com")(targetattr=*)
(version 3.0; acl "parent-access"; allow (add)
userattr = "parent[0,1].manager#USERDN";)ip = "IP_address" or ip != "IP_address"
ip = "12.123.1.*";
12.3.45.* to specify a specific subnetwork or 123.45.6.*+255.255.255.115 to specify a subnetwork mask.
dns = "DNS_Hostnameor dns != "DNS_Hostname
WARNING
dns keyword requires that the naming service used on your machine is DNS. If the name service is not DNS, use the ip keyword instead.
dns keyword requires a fully qualified DNS domain name. Granting access to a host without specifying the domain creates a potential security threat. For example, the following expression is allowed but not recommended:
dns = "legend.eng";
dns = "legend.eng.example.com";
dns keyword allows wildcards. For example:
dns = "*.example.com";
ip keyword, as described in Section 12.4.6, “Defining Access from a Specific IP Address”.
ssf = "key_strength" ssf >= "key_strength"
ssf keyword accepts any positive whole number. If this is set to 0, than no secure connection is required for an operation.
timeofday operator time| equal to (=) |
| not equal to (!=) |
| greater than (>) |
| greater than or equal to (>=) |
| less than (<) |
| less than or equal to (<=) |
timeofday keyword requires a time of day expressed in hours and minutes in the 24 hour clock (0 to 2359).
NOTE
dayofweek = "day1, day2 ...dayofweek keyword are the English three-letter abbreviations for the days of the week: sun, mon, tue, wed, thu, fri, sat.
timeofday and dayofweek syntax:
- The bind rule is evaluated to be true if the client is accessing the directory at noon.
timeofday = "1200";
- The bind rule is evaluated to be true if the client is accessing the directory at any time other than 1 a.m.
timeofday != "0100";
- The bind rule is evaluated to be true if the client is accessing the directory at any time after 8 a.m.
timeofday > "0800";
- The bind rule is evaluated to be true if the client is accessing the directory at any time before 6 p.m.
timeofday < "1800";
- The bind rule is evaluated to be true if the client is accessing the directory at 8 a.m. or later.
timeofday >= "0800";
- The bind rule is evaluated to be true if the client is accessing the directory at 6 p.m. or earlier.
timeofday <= "1800";
- The bind rule is evaluated to be true if the client is accessing the directory on Sunday, Monday, or Tuesday.
dayofweek = "Sun, Mon, Tue";
authmethod keyword sets the specific method that a client uses to bind to the directory. There are four available authentication methods:
- None. Authentication is not required. This is the default. It represents anonymous access.
- Simple. The client must provide a user name and password to bind to the directory.
- SSL. The client must bind to the directory using some kind of PKI credentials, meaning a client must present an SSL certificate either in a database or on a smart card, token, or some other device.Certificate-based authentication, as one method, is described in Section 14.2.10, “Using Certificate-Based Authentication”.
- SASL. The client must bind to the directory over a Simple Authentication and Security Layer (SASL) connection. Directory Server supports three SASL mechanisms:
EXTERNAL,CRAM-MD5,DIGEST-MD5(for Kerberos systems), andGSS-API(for Kerberos systems). For information on setting up SASL, see Section 14.3, “Using SASL”.
NOTE
authmethod = "sasl_mechanismnone, simple, ssl, or "sasl sasl_mechanism".
authmethod keyword:
- Authentication is not checked during bind rule evaluation.
authmethod = "none";
- The bind rule is evaluated to be true if the client is accessing the directory using a username and password.
authmethod = "simple";
- The bind rule is evaluated to be true if the client authenticates to the directory using a certificate over LDAPS. This is not evaluated to be true if the client authenticates using simple authentication (bind DN and password) over LDAPS. The
authmethod = "ssl"means that a certificate must be presented to authenticate to the server. This does not configure a required connection type, even though SSL has to be used with certificate-based authentication.authmethod = "ssl";
- The bind rule is evaluated to be true if the client is accessing the directory using the SASL DIGEST-MD5 mechanism.
authmethod = "sasl DIGEST-MD5";
AND, OR, and NOT to set very precise access rules. You cannot use the Directory Server Console to create Boolean bind rules. You must create an LDIF statement.
bind_rule[boolean][bind_rule][boolean][bind_rule]...;)
Mail Administrator's group and if the client is running from within the example.com domain:
(groupdn = "ldap:///cn=administrators,dc=example,dc=com" or
groupdn = "ldap:///cn=mail administrators,dc=example,dc=com" and
dns = "*.example.com";)- Innermost to outermost parenthetical expressions first.
- All expressions from left to right.
NOTbeforeANDorORoperators.ORandANDoperators have no order of precedence.
(bind_rule_A) OR (bind_rule_B) (bind_rule_B) OR (bind_rule_A)
NOT is evaluated before the Boolean OR and Boolean AND. Thus, in the following example, bind rule B is evaluated before bind rule A despite the left-to-right rule.
(bind_rule_A) AND NOT (bind_rule_B)
- Deny access (Section 12.3.3.4, “Permissions Syntax”).
- Create value-based ACIs (Section 12.3.2.2, “Targeting Attributes”).
- Define parent access (Section 12.4.2.4, “Parent Access (parent Keyword)”).
- Create ACIs that contain Boolean bind rules (Section 12.4.11, “Using Boolean Bind Rules”).
- Create ACIs that use the
roledn,userattr,authmethodkeywords.
NOTE
- Start the Directory Server Console. Log in using the bind DN and password of a privileged user, such as the Directory Manager, who has write access to the ACIs configured for the directory.
- Select the Directory tab.
- Right-click the entry in the navigation tree for which to set access control, and select Set Access Permissions from the pop-up menu.
Alternatively, highlight the entry, and select Set Access Permissions from the Object menu. - Click New to open the Access Control Editor.
- Open the Access Control Editor, as described in Section 12.5.1, “Displaying the Access Control Editor”.If the view displayed is different from Figure 12.2, “Access Control Editor Window”, click the button.
- Type the ACI name in the ACI Name field.The name can be any unique string to identify the ACI. If you do not enter a name, the server uses
unnamed ACI. - In the Users/Groups tab, select the users to whom you are granting access by highlighting All Users or clicking the button to search the directory for the users to add.

- Select a search area from the drop-down list, enter a search string in the Search field, and click the button. You can use wildcards (an asterisk,
*) to search for partial usernames. The search results are displayed in the list below. - Highlight the entries you want in the search result list, and click the button to add them to the list of entries which have access permission.
- Click to dismiss the Add Users and Groups window.
The selected entries are now listed on the Users/Groups tab in the ACI editor. - In the Access Control Editor, click the Rights tab, and use the checkboxes to select the rights to grant.

- Click the Targets tab. Click to display the current node as the target for the ACI or click to select a different suffix.

NOTE
You can change the value of the target DN, but the new DN must be a direct or indirect child of the selected entry.If you do not want every entry in the subtree under this node to be targeted by the ACI, enter a filter in the Filter for Sub-entries field. The filter applies to every entry below the target entry; for example, setting a filter ofou=Salesmeans that only entries withou=Salesin their DN are returned.Additionally, you can restrict the scope of the ACI to only certain attributes by selecting the attributes to target in the attribute list. - Click the Hosts tab, then the button to open the Add Host Filter dialog box.
You can specify a hostname or an IP address. With an IP address, you can use an asterisk (*) as a wildcard. - Click the Times tab to display the table showing at what times access is allowed.By default, access is allowed at all times. You can change the access times by clicking and dragging the cursor over the table. You cannot select discrete blocks of time, only continuous time ranges.

- Click when all of the configuration is complete.
NOTE
- In the Directory tab, right-click the top entry in the subtree, and choose Set Access Permissions from the pop-up menu.
The Access Control Manager window opens, listing the ACIs belonging to the entry. - In the Access Control Manager window, highlight the ACI to edit, and click .

- Make the edits to the ACI in the Access Control Editor; the different screens are described more in Section 12.5.2, “Creating a New ACI” and in the online help.
- When the edits are complete, click .
ldapsearch command: [7]
/usr/lib64/mozldap/ldapsearch -hhost-pport-bbaseDN-DrootDN-wrootPassword(aci=*) aci
ldapsearch utility.
- Start the Directory Server Console.
- In the Directory tab, right-click the entry in the navigation tree, and select Set Access Permissions.
- Check the Show Inherited ACIs checkbox to display all ACIs created on entries above the selected entry that also apply.

- An administrator can use the get effective rights command in order to better organize access control instructions for the directory. It is frequently necessary to restrict what one group of users can view or edit versus another group. For instance, members of the
QA Managersgroup may have the right to search and read attributes likemanagerandsalarybut onlyHR Groupmembers have the rights to modify or delete them. Checking the effective rights for a user or group is one way to verify that the appropriate access controls are in place. - A user can run the get effective rights command to see what attributes he can view or modify on his personal entry. For instance, a user should have access to attributes such as
homePostalAddressandcnbut may only have read access tomanagerandsalaryattributes.
entryLevelRights: vadn attributeLevelRights: givenName:rscWO, sn:rscW, objectClass:rsc, uid:rsc, cn:rscW
Table 12.6. Entry Rights
| Permission | Description |
|---|---|
| a | Add an entry. |
| d | Delete this entry. |
| n | Rename the DN. |
| v | View the entry. |
Table 12.7. Attribute Rights
| Permission | Description |
|---|---|
| r | Read. |
| s | Search. |
| w |
Write (mod-add).
|
| o |
Obliterate(mod-del). Analogous to delete.
|
| c | Compare. |
| W | Self-write. |
| O | Self-delete. |
-J option with the ldapsearch command. (If an ldapsearch is run without the -J option, then, naturally, the entry is returned as normal, without any get effective rights information.)
/usr/lib64/mozldap/ldapsearch -pport-hhost-DbindDN-wbindPassword-bsearchBase-J 1.3.6.1.4.1.42.2.27.9.5.2:criticality:dn:GER_subject(searchFilter)attributeList
-bsearchBase is the base DN of the subtree or entry used to search for the GER subject.If the search base is a specific entry DN or if only one entry is returned, then the results show the rights the requester has over that specific entry. If multiple entries beneath the search base match the filter, then the search returns every matching entry, with the rights for the requester over each entry.1.3.6.1.4.1.42.2.27.9.5.2is the OID for the get effective rights control.- criticality specifies whether the search operation should return an error if the server does not support this control (
true) or if it should be ignored and let the search return as normal (false). - The GER_subject is the person whose rights are being checked. If the GER_subject is left blank (
dn:), than the rights of an anonymous user are returned. - An optional attributeList limits the get effective rights results to the specified attribute or object class. As with a regular
ldapsearch, this can give specific attributes, likemail. If no attributes are listed, then every present attribute for the entry is returned. Using an asterisk (*) returns the rights for every possible attribute for the entry, both existing attribute and non-existent attributes. Using an plus sign (+) returns operational attributes for the entry. Examples for checking rights for specific attributes are given in Section 12.7.2.2, “Examples of Get Effective Rights Searches for Non-Existent Attributes” and Section 12.7.2.3, “Examples of Get Effective Rights Searches for Specific Attributes or Object Classes”.
-J) has to the targets of the search (-b). The get effective rights search is a regular ldapsearch, in that it simply looks for entries that match the search parameters and returns their information. The get effective rights option adds extra information to those search results, showing what rights a specific user has over those results. That GER subject user can be the requester himself (-D is the same as -J) or someone else.
- User A checks the rights that he has over other directory entries.
- User A checks the rights that he has to his personal entry.
- User A checks the rights that User B has to User A's entry.
NOTE
ldapsearch command is run on Red Hat Enterprise Linux 5 (64-bit) using the Mozilla LDAP tools.
-D and -J options give his entry as the requester. Since he is checking his personal entry, the -b option also contains his DN.
Example 12.1. Checking Personal Rights (User A to User A)
/usr/lib64/mozldap/ldapsearch -p 389 -h localhost -D "uid=tmorris,ou=people,dc=example,dc=com" -w secret -b "uid=tmorris,ou=people,dc=example,dc=com" -J "1.3.6.1.4.1.42.2.27.9.5.2:true:dn:uid=tmorris,ou=people,dc=example,dc=com" "(objectClass=*)"
dn: uid=tmorris,ou=People,dc=example,dc=com
givenName: Ted
sn: Morris
ou: IT
ou: People
l: Santa Clara
manager: uid=jsmith,ou=People,dc=example,dc=com
roomNumber: 4117
mail: tmorris@example.com
facsimileTelephoneNumber: +1 408 555 5409
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
uid: tmorris
cn: Ted Morris
userPassword: {SSHA}bz0uCmHZM5b357zwrCUCJs1IOHtMD6yqPyhxBA==
entryLevelRights: v
attributeLevelRights: givenName:rsc, sn:rsc, ou:rsc, l:rsc, manager:rsc, roomNumber:rscwo, mail:rscwo, facsimileTelephoneNumber:rscwo, objectClass:rsc, uid:rsc, cn:rsc, userPassword:wo-D) checks his rights (-J) to Dave Miller's entry (-b):
Example 12.2. Personally Checking the Rights of One User over Another (User A to User B)
/usr/lib64/mozldap/ldapsearch -p 389 -h localhost -D "uid=tmorris,ou=people,dc=example,dc=com" -w secret -b "uid=dmiller,ou=people,dc=example,dc=com" -J "1.3.6.1.4.1.42.2.27.9.5.2:true:dn:uid=tmorris,ou=people,dc=example,dc=com" "(objectClass=*)"
dn: uid=dmiller,ou=People,dc=example,dc=com
... snip ...
entryLevelRights: vad
attributeLevelRights: givenName:rscwo, sn:rscwo, ou:rscwo, l:rscwo, manager:rsc, roomNumber:rscwo, mail:rscwo, facsimileTelephoneNumber:rscwo, objectClass:rscwo, uid:rscwo, cn:rscwo, userPassword:rswo-J), has over her subordinate, Ted Morris (-b):
Example 12.3. The Directory Manager's Checking the Rights of One User over Another (User A to User B)
/usr/lib64/mozldap/ldapsearch -p 389 -h localhost -D "cn=directory manager" -w secret -b "uid=tmorris,ou=people,dc=example,dc=com" -J "1.3.6.1.4.1.42.2.27.9.5.2:true:dn:uid=jsmith,ou=people,dc=example,dc=com" "(objectClass=*)"
dn: uid=tmorris,ou=People,dc=example,dc=com
... snip ...
entryLevelRights: vadn
attributeLevelRights: givenName:rscwo, sn:rscwo, ou:rscwo, l:rscwo, manager:rscwo, roomNumber:rscwo, mail:rscwo, facsimileTelephoneNumber:rscwo, objectClass:rscwo, uid:rscwo, cn:rscwo, userPassword:rscwo/usr/lib64/mozldap/ldapsearch -p 389 -h localhost -D "uid=dmiller,ou=people,dc=example,dc=com" -w secret -b "uid=tmorris,ou=people,dc=example,dc=com" -J "1.3.6.1.4.1.42.2.27.9.5.2:true:dn:uid=tmorris,ou=people,dc=example,dc=com" "(objectClass=*)" ldap_search: Insufficient access ldap_search: additional info: get-effective-rights: requester has no g permission on the entry
Example 12.4. Checking the Rights Someone Else Has to a Personal Entry
/usr/lib64/mozldap/ldapsearch -p 389 -h localhost -D "uid=tmorris,ou=people,dc=example,dc=com" -w secret -b "uid=tmorris,ou=people,dc=example,dc=com" -J "1.3.6.1.4.1.42.2.27.9.5.2:true:dn:uid=dmiller,ou=people,dc=example,dc=com" "(objectClass=*)"
dn: uid=tmorris,ou=people,dc=example,dc=com
... snip ...
entryLevelRights: v
attributeLevelRights: givenName:rsc, sn:rsc, ou:rsc, l:rsc,manager:rsc, roomNumber:rsc, mail:rsc, facsimileTelephoneNumber:rsc, objectClass:rsc, uid:rsc, cn:rsc, userPassword:noneou, givenName, l, and other attributes, and no rights to the userPassword attribute.
userPassword value is removed, then a future effective rights search on the entry above would not return any effective rights for userPassword, even though self-write and self-delete rights could be allowed.
*) with the get effective rights search returns every attribute available for the entry, including attributes not set on the entry. For example:
Example 12.5. Returning Effective Rights for Non-Existent Attributes
/usr/lib64/mozldap/ldapsearch -D "cn=directory manager" -w secret12 -b "uid=scarter,ou=people,dc=example,dc=com" -J 1.3.6.1.4.1.42.2.27.9.5.2:true:dn:uid=scarter,ou=people,dc=example,dc=com "(objectclass=*)" "*"
dn: uid=scarter,ou=People,dc=example,dc=com
givenName: Sam
telephoneNumber: +1 408 555 4798
sn: Carter
ou: Accounting
ou: People
l: Sunnyvale
manager: uid=dmiller,ou=People,dc=example,dc=com
roomNumber: 4612
mail: scarter@example.com
facsimileTelephoneNumber: +1 408 555 9700
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
uid: scarter
cn: Sam Carter
userPassword: {SSHA}Xd9Jt8g1UsHC8enNDrEmxj3iJPKQLItlDYdD9A==
entryLevelRights: vadn
attributeLevelRights: objectClass:rscwo, aci:rscwo, sn:rscwo, cn:rscwo, description:rscwo, seeAlso:rscwo, telephoneNumber:rscwo, userPassword:rscwo, destinationIndicator:rscwo, facsimileTelephoneNumber:rscwo, internationaliSDNNumber:rscwo, l:rscwo, ou:rscwo, physicalDeliveryOfficeName:rscwo, postOfficeBox:rscwo, postalAddress:rscwo, postalCode:rscwo, preferredDeliveryMethod:rscwo, registeredAddress:rscwo, st:rscwo, street:rscwo, teletexTerminalIdentifier:rscwo, telexNumber:rscwo, title:rscwo, x121Address:rscwo, audio:rscwo, businessCategory:rscwo, carLicense:rscwo, departmentNumber:rscwo, displayName:rscwo, employeeType:rscwo, employeeNumber:rscwo, givenName:rscwo, homePhone:rscwo, homePostalAddress:rscwo, initials:rscwo, jpegPhoto:rscwo, labeledUri:rscwo, manager:rscwo, mobile:rscwo, pager:rscwo, photo:rscwo, preferredLanguage:rscwo, mail:rscwo, o:rscwo, roomNumber:rscwo, secretary:rscwo, uid:rscwo,x500UniqueIdentifier:rscwo, userCertificate:rscwo, userSMIMECertificate:rscwo, userPKCS12:rscwosecretary, are listed, even though that attribute is non-existent.
Example 12.6. Get Effective Rights Results for Specific Attributes
/usr/lib64/mozldap/ldapsearch -D "cn=directory manager" -w secret12 -b "uid=scarter,ou=people,dc=example,dc=com" -J 1.3.6.1.4.1.42.2.27.9.5.2:true:dn:uid=scarter,ou=people,dc=example,dc=com "(objectclass=*)"cn mail initialsdn: uid=scarter,ou=People,dc=example,dc=com cn: Sam Carter mail: scarter@example.com entryLevelRights: vadn attributeLevelRights:cn:rscwo, mail:rscwo, initials:rscwo
initials attribute in Example 12.6, “Get Effective Rights Results for Specific Attributes”, to see the rights which are available, similar to using an asterisk to list all attributes.
Example 12.7. Get Effective Rights Results for an Attribute within an Object Class
/usr/lib64/mozldap/ldapsearch -D "cn=directory manager" -w secret12 -b "uid=scarter,ou=people,dc=example,dc=com" -J 1.3.6.1.4.1.42.2.27.9.5.2:true:dn:uid=scarter,ou=people,dc=example,dc=com "(objectclass=*)"uidNumber@posixAccount...snip... dn: cn=template_posixaccount_objectclass,uid=scarter,ou=people,dc=example,dc=com uidnumber: (template_attribute) entryLevelRights: v attributeLevelRights: uidNumber:rsc
NOTE
-D) is the Directory Manager.
Example 12.8. Get Effective Rights Results with No ACL Set (Regular User)
$ /usr/lib64/mozldap/ldapsearch -D "uid=scarter,ou=people,dc=example,dc=com" -w secret12 -b "dc=example,dc=com" -J 1.3.6.1.4.1.42.2.27.9.5.2:true:dn:uid=scarter,ou=people,dc=example,dc=com "(objectclass=*)" "*@person" $
*) instead of a specific attribute returns all of the attributes (present and non-existent) for the specified GER subject and the full list of attributes for the object class template. For example:
Example 12.9. Get Effective Rights Results for All Attribute for an Object Class
/usr/lib64/mozldap/ldapsearch -D "cn=directory manager" -w secret12 -b "uid=scarter,ou=people,dc=example,dc=com" -J 1.3.6.1.4.1.42.2.27.9.5.2:true:dn:uid=scarter,ou=people,dc=example,dc=com "(objectclass=*)"*@posixaccount...snip... dn: cn=template_posixaccount_objectclass,uid=scarter,ou=people,dc=example,dc=com objectClass: posixaccount objectClass: top homeDirectory: (template_attribute) gidNumber: (template_attribute) uidNumber: (template_attribute) uid: (template_attribute) cn: (template_attribute) entryLevelRights: v attributeLevelRights: cn:rsc, uid:rsc, uidNumber:rsc, gidNumber:rsc, homeDirectory:rsc, objectClass:rsc, userPassword:none, loginShell:rsc, gecos:rsc, description:rsc, aci:rsc
ldapsearches, including get effective rights searches. To return the information for the operational attributes, use the plus sign (+). This returns only the operational attributes that can be used in the entry. For example:
Example 12.10. Get Effective Rights Results for Operational Attributes
/usr/lib64/mozldap/ldapsearch -D "cn=directory manager" -w secret12 -b "uid=scarter,ou=people,dc=example,dc=com" -J 1.3.6.1.4.1.42.2.27.9.5.2:true:dn:uid=scarter,ou=people,dc=example,dc=com "(objectclass=*)" "+"
dn: uid=scarter,ou=People,dc=example,dc=com
entryLevelRights: vadn
attributeLevelRights: nsICQStatusText:rscwo, passwordGraceUserTime:rscwo, pwdGraceUserTime:rscwo, nsYIMStatusText:rscwo, modifyTimestamp:rscwo, passwordExpWarned:rscwo, pwdExpirationWarned:rscwo, entrydn:rscwo, aci:rscwo, nsSizeLimit:rscwo, nsAccountLock:rscwo, passwordExpirationTime:rscwo, entryid:rscwo, nsSchemaCSN:rscwo, nsRole:rscwo, retryCountResetTime:rscwo, ldapSchemas:rscwo, nsAIMStatusText:rscwo, copiedFrom:rscwo, nsICQStatusGraphic:rscwo, nsUniqueId:rscwo, creatorsName:rscwo, passwordRetryCount:rscwo, dncomp:rscwo, nsTimeLimit:rscwo, passwordHistory:rscwo, pwdHistory:rscwo, nscpEntryDN:rscwo, subschemaSubentry:rscwo, nsYIMStatusGraphic:rscwo, hasSubordinates:rscwo, pwdpolicysubentry:rscwo, nsAIMStatusGraphic:rscwo, nsRoleDN:rscwo, createTimestamp:rscwo, accountUnlockTime:rscwo, copyingFrom:rscwo, nsLookThroughLimit:rscwo, nsds5ReplConflict:rscwo, modifiersName:rscwo, parentid:rscwo, passwordAllowChangeTime:rscwo, nsBackendSuffix:rscwo, nsIdleTimeout:rscwo, ldapSyntaxes:rscwo, numSubordinates:rscwodn: dc=example,dc=com objectClass: top objectClass: domain dc: example aci: (target=ldap:///ou=Accounting,dc=example,dc=com)(targetattr="*")(version 3.0; acl "test acl"; allow (read,search,compare) (userdn = "ldap:///anyone") ;) dn: ou=Accounting,dc=example,dc=com objectClass: top objectClass: organizationalUnit ou: Accounting
dc=example,dc=com subtree, the get effective rights search shows that the user does not have any rights to the dc=example,dc=com entry:
Example 12.11. Get Effective Rights Results with No ACL Set (Directory Manager)
/usr/lib64/mozldap/ldapsearch -D "cn=directory manager" -w secret12 -b "dc=example,dc=com" -J 1.3.6.1.4.1.42.2.27.9.5.2:true:dn:uid=scarter,ou=people,dc=example,dc=com "(objectclass=*)" "*@person" dn: cn=template_person_objectclass,uid=scarter,ou=people,dc=example,dc=com objectClass: person objectClass: top cn: (template_attribute) sn: (template_attribute) description: (template_attribute) seeAlso: (template_attribute) telephoneNumber: (template_attribute) userPassword: (template_attribute) entryLevelRights: none attributeLevelRights: sn:none, cn:none, objectClass:none, description:none, seeAlso:none, telephoneNumber:none, userPassword:none, aci:none
- Open the Directory tab, and right-click the entry of which to check the rights.
- Select Advanced Properties from the drop-down menu.
- Check the Show effective rights checkbox.

- Beside each attribute, the attribute-level get effective rights are displayed. The entry-level rights are shown beneath the entry's DN.
The attribute-level effective rights (r,s,c,w,o) appear next to the attributes. The entry-level rights (v,a,d,n) appear under the full DN for the entry in the lower left-hand corner of the Property Editor.
false for a get effective rights search and an error occurs, the regular entry information is returned, but, in place of rights for entryLevelRights and attributeLevelRights, an error code is returned. This code can give information on the configuration of the entry that was queried. Table 12.8, “Returned Result Codes” summarizes the error codes and the potential configuration information they can relay.
Table 12.8. Returned Result Codes
| Code | Description |
|---|---|
| 0 | Successfully completed. |
| 1 | Operation error. |
| 12 |
The critical extension is unavailable. If the criticality expression is set to true and effective rights do not exist on the entry being queried, then this error is returned.
|
| 16 | No such attribute. If an attribute is specifically queried for access rights but that attribute does not exist in the schema, this error is returned. |
| 17 | Undefined attribute type. |
| 21 | Invalid attribute syntax. |
| 50 | Insufficient rights. |
| 52 | Unavailable. |
| 53 | Unwilling to perform. |
| 80 | Other. |
- In the Console, click the Directory tab, right-click the config node, and choose Properties from the pop-up menu.
This displays the Property Editor for thecn=configentry. - Scroll down the list of attribute value pairs to locate the nsslapd-errorlog-level attribute.
- Add
128to the value already displayed in the nsslapd-errorlog-level value field.For example, if the value already displayed is8192(replication debugging), change the value to8320. For complete information on error log levels, see the Directory Server Configuration and Command-Line Tool Reference.
- Click to dismiss the Property Editor.
HostedCompany1 and HostedCompany2. It also provides Internet access to a number of individual subscribers.
- Grant anonymous access for read, search, and compare to the entire
exampletree for Example Corp. employees (Section 12.9.1, “Granting Anonymous Access”). - Grant write access to Example Corp. employees for personal information, such as
homePhoneandhomePostalAddress(Section 12.9.2, “Granting Write Access to Personal Entries”). - Grant Example Corp. employees the right to add any role to their entry, except certain critical roles (Section 12.9.3, “Restricting Access to Key Roles”).
- Grant the
example.com Human Resourcesgroup all rights on the entries in thePeoplebranch (Section 12.9.4, “Granting a Group Full Access to a Suffix”). - Grant all Example Corp. employees the right to create group entries under the
Social Committeebranch of the directory and to delete group entries that they own (Section 12.9.5, “Granting Rights to Add and Delete Group Entries”). - Grant all Example Corp. employees the right to add themselves to group entries under the
Social Committeebranch of the directory (Section 12.9.9, “Allowing Users to Add or Remove Themselves from a Group”). - Grant access to the directory administrator (role) of
HostedCompany1andHostedCompany2on their respective branches of the directory tree, with certain conditions such as SSL authentication, time and date restrictions, and specified location (Section 12.9.6, “Granting Conditional Access to a Group or Role”). - Deny individual subscribers access to the billing information in their own entries (Section 12.9.7, “Denying Access”).
- Grant anonymous access to the world to the individual subscribers subtree, except for subscribers who have specifically requested to be unlisted. (This part of the directory could be a consumer server outside of the firewall and be updated once a day.) See Section 12.9.1, “Granting Anonymous Access” and Section 12.9.8, “Setting a Target Using Filtering”.
aci: (targetattr !="userPassword")(version 3.0; acl "Anonymous
Example"; allow (read, search, compare) userdn= "ldap:///anyone"
and dns="*.example.com";)aci attribute is added to the dc=example,dc=com entry. The userPassword attribute is excluded from the scope of the ACI.
- In the Directory tab, right-click the
examplenode in the left navigation tree, and choose Set Access Permissions from the pop-up menu to display the Access Control Manager. - Click to display the Access Control Editor.
- In the Users/Groups tab in the ACI name field, type
Anonymous example.com. Check that All Users opens in the list of users granted access permission. - In the Rights tab, select the checkboxes for
read,compare, andsearchrights. Make sure the other checkboxes are clear.
- In the Targets tab, click to display the
dc=example,dc=comsuffix in the Target directory entry field. In the attribute table, locate theuserPasswordattribute, and clear the corresponding checkbox.
All other checkboxes should be selected. This task is easier if you click the Name header to organize the list of attributes alphabetically. - In the Hosts tab, click , and in the DNS host filter field, type
*.example.com. Click to dismiss the dialog box. - Click in the Access Control Editor window.
aci: (targetfilter= "(!(unlistedSubscriber=yes))")
(targetattr="homePostalAddress || homePhone || mail") (version
3.0; acl "Anonymous World"; allow (read, search) userdn="ldap:///anyone";)ou=subscribers,dc=example,dc=com entry. It also assumes that every subscriber entry has an unlistedSubscriber attribute which is set to yes or no. The target definition filters out the unlisted subscribers based on the value of this attribute. For details on the filter definition, see Section 12.9.8, “Setting a Target Using Filtering”.
- In the Directory tab, right-click the
Subscribersentry under theexamplenode in the left navigation tree, and choose Set Access Permissions from the pop-up menu to display the Access Control Manager. - Click to display the Access Control Editor.
- In the Users/Groups tab, in the ACI name field, type
Anonymous World. Check thatAll Usersopens in the list of users granted access permission. - In the Rights tab, select the checkboxes for
readandsearchrights. Make sure the other checkboxes are clear. - In the Targets tab, click to display the
ou=subscribers,dc=example,dc=comsuffix in the Target directory entry field. - In the Filter for subentries field, enter a filter which excludes unlisted subscribers (
(!(unlistedSubscriber=yes))).
- In the attribute table, select the checkboxes for the
homePhone,homePostalAddress, andmailattributes.All other checkboxes should be clear; if it is easier, click the button to clear the checkboxes for all attributes in the table, then click the Name header to organize them alphabetically, and select the appropriate ones. - Click .
example tree, provided that they establish an SSL connection to the directory. This is illustrated in Section 12.9.2.2, “ACI "Write Subscribers"”.
NOTE
aci: (targetattr="userPassword || homePhone ||
homePostalAddress") (version 3.0; acl "Write example.com"; allow
(write) userdn= "ldap:///self" and dns="*.example.com";)ou=people,dc=example,dc=com entry.
- In the Directory tab, right-click the
peopleentry under theexamplenode in the left navigation tree, and choose Set Access Permissions from the pop-up menu to display the Access Control Manager. - Click to display the Access Control Editor.
- In the Users/Groups tab, in the ACI name field, type
Write example.com. In the list of users granted access permission:- Remove
All Usersfrom the targeted user list. - Click .
- Set the Search area to
Special Rights, and selectSelffrom the search results list. - Click the button to list
Selfin the list of users who are granted access permission.
- Click to dismiss the Add Users and Groups dialog box.
- In the Rights tab, select the checkbox for
writeright. Make sure the other checkboxes are clear.
- In the Targets tab, click to display the
ou=people,dc=example,dc=comsuffix in the Target directory entry field. In the attribute table, select the checkboxes for thehomePhone,homePostalAddress, anduserPasswordattributes.
All other checkboxes should be clear; if it is easier, click the button to clear the checkboxes for all attributes in the table, then click the Name header to organize them alphabetically, and select the appropriate ones. - In the Hosts tab, click to display the Add Host Filter dialog box. In the DNS host filter field, type
*.example.com. Click to dismiss the dialog box.
- Click in the Access Control Editor window.
NOTE
aci: (targetattr = "homePhone || homePostalAddress || mail") (target = "ldap:///ou=Subscribers,dc=example,dc=com") (targetfilter = (!(unlistedSubscriber=yes)) ) (version 3.0; acl "Write Subscribers"; allow (write) (userdn = "ldap:///self") and authmethod="ssl"; ;)
aci is added to the ou=subscribers,dc=example,dc=com entry.
- In the Directory tab, right-click the
subscribersentry under theexamplenode in the left navigation tree, and choose Set Access Permissions from the pop-up menu to display the Access Control Manager. - Click to display the Access Control Editor.
- In the Users/Groups tab, in the ACI name field, type
Write Subscribers. In the list of users granted access permission:- Remove
All Usersfrom the targeted user list. - Click .
- Set the Search area to
Special Rights, and selectSelffrom the search results list. - Click the button to list
Selfin the list of users who are granted access permission. - Click to dismiss the Add Users and Groups dialog box.
- In the Rights tab, select the checkbox for
write. Make sure the other checkboxes are clear. - In the Targets tab, click to display the
ou=subscribers,dc=example,dc=comsuffix in the Target directory entry field.- In the Filter for subentries field, type a filter so that only listed subscribers are included:
(!(unlistedSubscriber=yes))
- In the attribute table, select the checkboxes for the
homePhone,homePostalAddress, andmailattributes.
All other checkboxes should be clear; if necessary, click the button to clear the checkboxes for all attributes in the table, then click the Name header to organize them alphabetically, and select the appropriate ones. - Optionally, to require users to authenticate using SSL, switch to manual editing by clicking the button, and add
authmethod=sslto the LDIF statement:(targetattr = "homePhone || homePostalAddress || mail") (target = "ldap:///ou=Subscribers,dc=example,dc=com") (targetfilter = (!(unlistedSubscriber=yes)) ) (version 3.0; acl "Write Subscribers"; allow (write) (userdn = "ldap:///self") and
authmethod="ssl"; ;)
- Click .
superAdmin role by identifying a subset of your system administrators that are available at a particular time of day and day of the week at corporate sites worldwide, or you might want to create a First Aid role that includes all members of staff on a particular site that have done first aid training. For information on creating role definitions, see Section 11.2, “Using Roles”.
superAdmin role. This is illustrated in Section 12.9.3.1, “ACI "Roles"”.
superAdmin role, write the following statement:
aci: (targetattr = "nsroledn")
(targattrfilters="add=nsroledn:(nsroledn !=
"cn=superAdmin,dc=example,dc=com")") (version 3.0; acl "Roles";
allow (write) userdn= "ldap:///self" and dns="*.example.com";)ou=people,dc=example,dc=com entry.
- In the Directory tab, right-click the
peopleentry under theexamplenode in the left navigation tree, and choose Set Access Permissions from the pop-up menu to display the Access Control Manager. - Click to display the Access Control Editor.
- In the Users/Groups tab, in the ACI name field, type
Roles. In the list of users granted access permission:- Remove
All Usersfrom the targeted user list. - Click .
- Set the Search area in the Add Users and Groups dialog box to
Special Rights, and selectSelffrom the search results list. - Click the button to list
Selfin the list of users who are granted access permission. - Click to dismiss the Add Users and Groups dialog box.
- In the Rights tab, select the checkbox for
write. Make sure the other checkboxes are clear. - In the Targets tab, click to use the
ou=people,dc=example,dc=comsuffix in the Target directory entry field. - In the Hosts tab, click to display the Add Host Filter dialog box. In the DNS host filter field, type
*.example.com. Click to dismiss the dialog box. - To create the value-based filter for roles, switch to manual editing by clicking the button. Add the following to the beginning of the LDIF statement:
(targattrfilters="add=nsroledn:(nsroledn != "cn=superAdmin,dc=example,dc=com")")
The LDIF statement should read as follows:(targattrfilters="add=nsroledn:(nsroledn != "cn=superAdmin, dc=example,dc=com")") (targetattr = "*") (target = "ldap:/// ou=people,dc=example,dc=com") (version 3.0; acl "Roles"; allow (write) (userdn = "ldap:///self") and (dns="*.example.com");) - Click .
Human Resources group is allowed full access to the ou=people branch of the directory so that they can update the employee database. This is illustrated in Section 12.9.4.1, “ACI "HR"”.
aci: (version 3.0; acl "HR"; allow (all) userdn=
"ldap:///cn=HRgroup,ou=people,dc=example,dc=com";)ou=people,dc=example,dc=com entry.
- In the Directory tab, right-click the
peopleentry under theexamplenode in the left navigation tree, and choose Set Access Permissions from the pop-up menu to display the Access Control Manager. - Click to display the Access Control Editor.
- In the Users/Groups tab, in the ACI name field, type
HR. In the list of users granted access permission:- Remove
All Usersfrom the targeted user list. - Click .
- Set the Search area to
Users and Groups, and typeHRgroupin the Search for field.
This example assumes that you have created an HR group or role. For more information on groups and roles, see Chapter 11, Organizing Entries with Groups, Roles, and Views. - Click the button to list the HR group in the list of users who are granted access permission.
- Click to dismiss the Add Users and Groups dialog box.
- In the Rights tab, click the button.All checkboxes are selected, except for proxy rights.

- Click .
ou=Social Committee branch, write the following statement:
aci: (target="ldap:///ou=social committee,dc=example,dc=com)
(targattrfilters="add=objectClass:(objectClass=groupOfNames)")
(version 3.0; acl "Create Group"; allow (add)
(userdn= "ldap:///uid=*,ou=people,dc=example,dc=com")
and dns="*.example.com";)NOTE
ou=social committee,dc=example,dc=com entry.
- In the Directory tab, right-click the
Social Committeeentry under theexamplenode in the left navigation tree, and choose Set Access Permissions from the pop-up menu to display the Access Control Manager. - Click to display the Access Control Editor.
- In the Users/Groups tab, in the ACI name field, type
Create Group. In the list of users granted access permission:- Remove
All Usersfrom the targeted user list. - Click .
- Set the Search area to
Special Rights, and select All Authenticated Users from the search results list. - Click the button to list All Authenticated Users in the list of users who are granted access permission.

- Click to dismiss the Add Users and Groups dialog box.
- In the Rights tab, select the checkboxes for add, search, and read. Make sure the other checkboxes are clear.

- In the Targets tab, click to display the
ou=social committee,dc=example,dc=comsuffix in the Target directory entry field. - In the Hosts tab, click to display the Add Host Filter dialog box. In the DNS host filter field, type
*.example.com. Click to dismiss the dialog box. - To create the value-based filter that allows employees to add only group entries to this subtree, click the button. Add the following to the beginning of the LDIF statement:
(targattrfilters="add=objectClass:(objectClass=groupOfNames)")
The LDIF statement should read as follows:(targattrfilters="add=objectClass:(objectClass=groupOfNames)") (targetattr = "*") (target="ldap:///ou=social committee,dc=example,dc=com) (version 3.0; acl "Create Group"; allow (read,search,add) (userdn= "ldap:///all") and (dns="*.example.com"); ) - Click .
ou=Social Committee branch, write the following statement:
aci: (target="ou=social committee,dc=example,dc=com)
(targattrfilters="del=objectClass:(objectClass=groupOfNames)")
(version 3.0; acl "Delete Group"; allow (delete) userattr=
"owner#GROUPDN";)aci is added to the ou=social committee,dc=example,dc=com entry.
NOTE
HostedCompany1 and HostedCompany2. It wants these companies to be able to manage their own data and implement their own access control rules while securing it against intruders. For this reason, HostedCompany1 and HostedCompany2 have full rights on their respective branches of the directory tree, provided the following conditions are fulfilled:
- Connection authenticated using SSL
- Access requested between 8 a.m. and 6 p.m., Monday through Thursday
- Access requested from a specified IP address for each company
HostedCompany1 and HostedCompany2. Because the content of these ACIs is the same, the examples below illustrate the HostedCompany1 ACI only.
HostedCompany1 full access to their own branch of the directory under the requisite conditions, write the following statement:
aci:(target="ou=HostedCompany1,ou=corporate-clients,dc=example,dc=com")
(targetattr= "*") (version 3.0; acl "HostedCompany1";allow (all)
(roledn="ldap:///cn=DirectoryAdmin,ou=HostedCompany1,
ou=corporate-clients,dc=example,dc=com") and
(authmethod="ssl") and (dayofweek="Mon,Tues,Wed,Thu") and (timeofday >= "0800" and
timeofday <= "1800") and (ip="255.255.123.234"); )ou=HostedCompany1,ou=corporate-clients,dc=example,dc=com entry.
- In the Directory tab, right-click the
HostedCompany1entry under theexamplenode in the left navigation tree, and choose Set Access Permissions from the pop-up menu to display the Access Control Manager. - Click to display the Access Control Editor.
- In the Users/Groups tab, type
HostedCompany1in the ACI name field. In the list of users granted access permission:- Remove
All Usersfrom the targeted user list. - Click .
- Set the Search area to
Users and Groups, and typeDirectoryAdminin the Search For field.(This assumes that there is an administrator's role with acnofDirectoryAdmin.) - Click the button to list the administrator's role in the list of users who are granted access permission.
- Click to dismiss the Add Users and Groups dialog box.
- In the Rights tab, click the button.
- In the Targets tab, click to display the
ou=HostedCompany1,ou=corporate-clients,dc=example,dc=comsuffix in the Target directory entry field. - In the Hosts tab, click to display the Add Host Filter dialog box. In the IP address host filter field, type
255.255.123.234. Click .
The IP address must be a valid IP address for the host machine that theHostedCompany1administrators use to connect to theexampledirectory. - In the Times tab, select the block time corresponding to Monday through Thursday and 8 a.m. to 6 p.m.
A message appears below the table that specifies the selected time block. - To enforce SSL authentication from
HostedCompany1administrators, switch to manual editing by clicking the button. Add the following to the end of the LDIF statement:and (authmethod="ssl")
The LDIF statement should be similar to the following:(targetattr = "*") (target="ou=HostedCompany1,ou=corporate-clients,dc=example,dc=com") (version 3.0; acl "HostedCompany1"; allow (all) (roledn= "ldap:///cn=DirectoryAdmin,ou=HostedCompany1,ou=corporate-clients,dc=example,dc=com") and (dayofweek="Mon,Tues,Wed,Thu") and (timeofday >= "0800" and timeofday <= "1800") and (ip="255.255.123.234") and (authmethod="ssl"); ) - Click .
aci: (targetattr="connectionTime || accountBalance") (version
3.0; acl "Billing Info Read"; allow (search,read) userdn=
"ldap:///self";)ou=subscribers,dc=example,dc=com entry.
- In the Directory tab, right-click the
Subscribersentry under theexamplenode in the left navigation tree, and choose Set Access Permissions from the pop-up menu to display the Access Control Manager. - Click to display the Access Control Editor.
- In the Users/Groups tab, in the ACI name field, type
Billing Info Read. In the list of users granted access permission:- Remove
All Usersfrom the targeted user list. - Click .
- Set the Search area in the Add Users and Groups dialog box to
Special Rights, and selectSelffrom the search results list. - Click the button to list
Selfin the list of users who are granted access permission. - Click to dismiss the Add Users and Groups dialog box.
- In the Rights tab, select the checkboxes for
searchandreadrights. Make sure the other checkboxes are clear.
- In the Targets tab, click to display the
ou=subscribers,dc=example,dc=comsuffix in the Target directory entry field. In the attribute table, select the checkboxes for theconnectionTimeandaccountBalanceattributes. (These are custom schema that Example Corp. uses for ISP account management.)
All other checkboxes should be clear; if it is easier, click the button to clear the checkboxes for all attributes in the table, then click the Name header to organize them alphabetically, and select the appropriate ones.This example assumes that you have added theconnectionTimeandaccountBalanceattributes to the schema. - Click .
aci: (targetattr="connectionTime || accountBalance") (version
3.0; acl "Billing Info Deny"; deny (write) userdn="ldap:///self";)ou=subscribers,dc=example,dc=com entry.
- In the Directory tab, right-click the
Subscribersentry under theexamplenode in the left navigation tree, and choose Set Access Permissions from the pop-up menu to display the Access Control Manager. - Click to display the Access Control Editor.
- In the Users/Groups tab, in the ACI name field, type
Billing Info Deny. In the list of users granted access permission:- Remove
All Usersfrom the targeted user list. - Click .
- Set the Search area in the Add Users and Groups dialog box to
Special Rights, and selectSelffrom the search results list. - Click the button to list
Selfin the list of users who are granted access permission. - Click to dismiss the Add Users and Groups dialog box.
- In the Rights tab, select the checkbox for
write. Make sure the other checkboxes are clear. - Click the button, and, in the LDIF statement that opens, change the word
allowtodeny.
- In the Targets tab, click to display the
ou=subscribers,dc=example,dc=comsuffix in the Target directory entry field. In the attribute table, select the checkboxes for theconnectionTimeandaccountBalanceattributes.All other checkboxes should be clear; if it is easier, click the button to clear the checkboxes for all attributes in the table, then click the Name header to organize them alphabetically, and select the appropriate ones.This example assumes that theconnectionTimeandaccountBalanceattributes were added to the schema. - Click .
NOTE
bjensen write access to the department number, home phone number, home postal address, and manager attributes for all members of the accounting organization.
aci: (targetattr="departmentNumber || homePhone || homePostalAddress || manager") (targetfilter="(uid=bjensen)") (version 3.0; acl "Filtered ACL"; allow (write) userdn ="ldap:///cn=*,ou=accounting,dc=example,dc=com";)
ou=accounting,dc=example,dc=com). You can create organizational unit branch points in the Directory tab on the Directory Server Console.
ou=social committee subtree. This is illustrated in Section 12.9.9.1, “ACI "Group Members"”.
aci: (targettattr="member")(version 3.0; acl "Group Members"; allow (selfwrite)
(userdn= "ldap:///uid=*,ou=people,dc=example,dc=com") ;)ou=social committee,dc=example,dc=com entry.
- In the Directory tab, right-click the
peopleentry under theexamplenode in the left navigation tree, and choose Set Access Permissions from the pop-up menu to display the Access Control Manager. - Click to display the Access Control Editor.
- In the Users/Groups tab, in the ACI name field, type
Group Members. In the list of users granted access permission:- Remove
All Usersfrom the targeted user list. - Click .
- Set the Search area in the Add Users and Groups dialog box to
Special Rights, and select All Authenticated Users from the search results list. - Click the button to list All Authenticated Users in the list of users who are granted access permission.
- Click to dismiss the Add Users and Groups dialog box.
- In the Rights tab, select the checkbox for
selfwrite. Make sure the other checkboxes are clear. - In the Targets tab, type
dc=example,dc=comsuffix in the Target directory entry field. In the attribute table, select the checkbox for thememberattribute.
All other checkboxes should be clear; if it is easier, click the button to clear the checkboxes for all attributes in the table, then click the Name header to organize them alphabetically, and select the appropriate ones. - Click .
ssf keyword is used to require a secure connection and at a specific level of security. This can be a way to make changes to sensitive information only over a secure connection, like requiring that password changes be made over TLS or SASL:
aci: (targetattr="userPassword")(version 3.0; acl "Require secure password changes"; allow (write) userdn="ldap:///self" and ssf>="56";)
\). For example:
dn: dc=example.com Bolivia\, S.A.,dc=com
objectClass: top
objectClass: organization
aci: (target="ldap:///dc=example.com Bolivia\,S.A.,dc=com")(targetattr=*)
(version 3.0; acl "aci 2"; allow (all)
groupdn = "ldap:///cn=Directory Administrators,dc=example.com Bolivia\, S.A.,dc=com";)- The client application's bind DN is
"uid=MoneyWizAcctSoftware,ou=Applications,dc=example,dc=com". - The targeted subtree to which the client application is requesting access is
ou=Accounting,dc=example,dc=com. - An accounting administrator with access permissions to the
ou=Accounting,dc=example,dc=comsubtree exists in the directory.
- The accounting administrator must have access permissions to the
ou=Accounting,dc=example,dc=comsubtree, so the following ACI grants all rights to the accounting administrator entry:aci: (target="ldap:///ou=Accounting,dc=example,dc=com") (targetattr="*") (version 3.0; acl "allowAll-AcctAdmin"; allow (all) userdn="ldap://uid=AcctAdministrator,ou=Administrators,dc=example,dc=com") - There must be an ACI granting proxy rights to the client application in the directory:
aci: (target="ldap:///ou=Accounting,dc=example,dc=com") (targetattr="*") (version 3.0; acl "allow proxy-accounting software"; allow (proxy) userdn="ldap://uid=MoneyWizAcctSoftware,ou=Applications,dc=example,dc=com")
ldapsearch or ldapmodify that requires the access rights of the proxy DN.
ldapsearch command, the command must include the -Y option for the proxy account:
/usr/lib64/mozldap/ldapsearch -D "uid=MoneyWizAcctSoftware,ou=Applications,dc=example,dc=com" -w secret -Y "dn:uid=AcctAdministrator,ou=Administrators,dc=example,dc=com" ...AcctAdministrator). The client does not need the password of the proxy entry.
NOTE
ou=groups, ou=people). This pattern is also repeated across the tree because the Example Corp. directory tree stores the suffixes dc=hostedCompany2,dc=example,dc=com and dc=hostedCompany3,dc=example,dc=com.
dc=hostedCompany1,dc=example,dc=com node:
aci: (targetattr="*")(targetfilter=(objectClass=nsManagedDomain))
(version 3.0; acl "Domain access"; allow (read,search)
groupdn="ldap:///cn=DomainAdmins,ou=Groups,dc=hostedCompany1,dc=example,dc=com";)DomainAdmins group to any entry in the dc=hostedCompany1,dc=example,dc=com tree.
dc=hostedCompany1,dc=example,dc=com node:
aci: (targetattr="*")(targetfilter=(objectClass=nsManagedDomain))
(version 3.0; acl "Domain access"; allow (read,search)
groupdn="ldap:///cn=DomainAdmins,ou=Groups,dc=hostedCompany1,dc=example,dc=com";)dc=subdomain1,dc=hostedCompany1,dc=example,dc=com node:
aci: (targetattr="*")(targetfilter=(objectClass=nsManagedDomain))
(version 3.0; acl "Domain access"; allow (read,search)
groupdn="ldap:///cn=DomainAdmins,ou=Groups,dc=subdomain1,dc=hostedCompany1,dc=example,dc=com";)dc=hostedCompany2,dc=example,dc=com node:
aci: (targetattr="*")(targetfilter=(objectClass=nsManagedDomain))
(version 3.0; acl "Domain access"; allow (read,search)
groupdn="ldap:///cn=DomainAdmins,ou=Groups,dc=hostedCompany2,dc=example,dc=com";)dc=subdomain1,dc=hostedCompany2,dc=example,dc=com node:
aci: (targetattr="*")(targetfilter=(objectClass=nsManagedDomain))
(version 3.0; acl "Domain access"; allow (read,search)
groupdn="ldap:///cn=DomainAdmins,ou=Groups,dc=subdomain1,dc=hostedCompany2,dc=example,dc=com";)groupdn keyword. By using a macro for the DN, it is possible to replace these ACIs by a single ACI at the root of the tree, on the dc=example,dc=com node. This ACI reads as follows:
aci: (target="ldap:///ou=Groups,($dn),dc=example,dc=com")
(targetattr="*")(targetfilter=(objectClass=nsManagedDomain))
(version 3.0; acl "Domain access"; allow (read,search)
groupdn="ldap:///cn=DomainAdmins,ou=Groups,[$dn],dc=example,dc=com";)target keyword, which was not previously used, is utilized in the new ACI.
- ($dn)
- [$dn]
- ($attr.attrName), where attrName represents an attribute contained in the target entry
userdn, roledn, groupdn, and userattr, are collectively called the subject, as opposed to the target, of the ACI. Macro ACIs can be used in the target part or the subject part of an ACI.
Table 12.9. Macros in ACI Keywords
| Macro | ACI Keyword |
|---|---|
| ($dn) | target, targetfilter, userdn, roledn, groupdn, userattr |
| [$dn] | targetfilter, userdn, roledn, groupdn, userattr |
| ($attr.attrName) | userdn, roledn, groupdn, userattr |
- If you use
($dn)intargetfilter,userdn,roledn,groupdn,userattr, you must define a target that contains($dn). - If you use
[$dn]intargetfilter,userdn,roledn,groupdn,userattr, you must define a target that contains($dn).
NOTE
($dn) macro.
($dn) macro and the ($attr.attrName) macro.
($dn) macro is replaced by the matching part of the resource targeted in an LDAP request. For example, you have an LDAP request targeted at the cn=all,ou=groups,dc=subdomain1,dc=hostedCompany1,dc=example,dc=com entry and an ACI that defines the target as follows:
(target="ldap:///ou=Groups,($dn),dc=example,dc=com")
($dn) macro matches with dc=subdomain1,dc=hostedCompany1.
($dn), the substring that matches the target is used to expand the subject. For example:
aci: (target="ldap:///ou=*,($dn),dc=example,dc=com")
(targetattr = "*") (version 3.0; acl "Domain access"; allow (read,search)
groupdn="ldap:///cn=DomainAdmins,ou=Groups,($dn),dc=example,dc=com";)($dn) in the target is dc=subdomain1,dc=hostedCompany1, then the same string is used in the subject. The ACI is then expanded as follows:
aci: (target="ldap:///ou=Groups,dc=subdomain1,dc=hostedCompany1,
dc=example,dc=com") (targetattr = "*") (version 3.0; acl "Domain
access"; allow (read,search) groupdn="ldap:///cn=DomainAdmins,ou=Groups,
dc=subdomain1,dc=hostedCompany1,dc=example,dc=com";)[$dn] is slightly different than for ($dn). The DN of the targeted resource is examined several times, each time dropping the left-most RDN component, until a match is found.
cn=all,ou=groups,dc=subdomain1,dc=hostedCompany1,dc=example,dc=com subtree and the following ACI:
aci: (target="ldap:///ou=Groups,($dn),dc=example,dc=com")
(targetattr = "*") (version 3.0; acl "Domain access"; allow (read,search)
groupdn="ldap:///cn=DomainAdmins,ou=Groups,[$dn],dc=example,dc=com";)($dn)in the target matchesdc=subdomain1,dc=hostedCompany1.[$dn]in the subject is replaces withdc=subdomain1,dc=hostedCompany1.The result isgroupdn="ldap:///cn=DomainAdmins,ou=Groups,dc=subdomain1,dc=hostedCompany1,dc=example,dc=com". If the bind DN is a member of that group, the matching process stops, and the ACI is evaluated. If it does not match, the process continues.[$dn]in the subject is replaced withdc=hostedCompany1.The result isgroupdn="ldap:///cn=DomainAdmins,ou=Groups,dc=hostedCompany1,dc=example,dc=com". In this case, if the bind DN is not a member of that group, the ACI is not evaluated. If it is a member, the ACI is evaluated.
[$dn] macro is that it provides a flexible way of granting access to domain-level administrators to all the subdomains in the directory tree. Therefore, it is useful for expressing a hierarchical relationship between domains.
aci: (target="ldap:///ou=*, ($dn),dc=example,dc=com")
(targetattr="*")(targetfilter=(objectClass=nsManagedDomain))
(version 3.0; acl "Domain access"; allow (read,search)
groupdn="ldap:///cn=DomainAdmins,ou=Groups,[$dn],dc=example,dc=com";)cn=DomainAdmins,ou=Groups,dc=hostedCompany1,dc=example,dc=com to all of the subdomains under dc=hostedCompany1, so an administrator belonging to that group could access a subtree like ou=people,dc=subdomain1.1,dc=subdomain1.
cn=DomainAdmins,ou=Groups,dc=subdomain1.1 would be denied access to the ou=people,dc=hostedCompany1 and ou=people,dc=hostedCompany1 nodes.
($attr.attrName) macro is always used in the subject part of a DN. For example, define the following roledn:
roledn = "ldap:///cn=DomainAdmins,($attr.ou)"
dn: cn=Jane Doe,ou=People,dc=HostedCompany1,dc=example,dc=com cn: Jane Doe sn: Doe ou: Engineering,dc=HostedCompany1,dc=example,dc=com ...
roledn part of the ACI, the server looks at the ou attribute stored in the targeted entry and uses the value of this attribute to expand the macro. Therefore, in the example, the roledn is expanded as follows:
roledn = "ldap:///cn=DomainAdmins,ou=Engineering,dc=HostedCompany1,dc=example,dc=com"
dn: cn=Jane Doe,ou=People,dc=HostedCompany1,dc=example,dc=com cn: Jane Doe sn: Doe ou: Engineering,dc=HostedCompany1,dc=example,dc=com ou: People,dc=HostedCompany1,dc=example,dc=com...
roledn = "ldap:///cn=DomainAdmins,ou=Engineering,dc=HostedCompany1,dc=example,dc=com" roledn = "ldap:///cn=DomainAdmins,ou=People,dc=HostedCompany1,dc=example,dc=com"
- userdnattr
- groupdnattr
/usr/lib64/mozldap directory on Red Hat Enterprise Linux 5 (64-bit); directories for other platforms are listed in Section 1.3, “LDAP Tool Locations”. However, Red Hat Enterprise Linux systems also include LDAP tools from OpenLDAP. It is possible to use the OpenLDAP commands as shown in the examples, but you must use the -x argument to disable SASL and allow simple authentication.
- 13.1. Managing the Password Policy
- 13.2. Configuring the Account Lockout Policy
- 13.3. Synchronizing Passwords
- 13.4. Setting Resource Limits Based on the Bind DN
- 13.5. Enabling Different Types of Binds
- 13.6. Using Pass-through Authentication
- 13.7. Using PAM for Pass-through Authentication
- 13.8. Inactivating Users and Roles
- Users must change their passwords according to a schedule.
- Users must provide non-trivial passwords.
- The password syntax must meet certain complexity requirements.
- The type or level of password policy checks. This information indicates whether the server should check for and enforce a global password policy or local (subtree/user level) password policies.
- Password add and modify information. The password information includes password syntax and password history details.
- Bind information. The bind information includes the number of grace logins permitted, password aging attributes, and tracking bind failures.
TIP
- Select the Configuration tab and then the Data node.
- In the right pane, select the Passwords tab.
This tab contains the password policy for the entire Directory Server. - Set the password policies for how users can change their own passwords.

- To require users to change their password the first time they log on, select the User must change password after reset checkbox.
NOTE
If users are required to reset their password, only the Directory Manager is authorized to reset the user's password. A regular administrative user cannot force the users to update their password. - To allow users to change their own passwords, select the User may change password checkbox.
- To prevent users from changing their password for a specific duration, enter the number of days in the Allow changes in X day(s) text box. This keeps users from quickly cycling through passwords to reuse a password in their password history.
- For the server to maintain a history list of passwords used by each user, select the Keep password history checkbox. Enter the number of passwords for the server to keep for each user in the Remember X passwords text box.
- Set the policies for when passwords expire.

- If user passwords should not expire, select the Password never expires radio button.
- To require users to change their passwords periodically, select the Password expires after X days radio button, and then enter the number of days that a user password is valid.The maximum value for the password age is derived by subtracting January 18, 2038, from today's date. The entered value must not be set to the maximum value or too close to the maximum value. Setting the value to the maximum value can cause the Directory Server to fail to start because the number of seconds will go past the epoch date. In such an event, the error log will indicate that the password maximum age is invalid. To resolve this problem, correct the
passwordMaxAgeattribute value in thedse.ldiffile.A common policy is to have passwords expire every 30 to 90 days. By default, the password maximum age is set to8640000seconds (100 days). - If the Password expire after X days radio button is selected, specify how long before the password expires to send a warning to the user. In the Send Warning X Days Before Password Expires text enter the number of days before password expiration to send a warning.
NOTE
It is not necessary to configure the Directory Server to send a warning to users. The Directory Server automatically issues a warning the next time the user attempts to log into the Directory Server Console that the password will soon expire or has expired. This is analogous to an operating system warning that reads"Warning: password will expire in 7 days"when a user logs in.
- For the server to check the syntax of a user password to make sure it meets the minimum requirements set by the password policy, select the Check Password Syntax checkbox. Then, specify required password complexity, such as the minimum length and required number of numeric and special characters. The password syntax requirements are described more in Table 13.1, “Password Policy Attributes”.

- From the Password Encryption pull-down menu, select the encryption method for the server to use when storing passwords.
For detailed information about the encryption methods, refer to thepasswordStorageSchemeattribute in Table 13.1, “Password Policy Attributes”.The Password Encryption menu might contain other encryption methods, as the directory dynamically creates the menu depending upon the existing encryption methods it finds in the directory. - Click Save.
- Enable a fine-grained password policy globally, as described in Section 13.1.1.1, “Configuring a Global Password Policy Using the Console”. Be sure to check the Enable fine-grained password policy checkbox to allow user-level password policies.

NOTE
The password policy must be enabled globally before it will be applied locally. No other global password policy features must be set, and the global password policy will not override the local policy if they differ. - Create the local password policy for the subtree or user.
- Select the Directory tab.
- In the navigation pane, select the subtree or user entry for which to set up the password policy.
- From the Object menu, select the Manage Password Policy option, and then select the For user or For subtree.

- In the Passwords tab, select the Create subtree/user level password policy checkbox to add the required attributes. The password policy settings — resetting, expiration, syntax, and encryption — are the same as for the global policy in Section 13.1.1.1, “Configuring a Global Password Policy Using the Console”.

- In the Account Lockout tab, specify the appropriate information, and click Save.

cn=config entry to create a global policy. These can be passed all together by passing an LDIF file with ldapmodify.
- Create the LDIF file. Each statement is the same as inputting the changes through stdin, with separate update statements separated by a dash (
-).dn: cn=config changetype: modify add: passwordChange passwordChange: on - add: passwordExp passwordExp: on - add: passwordMaxAge passwordMaxAge: 8640000 - add: passwordCheckSyntax passwordCheckSyntax: on - add: passwordMinCategories passwordMinCategories: 3 - add: passwordStorageScheme passwordStorageScheme: SHA-512 ^D
- Pass the LDIF file to the server using the
-foption with theldapmodifycommand./usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389
-f user-pwdpolicy.ldif
Table 13.1. Password Policy Attributes
| Attribute Name | Definition | |||||||
|---|---|---|---|---|---|---|---|---|
| passwordGraceLimit |
This attribute indicates the number of grace logins permitted when a user's password is expired. When set to a positive number, the user will be allowed to bind with the expired password for that many times. For the global password policy, the attribute is defined under cn=config. By default, this attribute is set to 0, which means grace logins are not permitted.
| |||||||
| passwordMustChange |
When on, this attribute requires users to change their passwords when they first login to the directory or after the password is reset by the Directory Manager. The user is required to change their password even if user-defined passwords are disabled. If this attribute is set to off, passwords assigned by the Directory Manager should not follow any obvious convention and should be difficult to discover. This attribute is off by default.
| |||||||
| passwordChange |
When on, this attribute indicates that users may change their own password. Allowing users to set their own passwords runs the risk of users choosing passwords that are easy to remember. However, setting good passwords for the user requires a significant administrative effort. In addition, providing passwords to users that are not meaningful to them runs the risk that users will write the password down somewhere that can be discovered. This attribute is on by default.
| |||||||
| passwordExp |
When on, this attribute indicates that the user's password will expire after an interval given by the passwordMaxAge attribute. Making passwords expire helps protect the directory data because the longer a password is in use, the more likely it is to be discovered. This attribute is off by default.
| |||||||
| passwordMaxAge |
This attribute indicates the number of seconds after which user passwords expire. To use this attribute, enable password expiration using the passwordExp attribute. This attribute is a dynamic parameter in that its maximum value is derived by subtracting January 18, 2038, from today's date. The attribute value must not be set to the maximum value or too close to the maximum value. If the value is set to the maximum value, Directory Server may fail to start because the number of seconds will go past the epoch date. In such an event, the error log will indicate that the password maximum age is invalid. To resolve this problem, correct the passwordMaxAge attribute value in the dse.ldif file. A common policy is to have passwords expire every 30 to 90 days. By default, the password maximum age is set to 8640000 seconds (100 days).
| |||||||
| passwordWarning |
This attribute indicates the number of seconds before a warning message is sent to users whose password is about to expire. Depending on the LDAP client application, users may be prompted to change their password when the warning is sent. By default, the directory sends the warning 86400 seconds (1 day) before the password is about to expire. However, a password never expires until the warning message has been sent. Therefore, if users don't bind to the Directory Server for longer than the passwordMaxAge, they will still get the warning message in time to change their password.
| |||||||
| passwordMinAge |
This attribute indicates the number of seconds that must pass before a user can change their password. Use this attribute in conjunction with the passwordInHistory attribute to discourage users from reusing old passwords. For example, setting the minimum password age to 2 days prevents users from repeatedly changing their passwords during a single session to cycle through the password history and reuse an old password once it has been removed from the history list. The minimum age can be from 0 to 2147472000 seconds (24,855 days). A value of zero indicates that the user can change the password immediately. The default value of this attribute is 0.
| |||||||
| passwordHistory |
This attribute indicates whether the directory stores a password history. When set to on, the directory stores the number of passwords specified in the passwordInHistory attribute in a history. If a user attempts to reuse one of the passwords, the password will be rejected. When this attribute is set to off, any passwords stored in the history remain there. When this attribute is set back to on, users will not be able to reuse the passwords recorded in the history before the attribute was disabled. This attribute is off by default, meaning users can reuse old passwords.
| |||||||
| passwordInHistory |
This attribute indicates the number of passwords the directory stores in the history. There can be 2 to 24 passwords stored in the history. This feature is not enabled unless the passwordHistory attribute is set to on. This attribute is set to 6 by default.
| |||||||
| passwordCheckSyntax |
When on, this attribute indicates that the password syntax is checked by the server before the password is saved. Password syntax checking ensures that the password string meets or exceeds the length and complexity requirements and that the string does not contain any trivial words. A trivial word is any value stored in the uid, cn, sn, givenname, ou, or mail attributes of the user's entry. This attribute is off by default.
| |||||||
| passwordMinLength |
This attribute specifies the minimum number of characters that must be used in passwords. Shorter passwords are easier to crack. Passwords can be two (2) to 512 characters long. Generally, a length of eight characters is long enough to be difficult to crack but short enough for users to remember without writing it down. This attribute is set to 8 by default.
| |||||||
| passwordMaxRepeats |
This attribute set the maximum number of times that the same character can be used in row, such as aaaaa. Setting the attribute to 0 means that there is no limit on how many time a character can be repeated. This attribute is set to 0 by default.
| |||||||
| passwordMinAlphas |
This attribute sets the minimum number of alphabetic characters that must be used in the password. This setting does not set any requirements for the letter case; requirements for the minimum number of lowercase and uppercase letters are set in the passwordMinLower and passwordMinUpper attributes, respectively. By default, this attribute is set to 0, meaning there is no required minimum.
| |||||||
| passwordMinDigits |
This attribute sets the minimum number of numeric characters (0 through 9) which must be used in the password. By default, this attribute is set to 0, meaning there is no required minimum.
| |||||||
| passwordMinSpecials |
This attribute sets the minimum number of special ASCII characters, such as !@#$., which must be used in the password. By default, this attribute is set to 0, meaning there is no required minimum.
| |||||||
| passwordMinLowers |
This attribute sets the minimum number of lower case alphabetic characters, a to z, which must be used in the password. By default, this attribute is set to 0, meaning there is no required minimum.
| |||||||
| passwordMinCategories |
This attribute sets the minimum number of categories which must be used in the password. There are eight categories available:
3 by default.
| |||||||
| passwordMinUppers |
This attribute sets the minimum number of upper case alphabetic characters, A to Z, which must be used in the password. By default, this attribute is set to 0, meaning there is no required minimum.
| |||||||
| passwordTokenLength |
This attribute sets the minimum length for any tokens used with Directory Server. The token length can be from 1 to 64 characters. This attribute is set to 3 by default.
| |||||||
| passwordMin8bit |
This attribute sets the minimum number of 8-bit characters used in the password. The default number is 0, meaning none are required.
| |||||||
| passwordStorageScheme |
This attribute specifies the type of encryption used to store Directory Server passwords. The following encryption types are supported by Directory Server:
CLEAR. Passwords stored using crypt, SHA, or SSHA formats cannot be used for secure login through SASL DIGEST-MD5. To provide a customized storage scheme, consult Red Hat professional services.
|
- Add the required attributes to the subtree or user entries by running the
ns-newpwpolicy.plscript.The command syntax for the script is as follows:ns-newpwpolicy.pl [-D rootDN] -w password | -w - | -j filename [-p port] [-h host] -U userDN -S suffixDN
For updating a subtree entry, use the-Soption. For updating a user entry, use the-Uoption. Thens-newpwpolicy.plscript accepts only one user or subtree entry at a time. It can, however, accept both user and suffix entries at the same time. For details about the script, see the Directory Server Configuration and Command-Line Tool Reference. - The script adds the required attributes depending on whether the target entry is a subtree or user entry.For a subtree (for example,
ou=people,dc=example,dc=com), the following entries are added:- A container entry (
nsPwPolicyContainer)at the subtree level for holding various password policy-related entries for the subtree and all its children. For example:dn: cn=nsPwPolicyContainer,ou=people,dc=example,dc=com objectClass: top objectClass: nsContainer cn: nsPwPolicyContainer
- The actual password policy specification entry (
nsPwPolicyEntry) for holding all the password policy attributes that are specific to the subtree. For example:dn: cn=cn=nsPwPolicyEntry\,ou=people\,dc=example\,dc=com, cn=nsPwPolicyContainer,ou=people,dc=example,dc=com objectclass: top objectclass: extensibleObject objectclass: ldapsubentry objectclass: passwordpolicy - The CoS template entry (
nsPwTemplateEntry) that has thepwdpolicysubentryvalue pointing to the above (nsPwPolicyEntry) entry. For example:dn: cn=cn=nsPwTemplateEntry\,ou=people\,dc=example\,dc=com, cn=nsPwPolicyContainer,ou=people,dc=example,dc=com objectclass: top objectclass: extensibleObject objectclass: costemplate objectclass: ldapsubentry cosPriority: 1 pwdpolicysubentry: cn=cn=nsPwPolicyEntry\,ou=people\,dc=example\,dc=com, cn=nsPwPolicyContainer,ou=people,dc=example,dc=com - The CoS specification entry at the subtree level. For example:
dn: cn=newpwdpolicy_cos,ou=people,dc=example,dc=com objectclass: top objectclass: LDAPsubentry objectclass: cosSuperDefinition objectclass: cosPointerDefinition cosTemplateDn: cn=cn=nsPwTemplateEntry\,ou=people\,dc=example,dc=com, cn=nsPwPolicyContainer,ou=people,dc=example,dc=com cosAttribute: pwdpolicysubentry default operational
For a user (for example,uid=jdoe,ou=people,dc=example,dc=com), the following entries are added:- A container entry (
nsPwPolicyContainer) at the parent level for holding various password policy related entries for the user and all its children. For example:dn: cn=nsPwPolicyContainer,ou=people,dc=example,dc=com objectClass: top objectClass: nsContainer cn: nsPwPolicyContainer
- The actual password policy specification entry (
nsPwPolicyEntry) for holding the password policy attributes that are specific to the user. For example:dn: cn=cn=nsPwPolicyEntry\,uid=jdoe\,ou=people\,dc=example\,dc=com, cn=nsPwPolicyContainer,ou=people,dc=example,dc=com objectclass: top objectclass: extensibleObject objectclass: ldapsubentry objectclass: passwordpolicy
- Assign the value of the above entry DN to the
pwdpolicysubentryattribute of the target entry. For example, this assigns the password policy to the user entry:dn: uid=jdoe,ou=people,dc=example,dc=com changetype: modify replace: pwdpolicysubentry pwdpolicysubentry: cn=cn=nsPwPolicyEntry\,uid=jdoe\,ou=people\,dc=example\,dc=com, cn=nsPwPolicyContainer,ou=people,dc=example,dc=com - Set the password policy attributes for the subtree or user entry with the appropriate values.Table 13.1, “Password Policy Attributes” describes the attributes available to configure the password policy. The
ldapmodifyutility can be used to change these attributes in the subtree or user entry which contains thensPwPolicyEntryobject class.NOTE
Thensslapd-pwpolicy-localattribute of thecn=configentry controls the type of password policy the server enforces. By default, this attribute is disabled (off). When the attribute is disabled, the server only checks for and enforces the global password policy; the subtree and user level password policies are ignored. When thens-newpwpolicy.plscript runs, it first checks for the specified subtree and user entries and, if they exist, modifies them. After updating the entries successfully, the script sets thensslapd-pwpolicy-localconfiguration parameter to on. If the subtree and user level password policy should not be enabled, be sure to setnsslapd-pwpolicy-localtooffafter running the script.
nsslapd-pwpolicy-local attribute to off by modifying the cn=config entry. For example: [8]
/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 -h server.example.com dn: cn=config changetype: modify replace: nsslapd-pwpolicy-local: on nsslapd-pwpolicy-local: off
dse.ldif).
- Stop the server.
service dirsrv stop
instance - Open the
dse.ldiffile in a text editor. - Set the value of
nsslapd-pwpolicy-localtooff, and save.nsslapd-pwpolicy-local: off
- Start the server.
service dirsrv start
instance
- Enable global syntax checking, as in Section 13.1.1.1, “Configuring a Global Password Policy Using the Console”, and save the policy.
- Edit the local password policy to contain all password syntax
- Enable fine-grained password checking, as in Section 13.1.1.2, “Configuring a Subtree/User Password Policy Using the Console”, and save the policy.
- Edit the local password policy to contain all password syntax attributes. Set the values to something other than the default settings, as listed in the Configuration and Command-Line Tool Reference.
- Re-edit the local password policy with the desired values, even if they are the defaults.
userPassword attribute and if it has not been inactivated. Because user passwords are stored in the directory, the user passwords can be set or reset with any LDAP operation, like ldapmodify.[8]
ldapmodify operation, there are some passwords that cannot be changed through regular LDAP operations. These passwords may be stored outside the Directory Server, such as passwords stored in a SASL application. These passwords can be modified through the password change extended operation.
ldappasswd utility can be used as follows:
ldappasswd -hhostname-psecure_port-Z -P/path/to/cert8.db -DbindDN-wbindPassword[-aoldPassword] -snewPassworduser
Table 13.2. ldappasswd Options
| Parameter | Description |
|---|---|
| -h | Gives the hostname of the Directory Server. |
| -p |
Gives the port number of the Directory Server. Since SSL is required for password change operations, this is usually give the TLS/SSL port of the Directory Server. With the -ZZ or -ZZZ for Start TLS, this can be the standard port.
|
| -Z |
Requires SSL for the connection. A secure connection is required for the password change operation.
NOTE ldappasswd also supports Start TLS encryption (-ZZ[Z]).
|
| -P |
Gives the full path to the certificate database which contains the CA certificate of the CA that issued the Directory Server client certificate. If the ldappasswd command is run on the same machine that the Directory Server is installed on, this can be /etc/dirsrv/slapd-. If this is not given, the default is the current directory.
|
| -D | Gives the bind DN. |
| -w | Gives the password for the bind DN. |
| -a | Optional. Gives the old password, which is being changed. |
| -s | Sets the new password. |
ldappasswd with the -ZZ option and the standard LDAP port number. The password extended change operation has the following format:
ldappasswd -hhostname-pstandard_port-ZZ -P/path/to/cert8.db -DbindDN-wbindPassword-snewPassworduser[-aoldPassword]
-ZZZ for additional certificate hostname validation.
ldappasswd like any other LDAP operation. It is not necessary to specify a user if the account is the same as that given in the bind DN. For example:
ldappasswd -h ldap.example.com -p 389 -ZZ -D "uid=jsmith,ou=People,dc=example,dc=com" -w secret -s newpassword
ldappasswd as shown below, adding the user DN to the operation and providing separate credentials, as follows:
ldappasswd -h server.example.com -p 389 -ZZ -D "cn=Directory Manager" -w secret -s newpassword "uid=jsmith,ou=People,dc=example,dc=com"
Insufficient rights error.
- Select the Configuration tab and then the Data node.
- In the right pane, select the Account Lockout tab.

- To enable account lockout, select the Accounts may be locked out checkbox.
- Enter the maximum number of allowed bind failures in the Lockout account after X login failures text box. The server locks out users who exceed the limit specified here.
- In the Reset failure counter after X minutes text box, enter the number of minutes for the server to wait before resetting the bind failure counter to zero.
- Set the interval for users to be locked out of the directory.
- Select the Lockout Forever radio button to lock users out until their passwords have been reset by the administrator.
- Set a specific lockout period by selecting the Lockout Duration radio button and entering the time (in minutes) in the text box.
- Click Save.
ldapmodify to change these attributes in the cn=config entry.
Table 13.3. Account Lockout Policy Attributes
| Attribute Name | Definition |
|---|---|
| passwordLockout |
This attribute indicates whether users are locked out of the directory after a given number of failed bind attempts. Set the number of failed bind attempts after which the user will be locked out using the passwordMaxFailure attribute. Users can be locked out for a specific time or until an administrator resets the password. This attribute is set to off by default, meaning that users will not be locked out of the directory.
|
| passwordMaxFailure |
This attribute indicates the number of failed bind attempts after which a user will be locked out of the directory. This attribute takes affect only if the passwordLockout attribute is set to on. This attribute is set to 3 bind failures by default.
|
| passwordUnlock | This attribute sets whether a user can log back into the server without administrator intervation. The default is for this attribute to be on, meaning that the user can log back into the server after a certain lockout period has passed. If this attribute is turned off, then the user cannot log back in using that account until it is manually unlocked by an administrator. |
| passwordLockoutDuration |
This attribute indicates the time, in seconds, that users will be locked out of the directory. The passwordUnlock attribute specifies if a user is locked out until the password is reset by an administrator (which means that the user is locked out indefinitely). If the passwordUnlock attribute is set to on, then the use can log in again as soon as the lockout duration time is reached. By default, the user is locked out for 3600 seconds.
|
| passwordResetFailureCount |
This attribute specifies the time, in seconds, after which the password failure counter will be reset. Each time an invalid password is sent from the user's account, the password failure counter is incremented. If the passwordLockout attribute is set to on, users will be locked out of the directory when the counter reaches the number of failures specified by the passwordMaxFailure attribute. The account is locked out for the interval specified in the passwordLockoutDuration attribute, after which time the failure counter is reset to zero (0). Because the counter's purpose is to gage when a hacker is trying to gain access to the system, the counter must continue for a period long enough to detect a hacker. However, if the counter were to increment indefinitely over days and weeks, valid users might be locked out inadvertently. The reset password failure count attribute is set 600 seconds by default.
|
passwordRetryCountretryCountResetTimeaccountUnlockTime
- Password policies are enforced on the data master.
- Account lockout is enforced on all servers participating in replication.
passwordMinAgeandpasswordMaxAgepasswordExppasswordWarning
- Warnings from the server of an impending password expiration are issued by all replicas. This information is kept locally on each server, so if a user binds to several replicas in turn, they will be issued the same warning several times. In addition, if the user changes the password, it may take time for this information to filter to the replicas. If a user changes a password and then immediately rebinds, he may find that the bind fails until the replica registers the changes.
- The same bind behavior should occur on all servers, including suppliers and replicas. Make sure to create the same password policy configuration information on each server.
- Account lockout counters may not work as expected in a multi-mastered environment. Account lockout counters are not replicated by default (although this can be configured). If account lockout attributes are not replicated at all, then a user could be locked out from one server but could successfully bind to another server (or, conversely, a user may be unlocked on one server and still blocked on another). If account lockout attributes are replicated, then there could be lags between an account lockout change on one server and when that change is propagated to the other servers. It depends on the replication schedule.
- Entries that are created for replication (for example, the server identities) need to have passwords that never expire. To make sure that these special users have passwords that do not expire, add the
passwordExpirationTimeattribute to the entry, and give it a value of20380119031407Z(the top of the valid range).
passwordIsGlobalPolicy attribute, which is enabled in the consumer Directory Server configuration to allow the consumer to accept password policy operational attributes.
off.
passwordIsGlobalPolicy configuration attribute on the consumer:
/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 -h consumer1.example.com dn: cn=config changetype: modify replace: passwordIsGlobalPolicy passwordIsGlobalPolicy: on
on allows the passwordRetryCount, retryCountResetTime, and accountUnlockTime to be replicated. No other configuration is necessary for the attributes to be included with the replicated attributes.
passwordIsGlobalPolicy attribute affects the consumer in replication, in that it allows the consumer to receive updates to those attributes. To control whether the password policy attributes are actually replicated by the supplier, use fractional replication, which controls what specific entry attributes are replicated.
passwordIsGlobalPolicy attribute is set to off on the consumer, so no password policy attributes should be replicated, use fractional replication (described in Section 9.1.7, “Replicating a Subset of Attributes with Fractional Replication”) to enforce that on the supplier and specifically exclude those attributes from the replication agreement.
- When configuring the replication agreement on the supplier, as described (for example) in Section 9.4.3, “Creating the Replication Agreement”, select the Enable Fractional Replication checkbox.
- By default, every attribute is listed in the Replicated Attributes box. Select the
passwordRetryCount,retryCountResetTime, andaccountUnlockTimeparameters and click the arrow button to move them into the Do Not Replicate box.
- Finish configuring the replication agreement.
- The Password Sync utility must be installed locally on the Windows machine that will be synchronized with a Directory Server.
- Password Sync can only link the Windows machine to a single Directory Server; to sync changes with multiple Directory Server instances, configure the Directory Server for multi-master replication.
- Password expiration warnings and times, failed bind attempts, and other password-related information is enforced locally per server and is not synchronized between sync peer servers.
- The same bind behavior should occur on all servers. Make sure to create the same or similar password policies on both Directory Server and Active Directory servers.
- Entries that are created for synchronization (for example, the server identities) need to have passwords that never expire. To make sure that these special users have passwords that do not expire, add the
passwordExpirationTimeattribute to the Directory Server entry, and give it a value of20380119031407Z(the top of the valid range).
- Look through limit. Specifies how many entries can be examined for a search operation.
- Size limit. Specifies the maximum number of entries the server returns to a client application in response to a search operation.
- Time limit. Specifies the maximum time the server spends processing a search operation.
- Idle timeout. Specifies the time a connection to the server can be idle before the connection is dropped.
NOTE
- Select the Directory tab.
- Browse the navigation tree in the left navigation pane, and double-click the user or role for which to set resource limits.The Edit Entry dialog box appears.
- Click Account in the left pane.
- Set the resource limits. There are four different limits that can be set:
- Look through limit. The maximum number of entries are examined for a search operation.
- Size limit. The maximum number of entries the server returns to a client application in response to a search operation.
- Time limit. The maximum time the server spends processing a search operation.
- Idle timeout. The time a connection to the server can be idle before the connection is dropped.
Entering a value of-1indicates no limit. - Click OK.
ldapmodify to add the following attributes to the entry:
| Attribute | Description |
|---|---|
| nsdslapd-lookthroughlimit |
Specifies how many entries are examined for a search operation. Giving this attribute a value of -1 indicates that there is no limit.
|
| nsslapd-sizelimit |
Specifies the maximum number of entries the server returns to a client application in response to a search operation. Giving this attribute a value of -1 indicates that there is no limit.
|
| nsslapd-timelimit |
Specifies the maximum time the server spends processing a search operation. Giving this attribute a value of -1 indicates that there is no time limit.
|
| nsidletimeout |
Specifies the time a connection to the server can be idle before the connection is dropped. The value is given in seconds. Giving this attribute a value of -1 indicates that there is no limit.
|
ldapmodify[8] to modify her entry:
/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 -h server.example.com dn: uid=bjensen,ou=people,dc=example,dc=com changetype: modify add:nsslapd-sizelimit nsslapd-sizelimit: 500
ldapmodify statement adds the nsSizeLimit attribute to Babs Jensen's entry and gives it a search return size limit of 500 entries.
- Create a template entry and set whatever resource limits you want to apply to anonymous binds.
TIP
For performance reasons, the template should be in the normal backend, not in thecn=configsuffix, which doesn't use an entry cache.For example:/usr/lib64/mozldap/ldapmodify
-a-D "cn=directory manager" -w secret -p 389 -h server.example.com dn: cn=anon template,ou=people,dc=example,dc=com objectclass: person objectclass: top cn: anon template sn: template nsSizeLimit: 250 nsLookThroughLimit: 1000 nsTimeLimit: 60 - Add the
nsslapd-anonlimitsdnto the server configuration, pointing to the DN of the template entry. Any of the resource limits in Section 13.4.2, “Setting Resource Limits Using the Command Line” can be set. For example:/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 dn: cn=config changetype: modify add: nsslapd-anonlimitsdn nsslapd-anonlimitsdn: cn=anon template,ou=people,dc=example,dc=com
IMPORTANT
nsslapd-require-secure-binds attribute is turned on. Otherwise, these operations will fail.
NOTE
- Add the
nsslapd-require-secure-bindsattribute to thecn=configentry:/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 dn: cn=config changetype: modify replace: nsslapd-require-secure-binds nsslapd-require-secure-binds: on
- Restart the server.
service dirsrv restart
- Add the
nsslapd-allow-anonymous-accessattribute to thecn=configentry:/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 dn: cn=config changetype: modify replace: nsslapd-allow-anonymous-access nsslapd-allow-anonymous-access: off
- Restart the server.
service dirsrv restart
NOTE
ldapsearch without supplying a password option:
/usr/lib64/mozldap/ldapsearch -D "cn=directory manager" -b "dc=example,dc=com" -s sub "(objectclass=*)"
ldap_simple_bind: DSA is unwilling to perform ldap_simple_bind: additional info: Unauthenticated binds are not allowed
ldap_simple_bind: Invalid credentials
nsslapd-allow-unauthenticated-binds attribute sets whether to allow an unauthenticated bind to succeed as an anonymous bind. Setting this parameter to on allows unauthenticated binds. By default, this parameter is off.
- To configure unauthenticated binds, edit the Directory Server
cn=configentry:/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 -h server.example.com dn: cn=config changetype:replace replace: nsslapd-allow-unauthenticated-binds nsslapd-allow-unauthenticated-binds: on
- Restart the server.
service dirsrv restart
- User entries, if the Unix user matches one user entry
- Directory Manager (or the super user defined in
nsslapd-ldapimaprootdn), if the Unix user isroot
gidNumber=gid+uidNumberuid,autobindsuffix
NOTE
root to Directory Manager.
- Run
ldapmodifyto update the Directory Server configuration./usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 -h server.example.com dn: cn=config changetype: modify
- Enable autobind.
replace: nsslapd-ldapiautobind nsslapd-ldapiautobind: on
- To map user entries, add four attributes:
nsslapd-ldapimaptoentriesto enable entry mappingnsslapd-ldapiuidnumbertypeto set the Directory Server attribute to map to the Unix UID numbernsslapd-ldapigidnumbertypeto set the Directory Server attribute to map to the Unix group ID numbernsslapd-ldapientrysearchbaseto set the search base to use to find Directory Server user entries
add: nsslapd-ldapimaptoentries nsslapd-ldapimaptoentries: on - add: nsslapd-ldapiuidnumbertype nsslapd-ldapiuidnumbertype: uidNumber - add: nsslapd-ldapigidnumbertype nsslapd-ldapigidnumbertype: gidNumber - add: nsslapd-ldapientrysearchbase nsslapd-ldapientrysearchbase: ou=people,dc=example,dc=com
- To map the
rootentry to Directory Manager, add thensslapd-ldapimaprootdnattribute:add: nsslapd-ldapimaprootdn nsslapd-ldapimaprootdn: cn=Directory Manager
- Restart the server to apply the new configuration.
service dirsrv restart example
admin) to perform administrative duties.
admin user entry is stored under o=NetscapeRoot suffix in the configuration directory. Therefore, attempts to bind to the user directory as admin would normally fail. PTA allows the user directory to transmit the credentials to the configuration directory, which verifies them. The user directory then allows the admin user to bind.
NOTE
- The configuration Directory Server (authenticating directory) is installed on machine A. The configuration directory always contains the configuration database and suffix,
o=NetscapeRoot. In this example, the server name isconfigdir.example.com. - The user Directory Server (PTA directory) is then installed on machine B. The user directory stores the root suffix, such as
dc=example,dc=com. In this example, the server name isuserdir.example.com. - When the user directory is set up on machine B, the setup script prompts for the LDAP URL of the configuration directory on machine A.
- The setup program enables the PTA Plug-in and configures it to use the configuration directory LDAP URL.This entry contains the LDAP URL for the configuration directory. For example:
dn: cn=Pass Through Authentication,cn=plugins, ... nsslapd-pluginEnabled: on nsslapd-pluginarg0: ldap://configdir.example.com/o=NetscapeRoot ...
The user directory is now configured to send all bind requests for entries with a DN containingo=NetscapeRootto the configuration directoryconfigdir.example.com. - When installation is complete, the
adminuser attempts to connect to the user directory to begin adding users. - The setup program adds the
adminuser's entry to the directory asuid=admin,ou=TopologyManagement,o=NetscapeRoot. So the user directory passes the bind request through to the configuration directory as defined by the PTA Plug-in configuration. - The configuration directory authenticates the user's credentials and sends the information back to the user directory.
- The user directory allows the
adminuser to bind.
cn=Pass Through Authentication, cn=plugins,cn=config entry on the PTA directory (the user directory configured to pass through bind requests to the authenticating directory) using the required PTA syntax. There are only two attributes in this entry that are significant:
- nsslapd-pluginEnabled, which sets whether the plug-in is enabled or disabled. The value for this attribute can be
onoroff. - nsslapd-pluginarg0, which points to the configuration directory. The value for this attribute is the LDAP URL of the server and suffix to which to pass the bind requests, along with the optional parameters, maxconns, maxops, timeout, ldver, connlifetime, startTLS.
NOTE
ldap|ldaps://authDS/subtree) must be separated from the optional parameters (maxconns, maxops, timeout, ldver, connlifetime, startTLS) by a single space. If any of the optional parameters are defined, all of them must be defined, even if only the default values are used.
nsslapd-pluginarg attribute suffix by one each time, as in Section 13.6.3.2, “Specifying Multiple Authenticating Directory Servers”. For example:
nsslapd-pluginarg0: LDAP URL for the first server nsslapd-pluginarg1: LDAP URL for the second server nsslapd-pluginarg2: LDAP URL for the third server ...
Table 13.4. PTA Plug-in Parameters
| Variable | Definition | ||
|---|---|---|---|
| state |
Defines whether the plug-in is enabled or disabled. Acceptable values are on or off.
| ||
| ldap|ldaps | Defines whether SSL is used for communication between the two Directory Servers. See Section 13.6.2.1, “Configuring the Servers to Use a Secure Connection” for more information. | ||
| authDS |
The authenticating directory hostname. The port number of the Directory Server can be given by adding a colon and then the port number. For example, ldap://dirserver.example.com:389/. If the port number is not specified, the PTA server attempts to connect using either of the standard ports:
| ||
| subtree |
The pass-through subtree. The PTA Directory Server passes through bind requests to the authenticating Directory Server from all clients whose DN is in this subtree. See Section 13.6.2.3, “Specifying the Pass-through Subtree” for more information. This subtree must not exist on this server. To pass the bind requests for o=NetscapeRoot to the configuration directory, the subtree o=NetscapeRoot must not exist on the server.
| ||
| maxconns |
Optional. The maximum number of connections the PTA directory can simultaneously open to the authenticating directory. The default is 3. See Section 13.6.2.4, “Configuring the Optional Parameters” for more information.
| ||
| maxops |
Optional. The maximum number of simultaneous operations (usually bind requests) the PTA directory can send to the authenticating directory within a single connection. The default is 5. See Section 13.6.2.4, “Configuring the Optional Parameters” for more information.
| ||
| timeout |
Optional. The time limit, in seconds, that the PTA directory waits for a response from the authenticating Directory Server. If this timeout is exceeded, the server returns an error to the client. The default is 300 seconds (five minutes). Specify zero (0) to indicate no time limit should be enforced. See Section 13.6.2.4, “Configuring the Optional Parameters” for more information.
| ||
| ldver | Optional. The version of the LDAP protocol used to connect to the authenticating directory. Directory Server supports LDAP version 2 and 3. The default is version 3, and Red Hat strongly recommends against using LDAPv2, which is old and will be deprecated. See Section 13.6.2.4, “Configuring the Optional Parameters” for more information. | ||
| connlifetime |
Optional. The time limit, in seconds, within which a connection may be used. If a bind request is initiated by a client after this time has expired, the server closes the connection and opens a new connection to the authenticating directory. The server will not close the connection unless a bind request is initiated and the directory determines the connection lifetime has been exceeded. If this option is not specified, or if only one host is listed, no connection lifetime will be enforced. If two or more hosts are listed, the default is 300 seconds (five minutes). See Section 13.6.2.4, “Configuring the Optional Parameters” for more information.
| ||
| startTLS |
Optional. A flag of whether to use Start TLS for the connection to the authenticating directory. Start TLS establishes a secure connection over the standard port, so it is useful for connecting using LDAP instead of LDAPS. The SSL server and CA certificates need to be available on both of the servers.
The default is
0, which is off. To enable Start TLS, set it to 1. To use Start TLS, the LDAP URL must use ldap:, not ldaps:.
See Section 13.6.2.4, “Configuring the Optional Parameters” for more information.
|
cn=Pass Through Authentication, cn=plugins,cn=config. To modify the PTA configuration:
- Use the
ldapmodifycommand to modifycn=Pass Through Authentication,cn=plugins,cn=config. - Restart Directory Server.
NOTE
nsslapd-pluginarg0: ldaps://ldap.example.com:636/o=NetscapeRoot
- Use
ldapmodifyedit the PTA Plug-in entry.ldapmodify -p 389 -D "cn=Directory Manager" -w secret -h example dn: cn=Pass Through Authentication,cn=plugins,cn=config changetype: modify replace: nsslapd-pluginarg0 nsslapd-pluginarg0: ldap://dirserver.example.com/o=NetscapeRoot
Optionally, include the port number. If the port number is not given, the PTA Directory Server attempts to connect using either the standard port (389) forldap://or the secure port (636) forldaps://.If the connection between the PTA Directory Server and the authenticating Directory Server is broken or the connection cannot be opened, the PTA Directory Server sends the request to the next server specified, if any. There can be multiple authenticating Directory Servers specified, as required, to provide failover if the first Directory Server is unavailable. All of the authentication Directory Server are set in thensslapd-pluginarg0attribute.Multiple authenticating Directory Servers are listed in a space-separate list of host:port pairs, with this format:ldap|ldaps://host1:port1 host2:port2/
subtree - Restart the server.
service dirsrv restart
instance_name
- Use the
ldapmodifycommand to import the LDIF file into the directory.ldapmodify -p 389 -D "cn=Directory Manager" -w secret -h example dn: cn=Pass Through Authentication,cn=plugins,cn=config changetype: modify replace: nsslapd-pluginarg0 nsslapd-pluginarg0: ldap://dirserver.example.com/o=NetscapeRoot
For information on the variable components in this syntax, see Table 13.4, “PTA Plug-in Parameters”. - Restart the server.
service dirsrv restart
instance_name
ldap|ldaps://authDS/subtree maxconns, maxops, timeout, ldver, connlifetime, startTLS- The maximum number of connections the PTA Directory Server can open simultaneously to the authenticating directory, represented by maxconns in the PTA syntax. The default value is
3. - The maximum number of bind requests the PTA Directory Server can send simultaneously to the authenticating Directory Server within a single connection. In the PTA syntax, this parameter is maxops. The default is value is
5. - The time limit for the PTA Directory Server to wait for a response from the authenticating Directory Server. In the PTA syntax, this parameter is timeout. The default value is
300seconds (five minutes). - The version of the LDAP protocol for the PTA Directory Server to use to connect to the authenticating Directory Server. In the PTA syntax, this parameter is ldver. The default is
LDAPv3. - The time limit in seconds within which a connection may be used. If a bind request is initiated by a client after this time has expired, the server closes the connection and opens a new connection to the authenticating Directory Server. The server will not close the connection unless a bind request is initiated and the server determines the timeout has been exceeded. If this option is not specified or if only one authenticating Directory Server is listed in the authDS parameter, no time limit will be enforced. If two or more hosts are listed, the default is
300seconds (five minutes). In the PTA syntax, this parameter is connlifetime. - Whether to use Start TLS for the connection. Start TLS creates a secure connection over a standard LDAP port. For Start TLS, the servers must have their server and CA certificates installed, but they do not need to be running in SSL.The default is
0, which means Start TLS is off. To enable Start TLS, set it to1. To use Start TLS, the LDAP URL must useldap:, notldaps:.
- Use
ldapmodifyto edit the plug-in entry.ldapmodify -p 389 -D "cn=Directory Manager" -w secret -h example dn: cn=Pass Through Authentication,cn=plugins,cn=config changetype: modify replace: nsslapd-pluginarg0 nsslapd-pluginarg0: ldap://dirserver.example.com/o=NetscapeRoot 3,5,300,3,300,0
(In this example, each of the optional parameters is set to its default value.) Make sure there is a space between the subtree parameter, and the optional parameters.NOTE
Although these parameters are optional, if any one of them is defined, they all must be defined, even if they use the default values. - Restart the server.
service dirsrv restart
instance_name
dse.ldif file:
o=NetscapeRoot subtree. The hostname of the authenticating Directory Server is configdir.example.com.
dn: cn=Pass Through Authentication,cn=plugins,cn=config ... nsslapd-pluginEnabled: on nsslapd-pluginarg0: ldap://configdir.example.com/o=NetscapeRoot ...
nsslapd-pluginarg0 attribute. Multiple authenticating Directory Servers are listed in a space-separate list of host:port pairs. For example:
dn: cn=Pass Through Authentication,cn=plugins,cn=config ... nsslapd-pluginEnabled: on nsslapd-pluginarg0: ldap://configdir.example.com:389 config2dir.example.com:1389/o=NetscapeRoot ...
NOTE
nsslapd-pluginarg0 attribute sets the authentication Directory Server; additional nsslapd-pluginargN attributes can set additional suffixes for the PTA Plug-in to use, but not additional hosts.
dn: cn=Pass Through Authentication,cn=plugins,cn=config ... nsslapd-pluginEnabled: on nsslapd-pluginarg0: ldap://configdir.example.com/o=NetscapeRoot nsslapd-pluginarg1: ldap://configdir.example.com/dc=example,dc=com ...
10) only for the maximum number of connections parameter maxconns. Each of the other parameters is set to its default value. However, because one parameter is specified, all parameters must be defined explicitly in the syntax.
dn: cn=Pass Through Authentication,cn=plugins,cn=config ... nsslapd-pluginEnabled: on nsslapd-pluginarg0: ldap://configdir.example.com/o=NetscapeRoot 10,5,300,3,300,1 ...
dn: cn=Pass Through Authentication,cn=plugins,cn=config ... nsslapd-pluginEnabled: on nsslapd-pluginarg0:ldap://configdir.example.com/o=NetscapeRoot 10,15,30,3,600,0 nsslapd-pluginarg1:ldap://config2dir.example.com/dc=example,dc=com 7,7,300,3,300,1 ...
- The suffixes that are controlled by the PAM pass-through authentication plug-in. This covers suffixes to exclude, suffixes to include, and how to handle a missing suffix.
- The PAM attribute mapping. The credentials that are offered to the Directory Server have to be mapped in some way to an LDAP entry and then, back to the credentials in the PAM service. This is done by defining a mapping method and then, optionally, which LDAP attribute to use to match the credentials.
- General configuration such as using SSL connections, the PAM service to use, and whether to fallback to LDAP authentication if PAM authentication fails.
Table 13.5. PAM Pass-through Auth Plug-in Attributes
| Attribute | Definition |
|---|---|
| pamExcludeSuffix | Identifies suffixes to exclude from PAM authentication. |
| pamIncludeSuffix | Identifies suffixes to include for PAM authentication. |
| pamMissingSuffix | Identifies how to handle missing include or exclude suffixes. The options are ERROR (which causes the bind operation to fail); ALLOW, which logs an error but allows the operation to proceed; and IGNORE, which allows the operation and doesn't log any errors. |
| pamIDAttr | Sets the name of the attribute holding the PAM ID. |
| pamIDMapMethod |
Gives the method to use to map the LDAP bind DN to a PAM identity.
NOTE
Directory Server user account inactivation is only validated using the ENTRY mapping method. With RDN or DN, a Directory Server user whose account is inactivated can still bind to the server successfully.
|
| pamFallback | Sets whether to fallback to regular LDAP authentication if PAM authentication fails. |
| pamSecure | Requires secure (TLS/SSL) connection for PAM authentication. |
| pamService |
Contains the service name to pass to PAM. This assumes that the service specified has a configuration file in /etc/pam.d.
|
pamExcludeSuffix attribute excludes a suffix. By default, only the configuration subtree (cn=config) is excluded. Alternatively, the PAM PTA plug-in can be applied to a subtree with the pamIncludeSuffix attribute. Both of these attributes are multi-valued.
pamExcludeSuffix: cn=config pamExcludeSuffix: o=NetscapeRoot
pamIncludeSuffix, only the given subtree is included and all others are automatically excluded. Since this attribute is multi-valued, more than one suffix can be included in the PAM evaluation by explicitly listing the suffixes.
pamIncludeSuffix: ou=Engineering,dc=example,dc=com pamIncludeSuffix: ou=QE,dc=example,dc=com
pamMissingSuffix attribute tells the server how to handle a failure if the specified suffix (include or exclude) doesn't exist. If it's set to IGNORE, then if the suffix doesn't exist, the plug-in simply skips that suffix and tries the next.
pamMissingSuffix: IGNORE pamIncludeSuffix: ou=Engineering,dc=example,dc=com pamIncludeSuffix: ou=Not Real,dc=example,dc=com
pamIDMapMethod: RDN ENTRY DN
NOTE
Table 13.6. Mapping Methods for PAM Authentication
| Mapping | Description |
|---|---|
| RDN | This method uses the value from the leftmost RDN in the bind DN. The mapping for this method is defined by Directory Server. This is the default mapping method, if none is given. |
| ENTRY |
This method pulls the value of the PAM identity from a user-defined attribute in the bind DN entry. The identity attribute is defined in the pamIDAttr attribute.
pamIDAttr: customPamUid |
| DN | This method uses the full distinguished name from the bind DN. The mapping for this method is defined by Directory Server. |
- The service name to send to PAM (
pamService); this is the name of the configuration file to use in/etc/pam.d - Whether to require a secure connection (
pamSecure) - Whether to fall back to LDAP authentication if PAM authentication fails (
pamFallback)
pamFallback: false pamSecure: false pamService: ldapserver
- Make sure the PAM service is fully configured.
- Enable the plug-in; this is disabled by default.
/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 -h server.example.com dn: cn=PAM Pass-through Auth Plugin,cn=plugins,cn=config changetype: modify replace: nsslapd-pluginEnabled nsslapd-pluginEnabled: on
- Add or edit the attributes available for the PAM plug-in. The available attributes are listed in Table 13.5, “PAM Pass-through Auth Plug-in Attributes” and Example 13.1, “Example PAM Pass-through Authentication Configuration” has an example entry.
- Restart the server to load the plug-in.
service dirsrv restart
Example 13.1. Example PAM Pass-through Authentication Configuration
dn: cn=PAM Pass Through Auth,cn=plugins,cn=config objectClass: top objectClass: nsSlapdPlugin objectClass: extensibleObject objectClass: pamConfig cn: PAM Pass Through Auth nsslapd-pluginPath: libpam-passthru-plugin nsslapd-pluginInitfunc: pam_passthruauth_init nsslapd-pluginType: preoperationnsslapd-pluginEnabled: onnsslapd-pluginloadglobal: true nsslapd-plugin-depends-on-type: database pamMissingSuffix: ALLOWpamExcludeSuffix: cn=configpamExcludeSuffix: o=NetscapeRootpamIDMapMethod: RDN ou=people,dc=example,dc=compamIDMapMethod: ENTRY ou=engineering,dc=example,dc=compamIDAttr: customPamUidpamFallback: FALSEpamSecure: TRUEpamService: ldapserver
nsAccountLock. When an entry contains the nsAccountLock attribute with a value of true, the server rejects the bind.
WARNING
- Select the Directory tab.
- Browse the navigation tree in the left navigation pane, and double-click the entry to inactivate.The Edit Entry dialog box appears.
- Click Account in the left pane. The right pane states that the role or user is activate. Click the button to inactivate the user or role (or the Activate button, to re-enable the entry).

- Click OK.
- Select the menu, and select the item.
- Select the item.


ns-inactivate.pl and ns-activate.pl script share similar options to identify the entry to modify, as listed in Table 13.7, “ns-inactivate.pl and ns-activate.pl Options”.
ns-inactivate.pl -D Directory Manager -w secret -p 389 -h example.com -I "uid=jfrasier,ou=people,dc=example,dc=com"
ns-activate.pl -D Directory Manager -w secret -p 389 -h example.com -I "uid=jfrasier,ou=people,dc=example,dc=com"
Table 13.7. ns-inactivate.pl and ns-activate.pl Options
| Option Name | Description |
|---|---|
| -D | The DN of the directory administrator. |
| -w | The password of the directory administrator. |
| -p | Port used by the server. |
| -h | Name of the server on which the directory resides. |
| -I | DN of the user account or role to inactivate or activate, depending on the script. |
ns-inactivate.pl and ns-activate.pl scripts, refer to the Directory Server Configuration and Command-Line Tool Reference.
/usr/lib64/mozldap directory on Red Hat Enterprise Linux 5 (64-bit); directories for other platforms are listed in Section 1.3, “LDAP Tool Locations”. However, Red Hat Enterprise Linux systems also include LDAP tools from OpenLDAP. It is possible to use the OpenLDAP commands as shown in the examples, but you must use the -x argument to disable SASL and allow simple authentication.
- 14.1. Requiring Secure Connections
- 14.2. Using TLS/SSL
- 14.2.1. Enabling TLS/SSL: Summary of Steps
- 14.2.2. Obtaining and Installing Server Certificates
- 14.2.3. Configuring the Directory Server to Run in SSL/TLS
- 14.2.4. Command-Line Functions for Start TLS
- 14.2.5. Using certutil
- 14.2.6. Managing Certificates Used by the Directory Server Console
- 14.2.7. Updating Attribute Encryption for New SSL/TLS Certificates
- 14.2.8. Using External Security Devices
- 14.2.9. Setting Security Preferences
- 14.2.10. Using Certificate-Based Authentication
- 14.2.11. Managing Certificates for the Directory Server
- 14.3. Using SASL
- 14.3.1. About SASL Identity Mapping
- 14.3.2. Default SASL Mappings for Directory Server
- 14.3.3. Authentication Mechanisms for SASL in Directory Server
- 14.3.4. About Kerberos with Directory Server
- 14.3.5. Configuring SASL Identity Mapping
- 14.3.6. Configuring SASL Authentication at Directory Server Startup
- 14.3.7. Using an External Keytab
nsslapd-minssf configuration attribute. When enforcing a minimum SSF, the Directory Server looks at each available encryption type for an operation — SSL/TLS or SASL — and determines which has the higher SSF value and then compares the higher value to the minimum SSF. (It is possible for both SASL authentication and SSL/TLS to be configured for some server-to-server connections, such as replication.)
nsslapd-minssf attribute value is 0, which means there is no minimum SSF for server connections. The value can be set to any reasonable positive integer. The value represents the required key strength for any secure connection.
- Add the
nsslapd-minssfattribute to thecn=configentry:/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 dn: cn=config changetype: modify replace: nsslapd-minssf nsslapd-minssf: 128
- Restart the server.
service dirsrv restart
TIP
nsslapd-require-secure-binds attribute, as in Section 13.5.1, “Requiring Secure Binds”.
- Improved efficiency. When using applications that prompt once for the certificate database password and then use that certificate for all subsequent bind or authentication operations, it is more efficient than continuously providing a bind DN and password.
- Improved security. The use of certificate-based authentication is more secure than non-certificate bind operations because certificate-based authentication uses public-key cryptography. Bind credentials cannot be intercepted across the network. If the certificate or device is lost, it is useless without the PIN, so it is immune from third-party interference like phishing attacks.
- Obtain and install a certificate for the Directory Server, and configure the Directory Server to trust the certification authority's (CA's) certificate.For information, see Section 14.2.2, “Obtaining and Installing Server Certificates”.
- Turn on TLS/SSL in the directory.For information, refer to Section 14.2.3, “Configuring the Directory Server to Run in SSL/TLS”.
- Configure the Admin Server connect to a TLS-enabled Directory Server.
- Optionally, ensure that each user of the Directory Server obtains and installs a personal certificate for all clients that will authenticate with TLS/SSL.
- Generate a certificate request.
- Send the certificate request to a certificate authority.
- Install the server certificate.
- Set the Directory Server to trust the certificate authority.
- Confirm that the certificates are installed.
- Select the Tasks tab, and click Manage Certificates.

- Select the Server Certs tab, and click the button.

- Enter the Requester Information in the blank text fields, then click .

- Server Name. Enter the fully qualified hostname of the Directory Server as it is used in DNS and reverse DNS lookups; for example,
dir.example.com. The server name is critical for client-side validation to work, which prevents man-in-the-middle attacks. - Organization. Enter the legal name of the company or institution. Most CAs require this information to be verified with legal documents such as a copy of a business license.
- Organizational Unit. Optional. Enter a descriptive name for the organization within the company.
- Locality. Optional. Enter the company's city name.
- State or Province. Enter the full name of the company's state or province (no abbreviations).
- Country. Select the two-character abbreviation for the country's name (ISO format). The country code for the United States is US.
- If an external security device is to be used to store the Directory Server certificates, the device is plugged in, and the module has been installed as described in Section 14.2.8, “Using External Security Devices”, then the module is available in the Active Encryption Token menu. The default is to use the software databases with Directory Server,
internal (software).
The button is grayed out until a password is supplied.- The Request Submission dialog box provides two ways to submit a request: directly to the CA (if there is one internally) or manually. To submit the request manually, select Copy to Clipboard or Save to File to save the certificate request which will be submitted to the CA.

- Click to dismiss the Certificate Request Wizard.
- Most certificate requests are emailed to the CA, so open a new message.
- Copy the certificate request information from the clipboard or the saved file into the body of the message.
-----BEGIN NEW CERTIFICATE REQUEST----- MIIBrjCCARcCAQAwbjELMAkGA1UEBhMCVXMxEzARBgNVBAgTCkNBTElGT1J OSUExLDAqBgVBAoTI25ldHNjYXBlIGNvbW11bmljYXRpb25zIGNvcnBvcmF 0aW9uMRwwGgYDVQQDExNtZWxsb24ubmV0c2NhcGUuY29tMIGfMA0GCSqGSI b3DQEBAQUAA4GNADCBiQKBgQCwAbskGh6SKYOgHy+UCSLnm3ok3X3u83Us7 ug0EfgSLR0f+K41eNqqRftGR83emqPLDOf0ZLTLjVGJaH4Jn4l1gG+JDf/n /zMyahxtV7+mT8GOFFigFfuxaxMjr2j7IvELlxQ4IfZgWwqCm4qQecv3G+N 9YdbjveMVXW0v4XwIDAQABoAAwDQYK ------END NEW CERTIFICATE REQUEST-----
- Send the email message to the CA.
NOTE
certutil to install the certificate.
certutil -importcert -v /path/to/certificate_filecertutil to manage certificates, see Section 14.2.5, “Using certutil”.
- Select the Tasks tab, and click Manage Certificates.

- Select the Server Certs tab, and click .

- Give the certificate location or paste the certificate text in the text box, then click .

- In this file. Enter the absolute path to the certificate in this field.
- In the following encoded text block. Copy the text from the CA's email or from the created text file, and paste it in this field.
- Check that the certificate information displayed is correct, and click .
- Give a name to the certificate, and click .
- Provide the password that protects the private key. This password is the same as the one provided in step 5 in Section 14.2.2.1, “Generating a Certificate Request”.
- Select the Tasks tab, and click Manage Certificates.

- Go to the CA Certs tab, and click .

- If the CA's certificate is saved to a file, enter the path in the field provided. Alternatively, copy and paste the certificate, including the headers, into the text box. Click .
- Check that the certificate information that opens is correct, and click .
- Name the certificate, and click .

- Accepting connections from clients (Client Authentication). The server checks that the client's certificate has been issued by a trusted certificate authority.
- Accepting connections to other servers (Server Authentication). This server checks that the directory to which it is making a connection (for replication updates, for example) has a certificate that has been issued by a trusted certificate authority.
- Select the Tasks tab, and click Manage Certificates.
- Select the Server Certs tab.A list of all the installed certificates for the server opens.
- Scroll through the list. The certificates installed previously should be listed.
NOTE
WARNING
ldapmodify to edit the nsServerSecurity attribute:
nsServerSecurity: off
NOTE
nobody. The key and cert databases should be owned by the Directory Server user and should typically have read/write access for the owner with no access allowed to any other user (mode 0600). The PIN file should also be owned by the Directory Server user and set to read-only by this user, with no access to anyone other user (mode 0400).
- Obtain and install CA and server certificates.
- Set the secure port for the server to use for TLS/SSL communications. In the Configuration area, select the Settings tab, and enter the value in the Encrypted Port field.
The encrypted port number must not be the same port number used for normal LDAP communications. By default, the standard port number is389, and the secure port is636. - Select the Configuration tab, and then select the top entry in the navigation tree in the left pane. Select the Encryption tab in the right pane.
- Select the Enable SSL for this Server checkbox.

- Check the Use this Cipher Family checkbox.
- Select the certificate to use from the drop-down menu.
- Click Cipher Settings.
By default, all ciphers are selected. - Set the preferences for client authentication.

- Do not allow client authentication. With this option, the server ignores the client's certificate. This does not mean that the bind will fail.
- Allow client authentication. This is the default setting. With this option, authentication is performed on the client's request. For more information about certificate-based authentication, see Section 14.2.10, “Using Certificate-Based Authentication”.
- Require client authentication. With this option, the server requests authentication from the client.
If TLS/SSL is only enabled in the Directory Server and not the Directory Server Console, do not select Require client authentication checkbox.NOTE
To use certificate-based authentication with replication, the consumer server must be configured either to allow or to require client authentication. - To verify the authenticity of requests, select the Check hostname against name in certificate for outbound SSL connections option. The server does this verification by matching the hostname against the value assigned to the common name (
cn) attribute of the subject name in the being presented for authentication.
By default, this feature is disabled. If it's enabled and if the hostname does not match thecnattribute of the certificate, appropriate error and audit messages are logged. For example, in a replicated environment, messages similar to these are logged in the supplier server's log files if it finds that the peer server's hostname doesn't match the name specified in its certificate:[DATE] - SSL alert: ldap_sasl_bind("",LDAP_SASL_EXTERNAL) 81 (Netscape runtime error -12276 - Unable to communicate securely with peer: requested domain name does not match the server's certificate.) [DATE] NSMMReplicationPlugin - agmt="cn=to ultra60 client auth" (ultra60:1924): Replication bind with SSL client authentication failed: LDAP error 81 (Can't contact LDAP server)Red Hat recommends enabling this option to protect Directory Server's outbound SSL connections against a man-in-the-middle (MITM) attack. - Click .
- Restart the Directory Server. The Directory Server must be restarted from the command line.
service dirsrv restart
instanceWhen the server restarts, it prompts for the PIN or password to unlock the key database. This is the same password used when the server certificate and key were imported into the database.To restart the Directory Server without the password prompt, create a PIN file or use a hardware crypto device. See Section 14.2.3.3, “Creating a Password File for the Directory Server” for information on how to create a PIN file.
- Obtain server certificates and CA certs, and install them on the Directory Server. This is described in Section 14.2.2, “Obtaining and Installing Server Certificates”.
- Obtain and install server and CA certificates on the Admin Server. This is a similar process as for the Directory Server.
NOTE
It is important that the Admin Server and Directory Server have a CA certificate in common so that they can trust the other's certificates. - Configure TLS/SSL for the Directory Server as described in Section 14.2.3.1, “Enabling TLS/SSL Only in the Directory Server”.
- Require SSL/TLS to connect to the Directory Server Console.
WARNING
The Directory Server must already be configured to run in SSL and the server must already have been restarted before the Directory Server Console can be configured to use SSL. Configuring SSL/TLS for the server requires a server restart to load the new configuration, including the new secure port assignment. However, enabling SSL/TLS for the Console takes effect immediately. Therefore, if the Console has SSL/TLS enabled before the server is running in SSL/TLS, then the Console loses the connection to the server and cannot reconnect.To disable SSL/TLS in the Directory Server Console, useldapmodifyto edit thensServerSecurityattribute:nsServerSecurity: off
- Reopen the Directory Server Console.
- In the Configuration tab, select the server, and open the Encryption tab.
- Check the Use SSL in the Console box.

- In the Admin Server Console, select the Configuration tab. Select the Encryption tab, check the Enable SSL checkbox, and fill in the appropriate certificate information.

- In the Configuration DS tab, change the port number to the new Directory Server secure port information. See Section 1.7, “Changing Directory Server Port Numbers” for more information. Do this even if the default port of
636is used. Check the Secure Connection checkbox.
- In the User DS tab, select the Set User Directory radio button, and fill in the Directory Server secure port information, the LDAP URL, and the user database information. Check the Secure Connection checkbox.

- Save the new TLS/SSL settings and Configuration DS and User DS information in the Admin Server Console.
- Restart the Admin Server. The server must be restarted from the command line.
service dirsrv-admin restart
When the server restarts, it prompts for the PIN or password to unlock the key database. This is the same password used when the server certificate and key were imported into the database.To restart the Admin Server without the password prompt, create a PIN file or use a hardware crypto device. See Section 14.2.3.4, “Creating a Password File for the Admin Server” for information on how to create a PIN file.
NOTE
https; otherwise, the operation will time out, unable to find the server since it is running on a secure connection. After successfully connecting, a dialog box appears to accept the certificate. Click to accept the certificate (either only for that current session or permanently).

WARNING
/etc/dirsrv/slapd-instance_name. The file should be named pin.txt.
Internal (Software) Token:secret
Internal (Software) Token.
0400).
WARNING
- Open the Admin Server configuration directory,
/etc/dirsrv/admin-serv. - Create a password file named
password.conf. The file should include a line with the token name and password, in the form token:password. For example:internal:secret
For the NSS software crypto module (the default software database), the token is always calledinternal.The password file should be owned by the Admin Server user and set to read-only by the Admin Server user, with no access to any other user (mode0400).NOTE
To find out what the Admin Server user ID is, rungrepin the Admin Server configuration directory:cd /etc/dirsrv/admin-serv grep \^User console.conf
- In the
/etc/dirsrv/admin-servdirectory, edit thenss.conffile to point to the location of the new password file.# Pass Phrase Dialog: # Configure the pass phrase gathering process. # The filtering dialog program (`builtin' is a internal # terminal dialog) has to provide the pass phrase on stdout. NSSPassPhraseDialog file://etc/dirsrv/admin-serv/password.conf
- Restart the Admin Server.
service dirsrv-admin restart
ldapmodify, ldapsearch, and ldapdelete can use TLS/SSL when communicating with an SSL-enabled server or to use certificate authentication. Command-line options also specify or enforce Start TLS, which which allows a secure connection to be enabled on a clear text port after a session has been initiated.
IMPORTANT
ldapsearch -p 389 -ZZZ -P certificateDB -s base
-b "uid=mconnors,ou=people,dc=example,dc=com" "(attribute=govIdNumber)"
-ZZZ enforces Start TLS, and certificateDB gives the filename and path to the certificate database.
NOTE
-ZZZ option enforces the use of Start TLS, and the server must respond that a Start TLS command was successful. If the -ZZZ command is used and the server does not support Start TLS, the operation is aborted immediately.
-ZZ option, the following errors could occur:
- If there is no certificate database, the operation fails. See Section 14.2.2, “Obtaining and Installing Server Certificates” for information on using certificates.
- If the server does not support Start TLS, the connection proceeds in clear text. To enforce the use of Start TLS, use the
-ZZZcommand option. - If the certificate database does not have the certificate authority (CA) certificate, the connection proceeds in clear text. See Section 14.2.2, “Obtaining and Installing Server Certificates” for information on using certificates.
-ZZZ option, the following errors could occur, causing the Start TLS operation to fail:
- If there is no certificate database. See Section 14.2.2, “Obtaining and Installing Server Certificates” for information on using certificates.
- If the certificate database does not have the certificate authority (CA) certificate. See Section 14.2.2, “Obtaining and Installing Server Certificates” for information on using certificates.
- The server does not support Start TLS as an extended operation.
"DSA is unwilling to perform".
certutil, which locally creates self-signed CA and client certificates, certificate databases, and keys. The default location for the Directory Server certutil tool is /usr/bin.
certutil can also be downloaded from ftp://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/.
pkcs12 format.
- Open the directory where the Directory Server certificate databases are stored.
cd /etc/dirsrv/slapd-
instance_name - Make a backup copy of all of the filed in the directory as a precaution. If something goes awry with while managing certificates, the databases can then be restored. For example:
tar -cf /tmp/db-backup.tar *
- Create a password file for the security token password.
vi /tmp/pwdfile secretpw
This password locks the server's private key in the key database and is used when the keys and certificates are first created. The password in this file is also the default password to encrypt PK12 files used bypk12util. Because this password is stored in plaintext, the password file should be owned by the user as which Directory Server runs, by defaultnobody, and it must be set as read-only for the Directory Server user and allow no access to anyone else (mode0400). It's a good idea to have a secure backup of this file. - Set the environment variable for the shell to include the
certutildirectory path. For example:export PATH=/usr/bin/:$PATH
The command varies depending on the shell. - Create the key and certificate databases databases.
certutil -N -d . -f /tmp/pwdfile
- Generate the self-signed CA certificate.
certutilcreates the required key pairs and the certificate. This certificate is used to generate the other server certificates and can be exported for use with other servers and clients.certutil -S -n "CA certificate" -s "cn=My Org CA cert,dc=example,dc=com" -2 -x -t "CT,," -m 1000 -v 120 -d . -k rsa -f /tmp/pwdfile
- Generate the Directory Server client certificate.
certutil -S -n "Server-Cert" -s "cn=
FQDN" -c "CA certificate" -t "u,u,u" -m 1001 -v 120 -d . -k rsa -f /tmp/pwdfileThe value of the-sargument is very important. The leftmost RDN must becn=FQDN (where FQDN is the fully-qualified host and domain name of the Directory Server). For example, to issue a certificate for a server with the nameldap.example.com, specify at least-s "cn=ldap.example.com"; it is beneficial to have a more descriptive name to help with server identification, such as"cn=ldap.example.com,ou=DS1". The FQDN must be available for DNS and reverse DNS lookups to Directory Server clients because certificate validation may fail if the clients cannot properly resolve the FQDN, and some clients refuse to connect if a server certificate does not have its FQDN in the subject. Additionally, using the formatcn=hostname.domain is essential for Directory Server clients to protect themselves from man in the middle attacks.NOTE
There should only be onecnin a certificate subject name. To add detail to the subject name, usecnas the RDN and another attribute — likeou,l, orc— for the other subject name elements.To provide a subjectAltName, as well as the nickname, use the-8argument in addition to the-sargument.To use the Directory Server behind a DNS round robin or any other scheme which aliases a single server certificate to multiple hostnames, see the TLS/SSL information about server name wildcards or subjectAltName.Server certificates for other servers are created using a similar command as for the Directory Server certificate. Make sure that every-noption (nickname) and-moption (serial number) is unique for every certificate, and make sure that the-soption gives the correct FQDN for the server.NOTE
Keep careful track on the numbers set with the-moption. The-moption sets the unique identifier for the server certificate, and a CA cannot issue two certificates with the same ID. Keep a log of issued serial numbers so that no number is ever duplicated. - Export the CA certificate for use with other servers and clients. A client usually requires the CA certificate to validate the server certificate in an TLS/SSL connection. Use
certutilto export the CA certificate in ASCII/PEM format:certutil -d . -L -n "CA certificate" -a > cacert.asc
The way that the CA certificate is imported is different for every client. For example,certutilcan import a CA certificate into another Directory Server certificate database:cd /etc/dirsrv/slapd-otherserver certutil -A -d . -n "CA certificate" -t "CT,," -a -i cacert.asc
- Use
pk12utilto export other server certificates and keys created withcertutilso that they can be used on a remote server.pk12util -d . -o ldap1.p12 -n Server-Cert -w /tmp/pwdfile -k /tmp/pwdfile
The-wargument is the password used to encrypt the.p12file for transport. The-kargument specifies the password for the key database containing the server certificate being exported to.p12. - If the Directory Server will run with TLS/SSL enabled, then create a password file (
pin.txt) for the server to use so it will not prompt you for a password every time it restarts. Creating the password file is described in Section 14.2.3.3, “Creating a Password File for the Directory Server”.
certutil are automatically available in the Encryption tab of the Console. There is no need to import them because they are already in the certificate database.
certutil can be used for a variety of tasks to manage certificates and keys, such as generating certificate requests and removing certificates from the certificate database. Some of the most common options are listed in Table 14.1, “certutil Options”. For the full list of commands and arguments, run certutil -H from the command line.
Table 14.1. certutil Options
| Options | Description |
|---|---|
| -x | Creates a self-signed CA certificate. |
| -S | Creates a server or client certificate. |
| -R | Generates a certificate request. |
| -N | Creates new security databases. |
| -L | Lists all of the certificates in the database. |
| -A | Adds a certificate to the certificate database. |
| -n | Gives the name of the certificate. |
| -d | Certificate database directory; this is the directory for the subsystem instance. |
| -m | The serial number for the certificate. |
| -k |
The key type to use; the only option is rsa.
|
| -g | The key size. The recommended size for RSA keys is 2048. |
| -s | The subject name of the certificate. |
| -t | The trust arguments for the certificate, meaning the purposes for which the certificate is allowed to be used. |
| -v | The validity period, in months. |
| numbers 1-8 |
These set the available certificate extensions. Only eight can be specified through the certutil tool:
|
| -a | Outputs the certificate request to an ASCII file instead of binary. |
| -o | The output file to which to save the certificate request. |
| -i | An input file containing a certificate. |
| -f | The path to a password file for the security databases password. |
certutil command.
Table 14.2. certutil Examples
| Example | Description |
|---|---|
| certutil -L -d . | Lists the certificates in the database. |
| certutil -N -d . |
Creates new key (key3.db) and certificate (cert8.db) databases.
|
| certutil -S -n "CA certificate" -s "cn=My Org CA cert,dc=example,dc=com" -2 -x -t "CT,," -m 1000 -v 120 -d . -k rsa | Creates a self-signed CA certificate. |
| certutil -S -n "Server-Cert" -s "cn=FQDN" -c "CA certificate" -t "u,u,u" -m 1001 -v 120 -d . -k rsa | Creates a client certificate. |
| certutil -L -d . -n "cert_name" | "Pretty prints" the specified certificate; the cert_name can specify either a CA certificate or a client certificate. |
| certutil -L -d . -n "cert_name" > certfile.asc | Exports the specified certificate out of the database to ASCII (PEM) format. |
| certutil -L -d . -n "cert_name" -r > certfile.bin |
Exports the specified certificate out of the database to binary format; this can be used with Directory Server attributes such as usercertificate;binary.
|
/etc/dirsrv/slapd-instance_name directory. The Directory Server Console itself also uses certificates and keys for SSL/TLS connections; these certificates are stored in a separate database in a separate location, $HOME/.redhat-idm-console. If the Directory Server Console is used to connect to multiple instances of Directory Server over SSL, then it is necessary to trust every CA which issued the certificates for every Directory Server instance.
NOTE
certutil. The certutil tool is described in more detail in Section 14.2.5, “Using certutil” and in the NSS tool manpages.
certutil -d $HOME/.redhat-idm-console -Lcertutil -d $HOME/.redhat-idm-console -A -t CT,, -a -i /path/to/cacert.ascApr 4 13:00:35 smtp1 logger: [04/Apr/2010:13:00:34 -0700] - attrcrypt_unwrap_key: failed to unwrap key for cipher AES Apr 4 13:00:35 smtp1 logger: [04/Apr/2010:13:00:34 -0700] - Failed to retrieve key for cipher AES in attrcrypt_cipher_init Apr 4 13:00:35 smtp1 logger: [04/Apr/2010:13:00:34 -0700] - Failed to initialize cipher AES in attrcrypt_init Apr 4 13:00:35 smtp1 logger: [04/Apr/2010:13:00:34 -0700] - attrcrypt_unwrap_key: failed to unwrap key for cipher AES Apr 4 13:00:35 smtp1 logger: [04/Apr/2010:13:00:34 -0700] - Failed to retrieve key for cipher AES in attrcrypt_cipher_init Apr 4 13:00:35 smtp1 logger: [04/Apr/2010:13:00:34 -0700] - Failed to initialize cipher AES in attrcrypt_init
- Stop the server.
service dirsrv stop
- Open the
dse.ldiffile.vim /etc/dirsrv/dse.ldif
- There are special encryption key entries for the encryption ciphers used for attribute encryption under the database configuration. For example:
dn:
cn=AES,cn=encrypted attribute keys,cn=userRoot,cn=ldbm database,cn=plugins,cn=config objectClass: top objectClass: extensibleObject cn: AES nssymmetrickey:: mSLm/RlCLvPZrSdARHPowedF9zKx+kjVTww5ARE4w0lbl2YlYvrIg6mUlSsmzMfdhc1BBURhFDNwwUDisHWwiMJRIvHXstx5EGstWE9xokIU+xeMZF8cPJrY1udFSPFc0iKyiCOaPacWpomn/XPaVxkQqBWk4vJzrHHhH1o3bNg=Delete these entries. - Start the server again.
service dirsrv start
As soon as the server restarts, it generates new encryption keys for the encrypted attribute keys.
key3.db and cert8.db, to store the keys and certificates used by the servers.
- Connect the external security device, and install its drivers on the server machine.
- Open the Directory Server Console for the server instance with which to use the security device.
- Open the in the top navigation menu, and select the and then the item.

- In the window, click the button.
- In the configuration box, enter the full path to the driver file for the device and the name for the module.

- Click to save the new module driver.
modutil tool. Because if differences in the way manufacturers implement their modules, some modules (such as nCipher external tokens) must be loaded through the command line rather than the Directory Server Console.
- Connect the external security device, and install its drivers on the server machine.
- Open the security module database directory for the Directory Server instance. For example:
cd /etc/dirsrv/slapd-
instance_name - Use the
-addand-libfilearguments withmodutilto load the PKCS#11 module and it associated libraries. The module_name is the name of the module given when the security device's drivers were installed; the library_file is the full path to the module's library.modutil -dbdir . -nocertdb -add
module_name-libfilelibrary_fileFor example, for an nCipher hardware security module:modutil -dbdir . -nocertdb -add
nethsm-libfile/opt/nfast/toolkits/pkcs11/libcknfast.so - List the loaded modules to make sure that the new PKCS#11 module was added correctly.
modutil -list -dbdir . Listing of PKCS #11 Modules ----------------------------------------------------------- 1. NSS Internal PKCS #11 Module slots: 2 slots attached status: loaded slot: NSS Internal Cryptographic Services token: NSS Generic Crypto Services slot: NSS User Private Key and Certificate Services token: NSS Certificate DB 2. nCipher NetHSM PKCS #11 Module slots: 2 slots attached status: loaded slot: nethsm external cryptographic services token: nethsm crypto services slot: nethsm user private key and certificate services token: nethsm certificate db -----------------------------------------------------------
- Directory Server name. The name of the cipher suite used when configuring the Directory Server. The Directory Server uses this name both internally and in the Directory Server Console.
- Key exchange. The key exchange algorithm. DHE stands for Diffie-Hellman; DSS stands for Digital Signature Standard. The 1024 bit ciphers are lower strength ciphers formerly used for export control.
- Encryption Algorithm. AES stands for the American Encryption Standard. DES stands for Data Encryption Standard.
- Symmetric Key Bit Size. The size in bits of the key used for the actual transport data encryption.
- Message Authentication. SHA stands for Secure Hash Algorithm.
NOTE
Table 14.3. TLSv1 Ciphers
| Directory Server Name | Key Exchange | Encryption Algorithm | Symmetric Key Bit Size | Message Authentication |
|---|---|---|---|---|
| tls_dhe_dss_aes_128_sha | DHE with DHS | AES | 128 | SHA |
| tls_dhe_rsa_aes_128_sha | DHE with RSA | AES | 128 | SHA |
| tls_rsa_aes_256_sha | RSA | AES | 256 | SHA |
| tls_dhe_dss_aes_256_sha | DHE with DSS | AES | 256 | SHA |
| tls_dhe_rsa_aes_256_sha | DHE with RSA | AES | 256 | SHA |
| tls_dhe_dss_1024_rc4_sha | DHE with DSS 1024 bit public key | RC4 | 56 | SHA |
| tls_dhe_dss_rc4_128_sha | DHE with DSS | RC4 | 128 | SHA |
| tls_rsa_export1024_with_rc4_56_sha | RSA with 1024 bit public key | RC4 | 56 | SHA |
| tls_rsa_export1024_with_des_cbc_sha | RSA with 1024 bit public key | DES | 56 | SHA |
Table 14.4. SSLv3 Ciphers
| Directory Server Name | Key Exchange | Encryption Algorithm | Symmetric Key Bit Size | Message Authentication |
|---|---|---|---|---|
| dhe_rsa_3des_sha | DHE with RSA | 3DES | 168 | SHA |
| dhe_rsa_des_sha | DHE with RSA | DES | 56 | SHA |
| dhe_dss_3des_sha | DHE with DSS | 3DES | 168 | SHA |
| dhe_dss_des_sha | DHE with DSS | DES | 56 | SHA |
| rsa_des_sha | RSA | DES | 56 | SHA |
| rsa_3des_sha | RSA | 3DES | 168 | SHA |
| rsa_fips_des_sha | RSA | DES | 56 | SHA |
| rsa_fips_3des_sha | RSA | 3DES | 168 | SHA |
| rsa_rc4_128_md5 | RSA | RC4 | 128 | MD5 |
| rsa_rc4_40_md5 | RSA | RC4 | 40 | MD5 |
| rsa_rc2_40_md5 | RSA | RC2 | 40 | MD5 |
| rsa_null_md5 | RSA | null (none) | N/A | MD5 |
| fortezza | fortezza | fortezza | 80 | SHA |
| fortezza_rc4_128_sha | fortezza | RC4 | 128 | SHA |
| fortezza_null | fortezza | null (none) | N/A | SHA |
- Make sure TLS/SSL is enabled for the server. For instructions on enabling TLS/SSL, see Section 14.2.3, “Configuring the Directory Server to Run in SSL/TLS”.
- Select the Configuration tab, and then select the topmost entry in the navigation tree in the left pane.
- Select the Encryption tab in the right pane.
- Click the Cipher Setting button.

- In the Cipher Preference dialog box, specify which ciphers for the Directory Server to use by selecting them from the list, and click .
Unless there is a security reason not to use a specific cipher, select all of the ciphers, except fornone,MD5.WARNING
Avoid selecting thenone,MD5cipher because the server will use this option if no other ciphers are available on the client, instead of refusing the connection. Thenone,MD5cipher is not secure because encryption does not occur.
NOTE
nsslapd-certdir, in cn=config in dse.ldif lists the directory containing the key, certificate, and security files. The directory name should be unique and specific to the server. For example, the /etc/dirsrv/slapd-instance_name directory contains the key and certificate databases only for the Directory Server instance called instance_name. That directory will not contain key and certificate databases for any other server or client, nor will any of the key, certificate, or other security-related files for instance_name be located in any other directory.
nsslapd-certdir parameter, and the key and certificate file is stored in the /etc/dirsrv/slapd-instance_name directory.
/opt/redhat-ds/slapd-instance/alias, for all security-related files for all servers, and required a unique prefix, such as slapd-instance-, for the key, certificate, and security-related files. The Directory Server used the attributes nsCertFile and nsKeyFile to give the locations for the key and certificate databases.
certmap.conf file. This file provides three kinds of information for each listed CA:
- It maps the distinguished name (DN) in the certificate to a branch point in the LDAP directory.
- It specifies which DN values from the certificate (user name, email address, and so on) the server should use for the purpose of searching the directory.
- It specifies whether the server should go through an additional verification process. This process involves comparing the certificate presented for authentication with the certificate stored in the user's directory entry. By comparing the certificate, the server determines whether to allow access or whether to revoke a certificate by removing it from the user's entry.
- The server must have SSL turned on. See Section 14.2.3, “Configuring the Directory Server to Run in SSL/TLS” for more information.
- The Directory Server must trust the CA who issued the certificate to the client, as described in step 6 of Section 14.2.2.4, “Trusting the Certificate Authority”.
- The subject DN in the certificate must be mapped in the user DN through a mapping in the
certmap.conffile, as in Section 14.2.10.2, “Mapping DNs to Certificates”.
- On the client system, obtain a client certificate from the CA.
- Install the client certificate on the client system.Regardless of how the certificate is sent (either in email or on a web page), there should be a link to click to install the certificate.Record the certificate information that is sent from the CA, especially the subject DN of the certificate because the server must be configured to map it to an entry in the directory. The client certificate resembles the following:
-----BEGIN CERTIFICATE----- MIICMjCCAZugAwIBAgICCEEwDQYJKoZIhvcNAQEFBQAwfDELMAkGA1UEBh MCVVMxIzAhBgNVBAoTGlBhbG9va2FWaWxsZSBXaWRnZXRzLCBJbmMuMR0w GwYDVQQLExRXaWRnZXQgTWFrZXJzICdSJyBVczEpMCcGA1UEAxMgVGVzdC BUZXN0IFRlc3QgVGVzdCBUZXN0IFRlc3QgQ0EwHhcNOTgwMzEyMDIzMzU3 WhcNOTgwMzI2MDIzMzU3WjBPMQswCQYDVQQGEwJVUzEoMCYGA1UEChMfTm V0c2NhcGUgRGlyZWN0b3 ------END CERTIFICATE-----
certutil -L -d
certdbPath-nuserCertName-r >userCert.bincertdbPath is the directory which contains the certificate database; for example, a user certificate for Mozilla Thunderbird is stored in$HOME/.thunderbird. userCertName is the name of the certificate, and userCert.binis the name of the output file for binary format.- On the server, map the subject DN of the certificate to the appropriate directory entry by editing the
certmap.conffile.NOTE
Do not map a certificate-based authentication certificate to a distinguished name undercn=monitor. Mapping a certificate to a DN undercn=monitorcauses the bind operation to fail. Map the certificate to a target located elsewhere in the directory information tree. Make sure that theverifyCertparameter is set toonin thecertmap.conffile. If this parameter is not set toon, Directory Server simply searches for an entry in the directory that matches the information in thecertmap.conffile. If the search is successful, it grants access without actually checking the value of theuserCertificationandusercertificate;binaryattributes. - In the Directory Server, modify the directory entry for the user or identity (if it is another server) who owns the client certificate to add the
usercertificateattribute.- Select the Directory tab, and navigate to the user entry.
- Double-click the user entry, and use the Property Editor to add the
usercertificateattribute, with thebinarysubtype.When adding this attribute, instead of an editable field, the server provides a button.
- Click .A file selector opens. Use it to select the binary file created in step 3.
For information on using the Directory Server Console to edit entries, see Section 3.1.3, “Modifying Directory Entries”.
ldapmodify, ldapdelete, and ldapsearch, see Section 14.2.10.6, “Connecting to the Directory Server with Certificate-Based Authentication” and the Directory Server Configuration and Command-Line Tool Reference.
certmap.conf. This file contains instructions on how to interpret different certificates and how to search the directory for the information that those certificates contain.
dn: uid=jsmith,ou=People,dc=example,dc=com ... cn: John Smith mail: jsmith@example.com
cn=John Smith,e=jsmith@example.com,c=US,o=Example.com
certmap.conf file can be configured so that the server looks for any mail or common name elements in the subject DN and matches them against the entries in the directory. Much like an ldapsearch, the cert mapping defines a search base (DNComps) and search filter (FilterComps).
certmap Example o=Example.com,c=US Example:DNComps dc Example:FilterComps mail,cn
certmap.conf file is stored in the /etc/dirsrv/config folder. The file contains a default mapping as well as mappings for specific CAs.
certmap.conf. The mappings for specific CAs specify what the server should do for client certificates issued by those CAs. All mappings define the following:
- Where in the directory the server should begin its search
- What certificate attributes the server should use as search criteria
- Whether the server should verify the certificate with one that is stored in the directory
certmapname issuer DNname:property [value]name:property [value]...
certmap moz ou=Example CA,o=Example,c=US certmap moz ou=Example CA,o=Example,c=US
DNCompsFilterCompsVerifyCertCmapLdapAttrLibraryInitFn
DNComps is a comma-separated list of relative distinguished name (RDN) keywords used to determine where in the user directory the server should start searching for entries that match the information for the owner of the client certificate. The server gathers values for these keywords from the client certificate and uses the values to form a DN, which determines where the server starts its search in the directory.
DNComps is set to use the o and c RDN keywords, the server starts the search from the o=org, c=country entry in the directory, where org and country are replaced with values from the DN in the certificate.
- If there is not a
DNCompsentry in the mapping, the server uses either theCmapLdapAttrsetting or the entire subject DN in the client certificate to determine where to start searching. - If the
DNCompsentry is present but has no value, the server searches the entire directory tree for entries matching the filter specified byFilterComps.
DNComps:
cnouoclsteormail(but not both)mail
FilterComps is a comma-separated list of RDN keywords used to create a filter by gathering information from the user's DN in the client certificate. The server uses the values for these keywords to form the search criteria for matching entries in the LDAP directory. If the server finds one or more entries in the directory that match the user's information gathered from the certificate, the search is successful and the server performs a verification (if verifycert is set to on).
FilterComps is set to use the e and uid attribute keywords (FilterComps=e,uid), the server searches the directory for an entry whose values for e and uid match the user's information gathered from the client certificate. Email addresses and user IDs are good filters because they are usually unique entries in the directory.
FilterComps:
cnouoclsteormail(but not both)mail
verifycert tells the server whether it should compare the client's certificate with the certificate found in the user's directory entry. The value is either on or off. Setting the value to on ensures that the server will not authenticate the client unless the certificate presented exactly matches the certificate stored in the directory. Setting the value to off disables the verification process.
CmapLdapAttr is the name of the attribute in the directory that contains subject DNs from all certificates belonging to the user. Because this attribute is not a standard LDAP attribute, this attribute must be added to the schema. See Section 6.4.2, “Creating Attributes” for information on adding schema elements.
CmapLdapAttr property exists in a certmap.conf mapping, the server searches the entire directory for an entry that contains the subject's full DN. The search criteria are the attribute named by CmapLdapAttr and the subject's full DN as listed in the certificate. If the search doesn't yield any entries, the server retries the search using the DNComps and FilterComps mappings. The search will take place more quickly if the attribute specified by CmapLdapAttr is indexed. For more information on indexing attributes, see Chapter 7, Managing Indexes.
CmapLdapAttr to match a certificate to a directory entry is useful when it is difficult to match entries using DNComps and FilterComps.
Library is the pathname to a shared library or DLL. Use this property only to extend or replace the standard functions that map information in certmap.conf to entries in the directory. This property is typically not necessary unless there are very specialized mapping requirements.
InitFn is the name of an init function from a custom library. You need to use this property only if you want to extend or replace the functions that map information in certmap.conf to entries in the directory. This property is typically not necessary unless you have very specialized mapping requirements.
- In a text editor, open
/etc/dirsrv/config/certmap.conf - If necessary, make changes to the default mapping.For example, change the value for
DNCompsorFilterComps. To comment out a line, insert a#before it. - If desired, create a mapping for a specific CA.The mapping should take the form
certmapmappingName issuerDN.For example, to create a mapping namedExample CAwhich has the issuer DNou=example CA,o=example,c=US, enter the following:certmap example CA ou=example CA,o=example,c=US
- Add property settings for a specific CA's mapping.Specify the
LibraryandInitFnproperties before adding any additional properties.When adding a property, use the form mappingName:propertyName value.For example, add aDNCompsvalue ofo, cforExample CAby entering the following line:example CA:DNComps o, c
For theLibraryandInitFnproperties, a complete mapping looks like this:certmap Example CA ou=example CA,o=example,c=US Example CA:Library /ldapserver/ldap/servers/slapd/plugin.c Example CA:InitFn plugin_init_dn Example CA:DNComps o, c Example CA:FilterComps e, uid Example CA:VerifyCert on Example CA:CmapLdapAttr certSubjectDN
- Save the
certmap.conffile.
ou=organizationalUnit, o=organization, c=country, where the italics represent values from the subject's DN in the client certificate.
Example 14.1. Default Mapping
certmap default default default:DNComps ou, o, c default:FilterComps e, uid default:verifycert on
e (email address) and uid (user ID) from the certificate to search for a match in the directory before authenticating the user. When it finds a matching entry, the server verifies the certificate by comparing the certificate the client sent to the certificate stored in the directory.
certmap.conf file that defines a default mapping as well as a mapping for MyCA:
Example 14.2. An Additional Mapping
certmap default default default:DNComps default:FilterComps e, uid certmap MyCA ou=MySpecialTrust,o=MyOrg,c=US MyCA:DNComps ou,o,c MyCA:FilterComps e MyCA:verifycert on
e) and user ID (uid). If the certificate is from MyCA, the server starts its search at the directory branch containing the organizational unit specified in the subject DN and searches for email addresses (e) that match the one specified in the certificate. If the certificate is from MyCA, the server verifies the certificate. If the certificate is from another CA, the server does not verify it.
CmapLdapAttr property to search the directory for an attribute called certSubjectDN whose value exactly matches the entire subject DN in the client certificate:
Example 14.3. A Mapping with an Attribute Search
certmap MyCo ou=My Company Inc,o=MyCo,c=US MyCo:CmapLdapAttr certSubjectDN MyCo:DNComps o, c MyCo:FilterComps mail, uid MyCo:verifycert on
uid=jsmith,o=example Inc,c=US, then the server searches for entries that have certSubjectDN=uid=jsmith,o=example Inc,c=US.
DNComps and FilterComps to search for matching entries. For the client certificate described above, the server would search for uid=jsmith in all entries under o=example Inc,c=US.
- Click the Configuration tab.
- With the top server entry highlighted in the left navigation pane, click the Encryption tab in the main window.
- Set whether to require or allow client authentication to the Directory Server.

- Do not allow client authentication. With this option, the server ignores the client's certificate. This does not mean that the bind will fail.
- Allow client authentication. This is the default setting. With this option, authentication is performed on the client's request.
- Require client authentication. With this option, the server requests authentication from the client.If client authentication is required, then SSL cannot be used with the Console because The Directory Server Console does not support client authentication.
NOTE
To use certificate-based authentication with replication, configure the consumer server either to allow or to require client authentication.NOTE
The Directory Server must already be configured to run over TLS/SSL or Start TLS for client authentication to be enabled. - Save the changes, and restart the server. For example:
service dirsrv restart
nsSSLClientAuth parameter:
/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 -D "cn=directory manager" -N "Server-Cert" -p 636 -host server.example.com dn: cn=encryption,cn=config changetype: modify replace: nsSSLClientAuth nsSSLClientAuth: allowed
nsSSLClientAuth parameter can be set to off, allowed, and required.
ldapsearch. This requires four parameters:
-Pto give certificate database's filename and path-Nto give the SSL certificate name-Kto specify the private key database's filename and path-Wto give the password to the private key database
/usr/lib64/mozldap/ldapsearch -p 389 -h server.example.com -D "uid=jsmith,ou=people,dc=example,dc=com" -P /home/jsmith/alias/cert8.db -N "My Cert" -K /home/jsmith/alias/key3.db -W secretldapmodify, ldapdelete, and ldapsearch, see the Directory Server Configuration and Command-Line Tool Reference.
nsslapd-force-sasl-external) forces clients in certificate-based authentication to send the bind request using the SASL/EXTERNAL method.
/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 -D "cn=directory manager" -w secret -p 636 -h server.example.com dn: cn=config changetype: modify replace: nsslapd-force-sasl-external nsslapd-force-sasl-external: on
- Open the Directory Server Console.
- In the Tasks tab, click the button.

- Click the Server Certs tab.
- Select the certificate to renew from the list of certificates, and click the button.

- Go through the request wizard, using the same information used for requesting the original certificate.
- Submit the request to a certificate authority.
- Once the certificate is issued, reinstall it in the Directory Server.
- In the Tasks tab, click the button.
- Click the Server Certs tab.
- Click the button.
- Paste in the renewed certificate, and continue through the installation wizard.
- In the Tasks tab, click the button.
- Click the CA Certs tab.

- Select the CA certificate to edit.
- Click the button.
- Set the CA trust options.

- Accepting connections from clients (Client Authentication). This option sets whether to accept client, or user, certificates issued by the CA.
- Making connections to other servers (Server Authentication). This option sets whether to accept server certificates issued by the CA.
- Click .
- In the Tasks tab, click the button.

- In the top of the window, choose a security device from the drop-down list.

- Click the button.
- In the Change Security Device Password dialog box, enter the old password, and then enter and confirm the new password.

- Click .
- Obtain the CRL from the CA; these can usually be downloaded from the CA's website.
- In the Tasks tab, click the button.

- Select the Revoked Certs tab.
- To add a CRL, click at the bottom of the window, and enter the full path to the CRL file.

- Click .
ldapsearch and ldapmodify. For example:
/usr/lib64/mozldap/ldapsearch -p 389 -h server.example.com -o "mech=GSSAPI" -o "authid=dn:uid=jsmith,ou=people,dc=example,dc=com" -o realm=EXAMPLE.COM
NOTE
authzid value supplied by the client.
- The authentication method, in this example GSS-API
- The user as whom you are authenticating (the
authidor authorization ID)
authid and maps that entry back to an entry in the Directory Server. If the authid is defined as a DN (as in authid=dn:DN), this is done simply by matching the DN. It is also possible to use a username or a part of a DN, and these can be mapped to the directory entry using SASL identity mappings.
scarter@EXAMPLE.COM. This ID must be converted into the DN of the user's Directory Server entry, such as uid=scarter,ou=people,dc=example,dc=com.
dn: cn=sasl,cn=config objectClass: top objectClass: nsContainer cn: sasl
dn: cn=mapping,cn=sasl,cn=config objectClass: top objectClass: nsContainer cn: mapping
- nsSaslMapRegexString, the regular expression which is used to map the elements of the supplied
authid - nsSaslMapFilterTemplate, a template which applies the elements of the
nsSaslMapRegexStringto create the DN - nsSaslMapBaseDNTemplate, which provides the search base or a specific entry DN to match against the constructed DN
dn: cn=mymap,cn=mapping,cn=sasl,cn=config objectclass:top objectclass:nsSaslMapping cn: mymap nsSaslMapRegexString: \(.*\)@\(.*\)\.\(.*\) nsSaslMapFilterTemplate: (objectclass=inetOrgPerson) nsSaslMapBaseDNTemplate: uid=\1,ou=people,dc=\2,dc=\3
nsSaslMapRegexString attribute sets variables of the form \1, \2, \3 for bind IDs which are filled into the template attributes during a search. This example sets up a SASL identity mapping for any user in the ou=People,dc=example,dc=com subtree who belongs to the inetOrgPerson object class.
mconnors@EXAMPLE.COM as the user ID (authid), the regular expression fills in the base DN template with uid=mconnors,ou=people,dc=EXAMPLE,dc=COM as the user ID, and authentication proceeds from there.
NOTE
dc values are not case sensitive, so dc=EXAMPLE and dc=example are equivalent.
dn: cn=example map,cn=mapping,cn=sasl,cn=config objectclass: top objectclass: nsSaslMapping cn: example map nsSaslMapRegexString: \(.*\) nsSaslMapBaseDNTemplate: ou=People,dc=example,dc=com nsSaslMapFilterTemplate: (cn=\1)
ou=People,dc=example,dc=com subtree which meets the filter cn=userId.
nsSaslMapRegexString attribute. For example:
dn: cn=example map,cn=mapping,cn=sasl,cn=config
objectclass: top
objectclass: nsSaslMapping
cn: example map
nsSaslMapRegexString: \(.*\)@US.EXAMPLE.COM
nsSaslMapBaseDNTemplate: ou=People,dc=example,dc=com
nsSaslMapFilterTemplate: (cn=\1)US.EXAMPLE.COM realm. (Realms are described in Section 14.3.4.1, “About Principals and Realms”.)
ldap1.example.com server to the cn=replication manager,cn=config entry. The mapping entry itself is created on the second server, such as ldap2.example.com.
dn: cn=z,cn=mapping,cn=sasl,cn=config objectclass: top objectclass: nsSaslMapping cn: z nsSaslMapRegexString: ldap/ldap1.example.com@EXAMPLE.COM nsSaslMapBaseDNTemplate: cn=replication manager,cn=config nsSaslMapFilterTemplate: (objectclass=*)
dn: cn=y,cn=mapping,cn=sasl,cn=config objectclass: top objectclass: nsSaslMapping cn: y nsSaslMapRegexString: ldap/ldap1.example.com nsSaslMapBaseDNTemplate: cn=replication manager,cn=config nsSaslMapFilterTemplate: (objectclass=*)
cn=z mapping (the first example) is processed first. If there is no match, the server processes the cn=y mapping (the second example).
TIP
ConfigFile directive. Using silent installation is described in the Installation Guide.
@example.com. The realm is then used to define the search base, and the user ID (authid) defines the filter. The search base is dc=example,dc=com and the filter of (uid=user).
dn: cn=Kerberos uid mapping,cn=mapping,cn=sasl,cn=config objectClass: top objectClass: nsSaslMapping cn: Kerberos uid mapping nsSaslMapRegexString: \(.*\)@\(.*\)\.\(.*\) nsSaslMapBaseDNTemplate: dc=\2,dc=\3 nsSaslMapFilterTemplate: (uid=\1)
authid that is a valid DN (defined in RFC 2829) prefixed by dn:. The authid maps directly to the specified DN.
dn: cn=rfc 2829 dn syntax,cn=mapping,cn=sasl,cn=config objectClass: top objectClass: nsSaslMapping cn: rfc 2829 dn syntax nsSaslMapRegexString: ^dn:\(.*\) nsSaslMapBaseDNTemplate: \1 nsSaslMapFilterTemplate: (objectclass=*)
authid that is a UID prefixed by u:. The value specified after the prefix defines a filter of (uid=value). The search base is hard-coded to be the suffix of the default userRoot database.
dn: cn=rfc 2829 u syntax,cn=mapping,cn=sasl,cn=config objectClass: top objectClass: nsSaslMapping cn: rfc 2829 u syntax nsSaslMapRegexString: ^u:\(.*\) nsSaslMapBaseDNTemplate: dc=example,dc=com nsSaslMapFilterTemplate: (uid=\1)
authid that is any plain string that does not match the other default mapping rules. It use this value to define a filter of (uid=value). The search base is hard-coded to be the suffix of the default userRoot database.
dn: cn=uid mapping,cn=mapping,cn=sasl,cn=config objectClass: top objectClass: nsSaslMapping cn: uid mapping nsSaslMapRegexString: ^[^:@]+$ nsSaslMapBaseDNTemplate: dc=example,dc=com nsSaslMapFilterTemplate: (uid=&)
- Generic Security Services (GSS-API). Generic Security Services (GSS) is a security API that is the native way for UNIX-based operating systems to access and authenticate Kerberos services. GSS-API also supports session encryption, similar to TLS/SSL. This allows LDAP clients to authenticate with the server using Kerberos version 5 credentials (tickets) and to use network session encryption.For Directory Server to use GSS-API, Kerberos must be configured on the host machine. See Section 14.3.4, “About Kerberos with Directory Server”.
NOTE
GSS-API and, thus, Kerberos are only supported on platforms that have GSS-API support. To use GSS-API, it may be necessary to install the Kerberos client libraries; any required Kerberos libraries will be available through the operating system vendor.
NOTE
DIGEST-MD5 requires clear text passwords. The Directory Server requires the clear text password in order to generate the shared secret. Passwords already stored as a hashed value, such as SHA1, cannot be used with DIGEST-MD5.
NOTE
uid=user_name/[server_instance],cn=realm,cn=mechanism,cn=auth
engineering realm of the European division of example.com uses the following association to access a server in the US realm:
uid=mconnors/cn=Europe.example.com,cn=engineering,cn=gssapi,cn=auth
accounting realm of US.example.com, does not have to specify a realm when to access a local server:
uid=bjensen,cn=accounting,cn=gssapi,cn=auth
NOTE
kinit, klist, and kdestroy — can acquire, list, and destroy the TGT. These tools usually use a file called a keytab to the issued keys. This file is created by the Kerberos administrator by exporting the key from the KDC.
KRB5_KTNAME environment variable in its startup script (/etc/sysconfig/dirsrv):
KRB5_KTNAME=/etc/dirsrv/ds.keytab ; export KRB5_KTNAME
kinit command to initiate the connection:
kinit -k -t /etc/dirsrv/ds.keytab ldap/FQDN@REALMldap. Its Kerberos principal is ldap/host-fqdn@realm, such as ldap/ldap.corp.example.com/EXAMPLE.COM. The host-fqdn must be the fully-qualified host and domain name, which can be resolved by all LDAP and Kerberos clients through both DNS and reverse DNS lookups. A key with this identity must be stored in the server's keytab in order for Kerberos to work.
ldap/server.example.com@EXAMPLE.COM) to a real entry DN in the receiving server.
/etc/krb5.conf.
company.example.com realm.
Example 14.4. KDC Server Configuration
[libdefaults]
ticket_lifetime = 24000
default_realm = COMPANY.EXAMPLE.COM
dns_lookup_realm = false
dns_lookup_kdc = false
ccache_type = 1
forwardable = true
proxiable = true
default_tgs_enctypes = des3-hmac-sha1 des-cbc-crc
default_tkt_enctypes = des3-hmac-sha1 des-cbc-crc
permitted_enctypes = des3-hmac-sha1 des-cbc-crc
[realms]
COMPANY.EXAMPLE.COM = {
kdc = kdcserver.company.example.com:88
admin_server =adminserver.company.example.com:749
default_domain = company.example.com
}
[appdefaults]
pam = {
debug = true
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false
}
[logging]
default = FILE:/var/krb5/kdc.log
kdc = FILE:/var/krb5/kdc.log
admin_server = FILE:/var/log/kadmind.logkerberos_v5) is not the first one listed in the Solaris /etc/gss/mech file. This is the default /etc/gss/mech file:
diffie_hellman_640_0 1.3.6.4.1.42.2.26.2.4 dh640-0.so.1
diffie_hellman_1024_0 1.3.6.4.1.42.2.26.2.5 dh1024-0.so.1
kerberos_v5 1.2.840.113554.1.2.2 gl/mech_krb5.so gl_kmech_krb5kerberos_v5 module isn't the first one listed, then kinit fails even if the keytab file is working and /etc/krb5/krb5.conf is properly configured. To allow SASl to work on Solaris, move the kerberos_v5 line to the top of the file:
kerberos_v5 1.2.840.113554.1.2.2 gl/mech_krb5.so gl_kmech_krb5
diffie_hellman_640_0 1.3.6.4.1.42.2.26.2.4 dh640-0.so.1
diffie_hellman_1024_0 1.3.6.4.1.42.2.26.2.5 dh1024-0.so.1des-cbc-crc. This can be done using the ktadd command on Solaris:
ktadd -kUser.keytab -e des-cbc-crc:normalUser@EXAMPLE.COM ktadd -k Server.keytab -e des-cbc-crc:normal ldap/FQDN@EXAMPLE.COM
- In the Directory Server Console, open the Configuration tab.
- Select the SASL Mapping tab.

- To add a new SASL identity mapping, select the button, and fill in the required values.

- Name. This field sets the unique name of the SASL mapping.
- Regular expression. This field sets the regular expression used to match the DN components, such as
\(.*\). This field corresponds to thensSaslMapRegexStringvalue in the SASL mapping LDIF entry. - Search base DN. This field gives the base DN to search to map entries, such as
ou=People,dc=example,dc=com. This field corresponds to thensSaslMapBaseDNTemplatevalue in the SASL mapping LDIF entry. - Search filter. This field gives the search filter for the components to replace, such as
(objectclass=*). This field corresponds to thensSaslMapFilterTemplatevalue in the SASL mapping LDIF entry.
ldapmodify utility to add the identity mapping scheme. For example:
/usr/lib64/mozldap/ldapmodify -a -D "cn=directory manager" -w secret -p 389 -h server.example.com
dn: dn: cn=example map,cn=mapping,cn=sasl,cn=config
objectclass: top
objectclass: nsSaslMapping
cn: example map
nsSaslMapRegexString: \(.*\)
nsSaslMapBaseDNTemplate: ou=People,dc=example,dc=com
nsSaslMapFilterTemplate: (cn=\1)ou=People,dc=example,dc=com, based on the filter cn=userId.
NOTE
ldapmodify adds the mapping to the end of the list, regardless of its ASCII order.
/etc/sysconfig/dirsrv.
dirsrv-instance. For example, dirsrv-example. The default dirsrv file can be used if there is a single instance on a host.
KRB5_KTNAME line in the /etc/sysconfig/dirsrv (or instance-specific) file, and set the keytab location for the KRB5_KTNAME variable. For example:
# In order to use SASL/GSSAPI the directory
# server needs to know where to find its keytab
# file - uncomment the following line and set
# the path and filename appropriately
KRB5_KTNAME=/etc/dirsrv/krb5.keytab ; export KRB5_KTNAMEkinit and then specifying the cached credentials.
kinit credentials, add the principal as the KRB5CCNAME line in /etc/sysconfig/dirsrv:
KRB5CCNAME=/tmp/krb_ccache ; export KRB5CCNAME
kinit principalname
# how to provide the password here is left as an exercise
# or kinit -k -t /path/to/file.keytab principalname
chown serveruid:serveruid $KRB5CCNAME
# so the server process can read it
# start a cred renewal "daemon"
( while XXX ; do sleep NNN ; kinit ..... ; done ) &
# the exit condition XXX and sleep interval NNN are left as an exercise
...kinit process must be run manually, external to Directory Server processes, or the server could begin receiving SASL bind failures when the server attempts to use expired credentials.
- The access contains information on client connections and connection attempts to the Directory Server instance.
- The error log contains detailed messages of errors and events the directory experiences during normal operations.
WARNING
If the Directory Server fails to write to the errors log, the server sends the message tosyslogand exits.
NOTE
http://hostname:admin_server_port- In the Directory Server Console, select the Status tab.
- In the navigation tree, expand the Log folder. There are three folders available, for the access, error, and audit logs.

- When you select the log type to view, a table displays a list of the last 25 entries in the selected log.
- Optionally, change the settings oif the log display and click to update the display.

- The Select Log pull-down menu allows you to select an archived (rotated) log rather than the currently active log.
- The Lines to show text box changes the number of log entries to display in the window.
- The Show only lines containing text box sets a filter, including regular expressions, to use to display only certain matching log entries.
NOTE
NOTE
- Select the Configuration tab.
- In the navigation tree, expand the Log folder, and select the folder for the log to enable or disable.
- To enable or disable logging, select the Enable Logging checkbox.

- If the log is being enabled, then enter the full path and filename for the directory to use for the audit log in the field provided. The default path is
/var/log/dirsrv/slapd-type, such asinstance_name//var/log/dirsrv/slapd-.instance_name/access - Click .
- The access mode or file permissions with which log files are to be created. The default value is
600. The valid values are any combination of000to777, as they mirror numbered or absolute UNIX file permissions. This value must be a combination of a 3-digit number, the digits varying from0through7:0— None1— Execute only2— Write only3— Write and execute4— Read only5— Read and execute6— Read and write7— Read, write, and executeIn the 3-digit number, the first digit represents the owner's permissions, the second digit represents the group's permissions, and the third digit represents everyone's permissions. When changing the default value, keep in mind that000will not allow access to the logs and that allowing write permissions to everyone can result in the logs being overwritten or deleted by anyone.The newly configured access mode will only affect new logs that are created; the mode will be set when the log rotates to a new file. - The maximum number of logs for the directory to keep. When the directory reaches this number of logs, it deletes the oldest log file in the folder before creating a new log. The default is
10logs. Do not set this value to1, or the directory will not rotate the log, and the log will grow indefinitely. - The maximum size (in megabytes) for each log file. To keep from setting a maximum size, type
-1in this field. The default is100megabytes. Once a log file reaches this maximum size (or the maximum age), the directory archives the file and starts a new one. Setting the maximum number of logs to1causes the directory to ignore this attribute. - How often the directory archives the current log file and creates a new one. The maximum age of the file can be set in minutes, hours, days, weeks, or months. The logs can also be rotated at a particular time of the day; for example, every day at midnight. The default is every day. Setting the maximum number of logs to
1causes the directory to ignore this attribute.
Red Hat-Directory/version build_number hostname:port(/etc/dirsrv/slapd-instance_name)
Red Hat-Directory/8.2 B2007.188.1157 myhost.example.com:389 (/usr/lib/dirsrv/slapd-example)
NOTE
- The maximum size of the combined archived logs. When the maximum size is reached, the oldest archived log is automatically deleted. The default size is
-1, which sets an unlimited maximum size. This parameter is ignored if the maximum number of log files is set to1. - The minimum amount of free disk space. When the free disk space reaches this minimum value, the oldest archived log is automatically deleted. The default is
-1, which means that the server does not check or require a minimum amount of free disk space. This parameter is ignored if the maximum number of log files is set to1. - The maximum age of log files. When a log file reaches this maximum age, it is automatically deleted. The default is
1month. This parameter is ignored if the maximum number of log files is set to1.
/var/log/dirsrv/slapd-instance_name- Shut down the server.
service dirsrv stop
instance - Move or rename the log file being rotated so that the old log file is available for future reference.
- Restart the server.
service dirsrv restart
instance
nsslapd-accesslog-level attribute. The access log levels are as follows:
- 0 - No access logging
- 4 - Logging for internal access operations
- 256 - Logging for connections, operations, and results
- 512 - Logging for access to an entry and referrals
- 131072 - Provides microsecond operation timing
516 (4 + 512) sets internal access operation, entry access, and referral logging.
nsslapd-errorlog-level attribute or through the Directory Server Console.

- 1 — Trace function calls. Logs a message when the server enters and exits a function.
- 2 — Debug packet handling.
- 4 — Heavy trace output debugging.
- 8 — Connection management.
- 16 — Print out packets sent/received.
- 32 — Search filter processing.
- 64 — Config file processing.
- 128 — Access control list processing.
- 1024 — Log communications with shell databases.
- 2048 — Log entry parsing debugging.
- 4096 — Housekeeping thread debugging.
- 8192 — Replication debugging.
- 16384 — Default level of logging used for critical errors and other messages that are always written to the error log; for example, server startup messages. Messages at this level are always included in the error log, regardless of the log level setting.
- 32768 — Database cache debugging.
- 65536 — Server plug-in debugging. It writes an entry to the log file when a server plug-in calls
slapi-log-error. - 131072 — Microsecond resolution for timestamps instead of the default seconds.
- 262144 — Access control summary information, much less verbose than level
128. This value is recommended for use when a summary of access control processing is needed. Use128for very detailed processing messages.
NOTE
- Logging certain events, like failed bind attempts or connections from specific users or IP addresses
- Logging entries which match a specific regular expression pattern
- Keeping the log to a certain length (logging only the last number of lines)
- Sending a notification, such as an email, when an event occurs
ds-logpipe.py
/path/to/named_pipe
[
--user pipe_user
] [
--maxlines number
] [[
--serverpidfile file.pid
] | [
--serverpid PID
]] [
--servertimeout seconds
] [
--plugin=/path/to/plugin.py
| [
pluginfile.arg=value
]]
ds-logpipe.py /var/log/dirsrv/slapd-example/access
ds-logpipe.py in this way has the advantage of being simple to implement and not requiring any Directory Server configuration changes. This is useful for fast debugging or monitoring, especially if you're looking for a specific type of event.
- The log file to use has to be changed to the pipe (
nsslapd-*log, where the * can be access, error, or audit[10], depending on the log type being configured) - Buffering should be disabled because the script already buffers the log entries (
nsslapd-*log-logbuffering) - Log rotation should be disabled so that the server doesn't attempt to rotate the named pipe (
nsslapd-*log-maxlogsperdir,nsslapd-*log-logexpirationtime, andnsslapd-*log-logrotationtime)
ldapmodify.
access.pipe:
/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 -h server.example.com
dn: cn=config
changetype: modify
replace: nsslapd-accesslog
nsslapd-accesslog: /var/log/dirsrv/slapd-instance_name/access.pipe
-
replace: nsslapd-accesslog-logbuffering
nsslapd-accesslog-logbuffering: off
-
replace: nsslapd-accesslog-maxlogsperdir
nsslapd-accesslog-maxlogsperdir: 1
-
replace: nsslapd-accesslog-logexpirationtime
nsslapd-accesslog-logexpirationtime: -1
-
replace: nsslapd-accesslog-logrotationtime
nsslapd-accesslog-logrotationtime: -1TIP
NOTE
dse.ldif file before it can be called at server startup.
- Open the instance configuration file for the server system.
/etc/sysconfig/dirsrv-
instance_nameWARNING
Do not edit the/etc/sysconfig/dirsrvfile. - At the end of the file, there will be a line that reads:
# Put custom instance specific settings below here.
Below that line, insert theds-logpipe.pycommand to launch when the server starts. For example:# only keep the last 1000 lines of the error log python /usr/bin/ds-logpipe.py /var/log/dirsrv/slapd-example/errors.pipe -m 1000 -u nobody -s /var/run/dirsrv/slapd-example.pid > /var/log/dirsrv/slapd-example/errors & # only log failed binds python /usr/bin/ds-logpipe.py /var/log/dirsrv/slapd-example/access.pipe -u nobody -s /var/run/dirsrv/slapd-example.pid --plugin=/usr/share/dirsrv/data/failedbinds.py failedbinds.logfile=/var/log/dirsrv/slapd-example/access.failedbinds &
NOTE
The-soption both specifies the .pid file for the server to write its PID to and sets the script to start and stop with the server process.
- The plug-in function is called for every line read from the named pipe.
- The plug-in function must be a Python script and must end in
.py. - Any plug-in arguments are passed in the command line to the named pipe log script.
- A pre-operation function can be specified for when the plug-in is loaded.
- A post-operation function can be called for when the script exits.
ds-logpipe.py to use for plug-ins:
- The
--pluginoption gives the path to the plug-in file (which must be a Python script and must end in.py). - The plugin.arg option passes plug-in arguments to the named pipe log script. The plug-in file name (without the
.pyextension) is plugin and any argument allowed in that plug-in can be arg .
ds-logpipe.py /var/log/dirsrc/slapd-example/errors.pipe --plugin=/usr/share/dirsrv/data/example-funct.py example-funct.regex="warning" > warnings.txtarg1:
--plugin=/path/to/pluginname.py pluginname.arg1=foo pluginname.arg1=bar pluginname.arg2=baz
{'arg1': ['foo', 'bar'], 'arg2': 'baz'}
dict object with two keys. The first key is the string arg1, and its value is a Python list object with two elements, the strings foo and bar. The second key is the string arg2, and its value is the string baz. If an argument has only a single value, it is left as a simple string. Multiple values for a single argument name are converted into a list of strings.
ds-logpipe.py command expects up to three functions in any plug-in: plugin (), pre (), and post ().
ds-logpipe.py command must specify the plugin function.
plugin () function is performed against every line in the log data, while the pre () and post () functions are run when the script is started and stopped, respectively.
Example 15.1. Simple Named Pipe Log Plug-in
def pre(myargs): retval = True myarg = myargs['argname'] if isinstance(myarg, list): # handle list of values else: # handle single value if bad_problem: retval = False return retval def plugin(line): retval = True # do something with line if something_is_bogus: retval = False return retval def post(): # no arguments # do something # no return value
nsslapd-db-active-txns), the number of operations (threads), and the number of search requests (nsslapd-db-cache-try). However, under heavy loads, these 32-bit counter numbers can wrap too quickly. The nsslapd-counters attribute enabled the Directory Server to use 64-bit values for counter numbers, even on 32-bit systems. This enables long term statistics gathering for high-traffic systems.
- opsinitiated
- opscompleted
- entriessent
- bytessent
- totalconnections
- Select the Status tab.
- In the navigation tree, select Performance Counters.
The Status tab in the right pane displays current information about server activity. If the server is currently not running, this tab will not provide performance monitoring information. - Click to refresh the current display. For the server to continuously update the displayed information, select the Continuous checkbox.

Table 15.1. General Information (Server)
| Field | Description |
|---|---|
| Server Version | Identifies the current server version. |
| Startup Time on Server | The date and time the server was started. |
| Current Time on Server | The current date and time on the server. |

Table 15.2. Resource Summary
| Resource | Usage Since Startup | Average Per Minute |
|---|---|---|
| Connections | The total number of connections to this server since server startup. | Average number of connections per minute since server startup. |
| Operations Initiated | The total number of operations initiated since server startup. Operations include any client requests for server action,such as searches, adds, and modifies. Often, multiple operations are initiated for each connection. | Average number of operations per minute since server startup. |
| Operations Completed | The total number of operations completed by the server since server startup. | Average number of operations per minute since server startup. |
| Entries Sent to Clients | The total number of entries sent to clients since server startup. Entries are sent to clients as the result of search requests. | Average number of entries sent to clients per minute since server startup. |
| Bytes Sent to Clients | The total number of bytes sent to clients since server startup. | Average number of bytes sent to clients per minute since server startup. |

Table 15.3. Current Resource Usage
| Resource | Current Total |
|---|---|
| Active Threads | The current number of active threads used for handling requests. Additional threads may be created by internal server tasks, such as replication or chaining. |
| Open Connections | The total number of open connections. Each connection can account for multiple operations, and therefore multiple threads. |
| Remaining Available Connections | The total number of remaining connections that the server can concurrently open. This number is based on the number of currently open connections and the total number of concurrent connections that the server is allowed to open. In most cases, the latter value is determined by the operating system and is expressed as the number of file descriptors available to a task. |
| Threads Waiting to Write to Client | The total number of threads waiting to write to the client. Threads may not be immediately written when the server must pause while sending data to a client. Reasons for a pause include a slow network, a slow client, or an extremely large amount of information being sent to the client. |
| Threads Waiting to Read from Client | The total number of threads waiting to read from the client. Threads may not be immediately read if the server starts to receive a request from the client, and then the transmission of that request is halted for some reason. Generally, threads waiting to read are an indication of a slow network or client. |
| Databases in Use | The total number of databases being serviced by the server. |

Table 15.4. Connection Status
| Table Header | Description | ||
|---|---|---|---|
| Time Opened | The time on the server when the connection was initially opened. | ||
| Started | The number of operations initiated by this connection. | ||
| Completed | The number of operations completed by the server for this connection. | ||
| Bound as |
The distinguished name used by the client to bind to the server. If the client has not authenticated to the server, the server displays not bound in this field.
| ||
| Read/Write |
Indicates whether the server is currently blocked for read or write access to the client. There are two possible values:
|

NOTE
cn=monitor,cn=database_instance,cn=ldbm database,cn=plugins,cn=config, as are the other database activities. Monitoring these entries through the command line is covered in Section 15.6.2, “Monitoring Databases from the Command Line”.
Table 15.5. Global Database Cache Information
| Table Header | Description |
|---|---|
| Hits | The number of times the server could process a request by obtaining data from the cache rather than by going to the disk. |
| Tries | The total number of database accesses since server startup. |
| Hit Ratio | The ratio of cache tries to successful cache hits. The closer this number is to 100%, the better. |
| Pages Read In | The number of pages read from disk into the cache. |
| Pages Written Out | The number of pages written from the cache back to disk. |
| Read-Only Page Evicts | The number of read-only pages discarded from the cache to make room for new pages. Pages discarded from the cache have to be written to disk, possibly affecting server performance. The lower the number of page evicts the better. |
| Read-Write Page Evicts |
The number of read-write pages discarded from the cache to make room for new pages. This value differs from Pages Written Out in that these are discarded read-write pages that have not been modified. Pages discarded from the cache have to be written to disk, possibly affecting server performance. The lower the number of page evicts, the better.
|
ldapsearch[11], with the following characteristics:
- Search with the attribute filter
objectClass=*. - Use the search base
cn=monitor; the monitoring attributes for the server are found in thecn=monitorentry. - Use the search scope
base.
/usr/lib64/mozldap/ldapsearch -D "cn=directory manager" -w secret -p 389 -h server.example.com -s base -b "cn=monitor" "(objectclass=*)"
cn=monitor entry. For information on searching the Directory Server, see Section 8.2, “Using ldapsearch”.
ldapsearch shows the following information:
Table 15.6. Server Monitoring Attributes
| Attribute | Description | ||||||
|---|---|---|---|---|---|---|---|
| version | Identifies the directory's current version number. | ||||||
| threads | The current number of active threads used for handling requests. Additional threads may be created by internal server tasks, such as replication or chaining. | ||||||
| connection:fd:opentime:opsinitiated:opscompleted:binddn:[rw] |
Provides the following summary information for each open connection (only available if you bind to the directory as Directory Manager):
| ||||||
| currentconnections | Identifies the number of connections currently in service by the directory. | ||||||
| totalconnections | Identifies the number of connections handled by the directory since it started. | ||||||
| dtablesize |
Shows the number of file descriptors available to the directory. Each connection requires one file descriptor: one for every open index, one for log file management, and one for ns-slapd itself. Essentially, this value shows how many additional concurrent connections can be serviced by the directory. For more information on file descriptors, refer to the operating system documentation.
| ||||||
| readwaiters | Identifies the number of threads waiting to read data from a client. | ||||||
| opsinitiated | Identifies the number of operations the server has initiated since it started. | ||||||
| opscompleted | Identifies the number of operations the server has completed since it started. | ||||||
| entriessent | Identifies the number of entries sent to clients since the server started. | ||||||
| bytessent | Identifies the number of bytes sent to clients since the server started. | ||||||
| currenttime | Identifies the time when this snapshot of the server was taken. The time is displayed in Greenwich Mean Time (GMT) in UTC format. | ||||||
| starttime | Identifies the time when the server started. The time is displayed in Greenwich Mean Time (GMT) in UTC format. | ||||||
| nbackends | Identifies the number of back ends (databases) the server services. | ||||||
| backendmonitordn | Identifies the DN of each directory database. |
nsslapd-counters attribute enabled the Directory Server to use 64-bit values for counter numbers, even on 32-bit systems. This enables long term statistics gathering for high-traffic systems.
- entrycachehits
- entrycachetries
- currententrycachesize
- maxentrycachesize
TIP
- In the Directory Server Console, select the Status tab.
- In the navigation tree, expand the Performance Counters folder, and select the database to monitor.The tab displays current information about database activity. If the server is currently not running, this tab will not provide performance monitoring information.

- Click to refresh the currently displayed information. For the directory to continuously update the displayed information, select the Continuous checkbox, and then click .
Table 15.7. General Information (Database)
| Field | Description |
|---|---|
| Database | Identifies the type of database being monitored. |
| Configuration DN |
Identifies the distinguished name that must be used as a search base to obtain these results using the ldapsearch command-line utility. [11]
|
Table 15.8. Summary Information
| Performance Metric | Current Total |
|---|---|
| Read-Only Status |
Shows whether the database is currently in read-only mode. The database is in read-only mode when the nsslapd-readonly attribute is set to on.
|
| Entry Cache Hits | The total number of successful entry cache lookups. That is, the total number of times the server could process a search request by obtaining data from the cache rather than by going to disk. |
| Entry Cache Tries | The total number of entry cache lookups since the directory was last started. That is, the total number of entries requested since server startup. |
| Entry Cache Hit Ratio |
Ratio that indicates the number of entry cache tries to successful entry cache lookups. This number is based on the total lookups and hits since the directory was last started. The closer this value is to 100%, the better. Whenever an operation attempts to find an entry that is not present in the entry cache, the directory has to perform a disk access to obtain the entry. Thus, as this ratio drops towards zero, the number of disk accesses increases, and directory search performance drops.
To improve this ratio, increase the size of the entry cache by increasing the value of the
nsslapd-cachememsize attribute in the cn=database_name, cn=ldbm database,cn=plugins,cn=config entry for the database. In the Directory Server Console, this is set in the Memory available for cache field in the database settings.
|
| Current Entry Cache Size (in Bytes) | The total size of directory entries currently present in the entry cache. |
| Maximum Entry Cache Size (in Bytes) |
The size of the entry cache maintained by the directory.
This value is managed by the
nsslapd-cachememsize attribute in the cn=database_name, cn=ldbm database,cn=plugins,cn=config entry for the database. This is set in the Memory available for cache field in the database settings in the Directory Server Console.
|
| Current Entry Cache Size (in Entries) | The number of directory entries currently present in the entry cache. |
| Maximum Entry Cache Size (in Entries) |
DEPRECATED.
The maximum number of directory entries that can be maintained in the entry cache.
Do not attempt to manage the cache size by setting a maximum number of allowed entries. This can make it difficult for the host to allocate RAM effectively. Manage the cache size by setting the amount of RAM available to the cache, using the
nsslapd-cachememsize attribute.
|
Table 15.9. Database Cache Information
| Performance Metric | Current Total |
|---|---|
| Hits | The number of times the database cache successfully supplied a requested page. |
| Tries | The number of times the database cache was asked for a page. |
| Hit Ratio |
The ratio of database cache hits to database cache tries. The closer this value is to 100%, the better. Whenever a directory operation attempts to find a portion of the database that is not present in the database cache, the directory has to perform a disk access to obtain the appropriate database page. Thus, as this ratio drops towards zero, the number of disk accesses increases, and directory performance drops.
To improve this ratio, increase the amount of data that the directory maintains in the database cache by increasing the value of the
nsslapd-dbcachesize attribute. This is the Maximum Cache Size database setting in the Directory Server Console.
|
| Pages Read In | The number of pages read from disk into the database cache. |
| Pages Written Out | The number of pages written from the cache back to disk. A database page is written to disk whenever a read-write page has been modified and then subsequently deleted from the cache. Pages are deleted from the database cache when the cache is full and a directory operation requires a database page that is not currently stored in cache. |
| Read-Only Page Evicts | The number of read-only pages discarded from the cache to make room for new pages. |
| Read-Write Page Evicts |
The number of read-write pages discarded from the cache to make room for new pages. This value differs from Pages Written Out in that these are discarded read-write pages that have not been modified.
|
Table 15.10. Database File-Specific
| Performance Metric | Current Total |
|---|---|
| Cache Hits | The number of times that a search result resulted in a cache hit on this specific file. That is, a client performs a search that requires data from this file, and the directory obtains the required data from the cache. |
| Cache Misses | The number of times that a search result failed to hit the cache on this specific file. That is, a search that required data from this file was performed, and the required data could not be found in the cache. |
| Pages Read In | The number of pages brought to the cache from this file. |
| Pages Written Out | The number of pages for this file written from cache to disk. |
ldapsearch[11], using the following characteristics:
- Search with the attribute filter
objectClass=*. - Use the search base
cn=monitor,cn=. database_instance is the name of the database to monitor.database_instance,cn=ldbm database,cn=plugins,cn=config - Use the search scope
base.
/usr/lib64/mozldap/ldapsearch -D "cn=directory manager" -w secret -p 389 -h server.example.com -s base -b "cn=monitor,cn=Example,cn=ldbm database,cn=plugins,cn=config" "objectclass=*"
ldapsearch operation looks for the Example database. For information on searching the directory, see Section 8.2, “Using ldapsearch”.
Table 15.11. Directory Server Monitoring Attributes
| Attribute | Description |
|---|---|
| database | Identifies the type of database currently being monitored. |
| readonly |
Indicates whether the database is in read-only mode; 0 means that the server is not in read-only mode, 1 means that it is in read-only mode.
|
| entrycachehits | The total number of successful entry cache lookups. That is, the total number of times the server could process a search request by obtaining data from the cache rather than by going to disk. |
| entrycachetries | The total number of entry cache lookups since the directory was last started. That is, the total number of search operations performed against the server since server startup. |
| entrycachehitratio |
Ratio that indicates the number of entry cache tries to successful entry cache lookups. This number is based on the total lookups and hits since the directory was last started. The closer this value is to 100%, the better. Whenever a search operation attempts to find an entry that is not present in the entry cache, the directory has to perform a disk access to obtain the entry. Thus, as this ratio drops towards zero, the number of disk accesses increases, and directory search performance drops.
To improve this ratio, increase the size of the entry cache by increasing the value of the
nsslapd-cachememsize attribute in the cn=database_name, cn=ldbm database,cn=plugins,cn=config entry for the database. In the Directory Server Console, this is set in the Memory available for cache field in the database settings.
|
| currententrycachesize |
The total size, in bytes, of directory entries currently present in the entry cache.
To increase the size of the entries which can be present in the cache, increase the value of the
nsslapd-cachememsize attribute in the cn=database_name, cn=ldbm database,cn=plugins,cn=config entry for the database. In the Directory Server Console, this is set in the Memory available for cache field in the database settings.
|
| maxentrycachesize |
The maximum size, in bytes, of directory entries that can be maintained in the entry cache.
To increase the size of the entries which can be present in the cache, increase the value of the
nsslapd-cachememsize attribute in the cn=database_name, cn=ldbm database,cn=plugins,cn=config entry for the database. In the Directory Server Console, this is set in the Memory available for cache field in the database settings.
|
| dbcachehits | The number of times the server could process a request by obtaining data from the cache rather than by going to the disk. |
| dbcachetries | The total number of database accesses since server startup. |
| dbcachehitratio | The ratio of cache tries to successful cache hits. The closer this number is to 100%, the better. |
| dbcachepagein | The number of pages read from disk into the cache. |
| dbcachepageout | The number of pages written from the cache back to disk. |
| dbcacheroevict | The number of read-only pages discarded from the cache to make room for new pages. Pages discarded from the cache have to be written to disk, possibly affecting server performance. The lower the number of page evicts the better. |
| dbcacherwevict |
The number of read-write pages discarded from the cache to make room for new pages. This value differs from Pages Written Out in that these are discarded read-write pages that have not been modified. Pages discarded from the cache have to be written to disk, possibly affecting server performance. The lower the number of page evicts the better.
|
| dbfilename-number | The name of the file. number provides a sequential integer identifier (starting at 0) for the file. All associated statistics for the file are given this same numerical identifier. |
| dbfilecachehit-number | The number of times that a search result resulted in a cache hit on this specific file. That is, a client performs a search that requires data from this file, and the directory obtains the required data from the cache. |
| dbfilecachemiss-number | The number of times that a search result failed to hit the cache on this specific file. That is, a search that required data from this file was performed, and the required data could not be found in the cache. |
| dbfilepagein-number | The number of pages brought to the cache from this file. |
| dbfilepageout-number | The number of pages for this file written from cache to disk. |
ldapsearch command-line utility to return the monitoring attributes that are required. The monitoring attributes are stored in the cn=monitor,cn=database_link_name, cn=chaining database,cn=plugins,cn=config.
ldapsearch[11] command-line utility can be used to retrieve the number of add operations received by a particular database link. For example, this command monitors a database link called DBLink1:
/usr/lib64/mozldap/ldapsearch -D "cn=directory manager" -w secret -p 389 -h server.example.com -s sub -b "cn=monitor,cn=DBLink1,cn=chaining database,cn=plugins,cn=config" "(objectclass=*)" nsAddCount
Table 15.12. Database Link Monitoring Attributes
| Attribute Name | Description |
|---|---|
| nsAddCount | The number of add operations received. |
| nsDeleteCount | The number of delete operations received. |
| nsModifyCount | The number of modify operations received. |
| nsRenameCount | The number of rename operations received. |
| nsSearchBaseCount | The number of base-level searches received. |
| nsSearchOneLevelCount | The number of one-level searches received. |
| nsSearchSubtreeCount | The number of subtree searches received. |
| nsAbandonCount | The number of abandon operations received. |
| nsBindCount | The number of bind request received. |
| nsUnbindCount | The number of unbinds received. |
| nsCompareCount | The number of compare operations received. |
| nsOperationConnectionCount | The number of open connections for normal operations. |
| nsBindConnectionCount | The number of open connections for bind operations. |
ldapsearch, see the Directory Server Configuration and Command-Line Tool Reference.
nsslapd-counters attribute enabled counters to run. However, running counters can affect performance, so it also possible to turn off counters. If counters are off, they all have a value of zero (0).
ldapmodify:
/usr/lib64/mozldap/ldapmodify -D "cn=directory manager" -w secret -p 389 -h server.example.com dn: cn=config changetype: modify replace: nsslapd-counters nsslapd-counters: off
NOTE
/usr/lib64/mozldap directory on Red Hat Enterprise Linux 5 (64-bit); directories for other platforms are listed in Section 1.3, “LDAP Tool Locations”. However, Red Hat Enterprise Linux systems also include LDAP tools from OpenLDAP. It is possible to use the OpenLDAP commands as shown in the examples, but you must use the -x argument to disable SASL and allow simple authentication.
agentx master in the master agent's snmpd.conf file. For more details on configuring the master agent for AgentX support, refer to the Net-SNMP website, http://www.net-snmp.org.
.conf configuration file. This file must be created manually. It can be named and located wherever you want, but it is strongly recommended that you use the default location. The default location is /etc/dirsrv/config/ldap-agent.conf. This file, as installed, is a template for the SNMP subagent service. The ldap-agent.conf file should be modified to fit the specific network environment.
agentx-master setting tells the subagent how to communicate with the SNMP master agent. If this setting is not specified, the subagent tries to communicate the master agent through the Unix domain socket /var/agentx/master. This is also where the Net-SNMP master agent listens for AgentX communications by default. If you configured your master agent to listen on a different Unix domain socket, you must use the agentx-master setting for your subagent to communicate with your master agent by setting the new path for the agentx-master parameter. For example:
agentx-master /var/snmp/agentx
agentx-master setting has the hostname and port number for the master agent. For example:
agentx-master localhost:705
agent-logdir setting specifies the directory where the subagent will write its logfile. For example:
agent-logdir /var/log
ldap-agent.log.
ldap-agent.conf template is /var/log/dirsrv/. This is the same directory where instance log files are stored, but the SNMP aubagent log files are not instance-specific. It is recommended that you use the default location.
server slapd-phonebook
server parameter in the subagent configuration file for each instance.
server slapd-phonebook server slapd-example server slapd-directory
NOTE
service system tools.
service dirsrv-snmp {start|stop|restart}service tool.
service dirsrv-snmp status dirsrv-snmp is stopped
snmpwalk and snmpget. In order for these tools to use variable names for queries, configure them to load the Directory Server's MIB file. The Directory Server's MIB file, redhat-directory.mib, is located in /usr/share/dirsrv/mibs on Red Hat Enterprise Linux 5 (64-bit). There are some additional common required MIB files in this mibs directory if you do not already have them with your MIB tools.
dsEntityName.389 SNMP variable returns the variable value for a server running on port 389, assuming that instance exists and is being monitored by the subagent.
Entity Table, which contains information specific to the Directory Server instance, such as its name and version number. The Entity Table is described in Section 16.6.3, “Entity Table”. This means that the action the master agent takes when it receives a trap is flexible, such as sending an email to an email address defined in the dsEntityContact variable for one instance while sending a notification to a a pager number in the dsEntityContact variable for another instance.
- DirectoryServerDown. This trap is generated whenever the subagent detects the Directory Server is potentially not running. This trap will be sent with the Directory Server instance description, version, physical location, and contact information, which are detailed in the
dsEntityDescr,dsEntityVers,dsEntityLocation, anddsEntityContactvariables. - DirectoryServerStart. This trap is generated whenever the subagent detects that the Directory Server has started or restarted. This trap will be sent with the Directory Server instance description, version, physical location, and contact information, which are detailed in the
dsEntityDescr,dsEntityVers,dsEntityLocation, anddsEntityContactvariables.
- Select the Configuration tab, and then select the topmost entry in the navigation tree in the left pane.
- Select the SNMP tab in the main window.
- Fill in the information about the SNMP descriptors so that it is easy to identify the Directory Server instance in Net-SNMP.

- A unique name and description for the instance.
- The company or organization to which the directory instance belongs.
- The physical location of the directory instance or the organization which manages the instance.
- The email address or contact number for the person who maintains the Directory Server instance.
- Click .
redhat-directory.mib. This MIB contains definitions for variables pertaining to network management for the directory. These variables are known as managed objects. Using the directory MIB and Net-SNMP, you can monitor your directory like all other managed devices on your network. For more information on using the MIB, refer to Section 16.3.3, “Testing the Subagent”.
NOTE
Operations Table provides statistical information about Directory Server access, operations, and errors. Table 16.1, “Operations Table: Managed Objects and Descriptions” describes the managed objects stored in the Operations Table of the redhat-directory.mib file.
Table 16.1. Operations Table: Managed Objects and Descriptions
| Managed Object | Description |
|---|---|
| dsAnonymousBinds | The number of anonymous binds to the directory since server startup. |
| dsUnauthBinds | The number of unauthenticated binds to the directory since server startup. |
| dsSimpleAuthBinds | The number of binds to the directory that were established using a simple authentication method (such as password protection) since server startup. |
| dsStrongAuthBinds | The number of binds to the directory that were established using a strong authentication method (such as SSL or a SASL mechanism like Kerberos) since server startup. |
| dsBindSecurityErrors | The number of bind requests that have been rejected by the directory due to authentication failures or invalid credentials since server startup. |
| dsInOps | The number of operations forwarded to this directory from another directory since server startup. |
| dsReadOps |
The number of read operations serviced by this directory since application start. The value of this object will always be 0 because LDAP implements read operations indirectly via the search operation.
|
| dsCompareOps | The number of compare operations serviced by this directory since server startup. |
| dsAddEntryOps | The number of add operations serviced by this directory since server startup. |
| dsRemoveEntryOps | The number of delete operations serviced by this directory since server startup. |
| dsModifyEntryOps | The number of modify operations serviced by this directory since server startup. |
| dsModifyRDNOps | The number of modify RDN operations serviced by this directory since server startup. |
| dsListOps |
The number of list operations serviced by this directory since server startup. The value of this object will always be 0 because LDAP implements list operations indirectly via the search operation.
|
| dsSearchOps | The total number of search operations serviced by this directory since server startup. |
| dsOneLevelSearchOps | The number of one-level search operations serviced by this directory since server startup. |
| dsWholeSubtreeSearchOps | The number of whole subtree search operations serviced by this directory since server startup. |
| dsReferrals | The number of referrals returned by this directory in response to client requests since server startup. |
| dsSecurityErrors | The number of operations forwarded to this directory that did not meet security requirements. |
| dsErrors | The number of requests that could not be serviced due to errors (other than security or referral errors). Errors include name errors, update errors, attribute errors, and service errors. Partially serviced requests will not be counted as an error. |
Entries Table provides information about the contents of the directory entries. Table 16.2, “Entries Table: Managed Objects and Descriptions” describes the managed objects stored in the Entries Table in the redhat-directory.mib file.
Table 16.2. Entries Table: Managed Objects and Descriptions
| Managed Object | Description |
|---|---|
| dsMasterEntries |
The number of directory entries for which this directory contains the master entry. The value of this object will always be 0 (as no updates are currently performed).
|
| dsCopyEntries |
The number of directory entries for which this directory contains a copy.The value of this object will always be 0 (as no updates are currently performed).
|
| dsCacheEntries | The number of entries cached in the directory. |
| dsCacheHits | The number of operations serviced from the locally held cache since application startup. |
| dsSlaveHits |
The number of operations that were serviced from locally held replications (shadow entries). The value of this object will always be 0.
|
Entity Table contains identifying information about the Directory Server instance. The values for the Entity Table are set in the Directory Server Console, as described in Section 16.5, “Configuring the Directory Server for SNMP”.
Entity Table of the redhat-directory.mib file.
Table 16.3. Entity Table: Managed Objects and Descriptions
| Managed Object | Description |
|---|---|
| dsEntityDescr | The description set for the Directory Server instance. |
| dsEntityVers | The Directory Server version number of the Directory Server instance. |
| dsEntityOrg | The organization responsible for the Directory Server instance. |
| dsEntityLocation | The physical location of the Directory Server instance. |
| dsEntityContact | The name and contact information for the person responsible for the Directory Server instance. |
| dsEntityName | The name of the Directory Server instance. |
NOTE
Interaction Table is not supported by the subagent. The subagent can query the table, but it will not ever be updated with valid data.
Interaction Table of the redhat-directory.mib file.
Table 16.4. Interaction Table: Managed Objects and Descriptions
| Managed Object | Description |
|---|---|
| dsIntTable | Details, in each row of the table, related to the history of the interaction of the monitored Directory Servers with their respective peer Directory Servers. |
| dsIntEntry | The entry containing interaction details of a Directory Server with a peer Directory Server. |
| dsIntIndex |
Part of the unique key, together with applIndex, to identify the conceptual row which contains useful information on the (attempted) interaction between the Directory Server (referred to by applIndex) and a peer Directory Server.
|
| dsName | The distinguished name (DN) of the peer Directory Server to which this entry belongs. |
| dsTimeOfCreation |
The value of sysUpTime when this row was created. If the entry was created before the network management subsystem was initialized, this object will contain a value of zero.
|
| dsTimeOfLastAttempt |
The value of sysUpTime when the last attempt was made to contact this Directory Server. If the last attempt was made before the network management subsystem was initialized, this object will contain a value of zero.
|
| dsTimeOfLastSuccess |
The value of sysUpTime when the last attempt made to contact this Directory Server was successful. This entry will have a value of zero if there have been no successful attempts or if the last successful attempt was made before the network management subsystem was initialized.
|
| dsFailuresSinceLastSuccess | The number of failures since the last time an attempt to contact this Directory Server was successful. If there has been no successful attempts, this counter will contain the number of failures since this entry was created. |
| dsFailures | Cumulative failures since the creation of this entry. |
| dsSuccesses | Cumulative successes since the creation of this entry. |
| dsURL | The URL of the Directory Server application. |
TIP
Table 17.1. Disaster Scenarios and Responses
| Scenario | Effects on Infrastructure | Ideal Response |
|---|---|---|
| Data corruption | Through software or hardware failure (or through a malicious attack), the data at one site or on one server could be corrupted. If that corrupted server is a supplier in multi-master replication, then the corruption can quickly be propagated throughout the deployment. | An isolated server should be available with access to the most recent backup of uncorrupted data. When a problem is detected, replication can be suspended on the regular infrastructure, and this server can be brought online to reinitialize the suppliers with good data. |
| Natural disasters and other mass events | Natural disasters can take an entire office or data center offline, even through something as simple as a long-term power outage. | Directory operations can be transferred to a mirrored site at another physical location, with the same data. |
| Server or machine loss | A single machine could fail. | Another machine, with the same data, can assume the lost machine's place. |
- A hot rollover means that the infrastructure is completely mirrored at another site and that the backup site is always up and current with the primary site. This requires only a few adjustments to switch operations from the primary to the backup.
- A warm rollover means that all of the elements for the backup site are in place (adequate network connections, all required applications and hardware) but the system is not actively running or necessarily configured. This can require some extra time to configure the machines and get the system running.
- A cold rollover means that a site is available but there are few resources immediately available to set it up.
- Multi-master replication, chaining, backing up databases, and monitoring the server with a named pipe script.
- Chaining
- Backing up databases regularly
TIP
Example 17.1. Scenarios for Multi-Master Replication
- For a single server failure, all of the data stored on that instance is both accessible and retrievable from other servers.
- For the loss of an entire office or colocation facility, servers can be mirrored at an entirely different physical location (which is aided by Directory Server's wide area replication performance). With minimal effort, traffic can be redirected to the replicated site without having to bring new servers online.
Example 17.2. Scenarios for Chaining
db2bak.pl) backups can be automated to run regularly through simple cron jobs.
0 7 * * 1 /usr/lib[64]/dirsrv/slapd-example/db2bak.pl
TIP
db2bak.pl Perl script backs up the directory data without having to stop the server first.
dse.ldif file) are covered in Section 4.3, “Backing up and Restoring Data”.
- What signals a disaster? Some things are obvious (a massive power outage, network loss, or fire), but other situations need to be defined. For example, what signals that a backup server needs to be brought online?
- Who responds to a disaster and how? Once a disaster situation occurs, who has the responsibility to act? How are they notified of the event? What are they expected to do?
- Plan A covers losing a single instance of Directory Server
- Plan B covers some kind of data corruption or attack
- Plan C covers losing an entire office
dn:distinguished_nameobjectClass:object_classobjectClass:object_class...attribute_type[;subtype]:attribute_value...
- Every LDIF entry must have a DN and at least one object class definition.
- Include any attributes required by the object classes defined for the entry.
- All other attributes and object classes are optional.
- Object classes and attributes can be specified in any order.
- The space after the colon is optional.
Table A.1. LDIF Fields
| Field | Definition |
|---|---|
| [id] | Optional. A positive decimal number representing the entry ID. The database creation tools generate this ID automatically. Never add or edit this value yourself. |
| dn: distinguished_name | Specifies the distinguished name for the entry. |
| objectClass: object_class | Specifies an object class to use with this entry. The object class identifies the types of attributes, or schema, allowed and required for the entry. See Chapter 6, Managing the Directory Schema for information on customizing the schema. |
| attribute_type | Specifies a descriptive attribute to use with the entry. The attribute should be defined either in the schema. See Chapter 6, Managing the Directory Schema for information on customizing the schema. |
| [subtype] | Optional. Specifies subtype, language, binary, or pronunciation. Use this tag to identify the language in which the corresponding attribute value is expressed or whether the attribute value is binary or a pronunciation of an attribute value. For information on attribute subtypes, see Section 3.1.3.5, “Adding an Attribute Subtype”. For a complete list of the supported subtypes tags, see Table C.2, “Supported Language Subtypes”. |
| attribute_value | Specifies the attribute value to be used with the attribute type. |
NOTE
dn: cn=Jake Lupinski,dc=example,dc=com dn: cn=Jake Lup inski,dc=exa mple,dc=com
jpegphoto: < file:/path/to/photo
ldapmodify -b parameter. However, standard notation requires that the following line be added to the beginning of the LDIF file or the LDIF update statements:
version: 1
ldapmodify -DuserDN-wuser_passwordversion: 1 dn: cn=Barney Fife,ou=People,dc=example,dc=com changetype: modify add: usercertificate usercertificate;binary: < file: BarneysCert
:: symbol. For example:
jpegPhoto::encoded_data - Any value that begins with a colon (:) or a space.
- Any value that contains non-ASCII data, including new lines.
ldif command-line utility with the -b parameter to convert binary data to LDIF format:
ldif -b attribute_name ldif command-line utility will take any input and format it with the correct line continuation and appropriate attribute information. The ldif utility also assesses whether the input requires base-64 encoding. For example:
ldif -b jpegPhoto < mark.jpg > out.ldif
jpegPhoto. The output is saved to out.ldif.
-b option specifies that the ldif utility should interpret the entire input as a single binary value. If -b is not present, each line is considered to be a separate input value.
ldap.example.com, then the domain entry for the directory is probably named dc=ldap,dc=example,dc=com or simply dc=example,dc=com.
dn:distinguished_nameobjectClass: top objectClass: domain dc:domain_component_namelist_of_optional_attributes...
dn: dc=example,dc=com objectclass: top objectclass: domain dc: example description: Fictional example company
Table A.2. LDIF Elements in Domain Entries
| LDIF Element | Description |
|---|---|
| dn: distinguished_name | Required. Specifies the distinguished name for the entry. |
| objectClass: top |
Required. Specifies the top object class.
|
| objectClass: domain |
Specifies the domain object class. This line defines the entry as a domain or domain component.
|
| dc: domain_component |
Attribute that specifies the domain's name. The server is typically configured during the initial setup to have a suffix or naming context in the form dc=hostname,dc=domain,dc=toplevel. For example, dc=ldap,dc=example,dc=com. The domain entry should use the leftmost dc value, such as dc: ldap. If the suffix were dc=example,dc=com, the dc value is dc: example. Do not create the entry for dn: dc=com unless the server has been configured to use that suffix.
|
| list_of_attributes | Specifies the list of optional attributes to maintain for the entry. |
dn:distinguished_nameobjectClass: top objectClass: organizationalUnit ou:organizational_unit_namelist_of_optional_attributes...
dn: ou=people,dc=example,dc=com objectclass: top objectclass: organizationalUnit ou: people description: Fictional example organizational unit
Table A.3. LDIF Elements in Organizational Unit Entries
| LDIF Element | Description |
|---|---|
| dn: distinguished_name |
Specifies the distinguished name for the entry. A DN is required. If there is a comma in the DN, the comma must be escaped with a backslash (\), such as dn: ou=people,dc=example,dc=com.
|
| objectClass: top |
Required. Specifies the top object class.
|
| objectClass: organizationalUnit |
Specifies the organizationalUnit object class. This line defines the entry as an organizational unit.
|
| ou: organizational_unit_name | Attribute that specifies the organizational unit's name. |
| list_of_attributes | Specifies the list of optional attributes to maintain for the entry. |
dn:distinguished_nameobjectClass: top objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson cn:common_namesn:surnamelist_of_optional_attributes
dn: uid=bjensen,ou=people,dc=example,dc=com
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
cn: Babs Jensen
sn: Jensen
givenname: Babs
uid: bjensen
ou: people
description: Fictional example person
telephoneNumber: 555-5557
userPassword: {SSHA}dkfljlk34r2kljdsfk9Table A.4. LDIF Elements in Person Entries
| LDIF Element | Description |
|---|---|
| dn: distinguished_name |
Required. Specifies the distinguished name for the entry. For example, dn: uid=bjensen,ou=people,dc=example,dc=com. If there is a comma in the DN, the comma must be escaped with a backslash (\).
|
| objectClass: top |
Required. Specifies the top object class.
|
| objectClass: person |
Specifies the person object class. This object class specification should be included because many LDAP clients require it during search operations for a person or an organizational person.
|
| objectClass: organizationalPerson |
Specifies the organizationalPerson object class. This object class specification should be included because some LDAP clients require it during search operations for an organizational person.
|
| objectClass: inetOrgPerson |
Specifies the inetOrgPerson object class. The inetOrgPerson object class is recommended for the creation of an organizational person entry because this object class includes the widest range of attributes. The uid attribute is required by this object class, and entries that contain this object class are named based on the value of the uid attribute.
|
| cn: common_name |
Specifies the person's common name, which is the full name commonly used by the person. For example, cn: Bill Anderson. At least one common name is required.
|
| sn: surname |
Specifies the person's surname, or last name. For example, sn: Anderson. A surname is required.
|
| list_of_attributes | Specifies the list of optional attributes to maintain for the entry. |
- Create an ASCII file containing the entries to add in LDIF format.Make sure each entry is separated from the next by an empty line. Use just one line between entries, and make sure the first line of the file is not be blank, or else the
ldapmodifyutility will exit. For more information, refer to Section A.4, “Specifying Directory Entries Using LDIF”. - Begin each file with the topmost, or root, entry in the database.The root entry must represent the suffix or sub-suffix contained by the database. For example, if the database has the suffix
dc=example,dc=com, the first entry in the directory must bedn: dc=example,dc=com.For information on suffixes, see the "Suffix" parameter described in the Directory Server Configuration and Command-Line Tool Reference. - Make sure that an entry representing a branch point in the LDIF file is placed before the entries to create under that branch.For example, to place an entry in a people and a group subtree, create the branch point for those subtrees before creating entries within those subtrees.
NOTE
The LDIF file is read in order, so parent entries must be listed before the child entries. - Create the directory from the LDIF file using one of the following methods:
- Initializing the database through the Directory Server Console. Use this method if there is a small database to import (less than 10,000 entries). See Section 4.1.2, “Importing a Database from the Console”.
WARNING
This method is destructive and will erase any existing data in the suffix. - ldif2db or ldif2db.pl command-line utility. Use this method if there is a large database to import (more than 10,000 entries). See Section 4.1.4.1, “Importing Using the ldif2db Command-Line Script”.
ldif2dbcannot be used if the server is running.ldif2db.plcan only be used if the server is running.
WARNING
This method is destructive and will erase any existing data in the suffix. - ldapmodify command-line utility with the -a parameter. Use this method if a new subtree is being added to an existing database or there is existing data in the suffix which should not be deleted. Unlike the other methods for creating the directory from an LDIF file, Directory Server must be running before a subtree can be added using
ldapmodify. See Section 3.2.4, “Adding and Modifying Entries Using ldapmodify”.
dn: dc=example,dc=com
objectclass: top
objectclass: domain
dc: example
description: Fictional example domain
dn: ou=People,dc=example,dc=com
objectclass: top
objectclass: organizationalUnit
ou: People
description: Fictional example organizational unit
tel: 555-5559
dn: cn=June Rossi,ou=People,dc=example,dc=com
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
cn: June Rossi
sn: Rossi
givenName: June
mail: rossi@example.com
userPassword: {sha}KDIE3AL9DK
ou: Accounting
ou: people
telephoneNumber: 2616
roomNumber: 220
dn: cn=Marc Chambers,ou=People,dc=example,dc=com
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
cn: Marc Chambers
sn: Chambers
givenname: Marc
mail: chambers@example.com
userPassword: {sha}jdl2alem87dlacz1
telephoneNumber: 2652
ou: Manufacturing
ou: People
roomNumber: 167
dn: cn=Robert Wong,ou=People,example.com Corp,dc=example,dc=com
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
cn: Robert Wong
cn: Bob Wong
sn: Wong
givenname: Robert
givenname: Bob
mail: bwong@example.com
userPassword: {sha}nn2msx761
telephoneNumber: 2881
roomNumber: 211
ou: Manufacturing
ou: people
dn: ou=Groups,dc=example,dc=com
objectclass: top
objectclass: organizationalUnit
ou: groups
description: Fictional example organizational unitNOTE
iconv or uconv command provided by most operating systems can be used to convert data from the native characterset into UTF-8.
- The administrator creates a file,
street.txt, with the French street address value:1 rue de l'Université
- The file contents are then converted to UTF-8:
iconv -t UTF-8 -o output.txt street.txt
- The following LDIF entry is created using the UTF-8 value of the street address value for
streetAddress;lang-fr.dn: uid=bjensen,ou=people,dc=example,dc=com objectclass: top objectclass: person objectclass: organizationalPerson name: Babs Jensen cn: Babs Jensen sn: Jensen uid: bjensen streetAddress: 1 University Street streetAddress;lang-en: 1 University Street streetAddress;lang-fr
:: AasljdoaAJASI023909jaASJaonasd0ADSpreferredLanguage: frThe double colons after the attribute name and subtype indicate that the value is binary base-64 encoded.
1 University Street. Users accessing the directory with an LDAP client with the preferred language set to French will see the address 1 rue de l'Université.
- The LDAP URL is used to identify the specific Directory Server instance when the Directory Server is accessed using a web-based client.
- LDAP URLs are used to configure Directory Server referrals.
- LDAP URLs are used to configure access control instructions.
NOTE
ldap[s]://hostname:port/base_dn?attributes?scope?filterldap:// protocol is used to connect to LDAP servers over unsecured connections, and the ldaps:// protocol is used to connect to LDAP servers over TLS/SSL connections. Table B.1, “LDAP URL Components” lists the components of an LDAP URL.
NOTE
Table B.1. LDAP URL Components
| Component | Description | |||
|---|---|---|---|---|
| hostname |
Name (or IP address in dotted format) of the LDAP server. For example, ldap.example.com or 192.202.185.90.
| |||
| port |
Port number of the LDAP server (for example, 696). If no port is specified, the standard LDAP port (389) or LDAPS port (636) is used.
| |||
| base_dn | Distinguished name (DN) of an entry in the directory. This DN identifies the entry that is the starting point of the search. If no base DN is specified, the search starts at the root of the directory tree. | |||
| attributes |
The attributes to be returned. To specify more than one attribute, use commas to separate the attributes; for example, cn,mail,telephoneNumber. If no attributes are specified in the URL, all attributes are returned.
| |||
| scope |
The scope of the search, which can be one of these values:
base search.
| |||
| filter |
Search filter to apply to entries within the specified scope of the search. If no filter is specified, the server uses the filter (objectClass=*).
|
dc=example,dc=com that returns all attributes for entries matching (sn=Jensen), use the following LDAP URL:
ldap://ldap.example.com/dc=example,dc=com??sub?(sn=Jensen)
??, indicate that no attributes have been specified. Since no specific attributes are identified in the URL, all attributes are returned in the search.
%20 within the URL. Thus, the distinguished name o=example.com corporation must be encoded as o=example.com%20corporation.
| Unsafe Character | Escape Characters |
|---|---|
| space | %20 |
| < | %3c |
| > | %3e |
| " | %22 |
| # | %23 |
| % | %25 |
| { | %7b |
| } | %7d |
| | | %7c |
| \ | %5c |
| ^ | %5e |
| ~ | %7e |
| [ | %5b |
| ] | %5d |
| ` | %60 |
NOTE
dc=example,dc=com.
ldap://ldap.example.com/dc=example,dc=com
- Because no port number is specified, the standard LDAP port number (
389) is used. - Because no attributes are specified, the search returns all attributes.
- Because no search scope is specified, the search is restricted to the base entry
dc=example,dc=com. - Because no filter is specified, the directory uses the default filter (
objectclass=*).
postalAddress attribute of the entry with the DN dc=example,dc=com:
ldap://ldap.example.com/dc=example,dc=com?postalAddress
- Because no search scope is specified, the search is restricted to the base entry
dc=example,dc=com. - Because no filter is specified, the directory uses the default filter (
objectclass=*).
cn, mail, and telephoneNumber attributes of the entry for Barbara Jensen:
ldap://ldap.example.com/cn=Barbara%20Jensen,dc=example,dc=com?cn,mail,telephoneNumber
- Because no search scope is specified, the search is restricted to the base entry
cn=Barbara Jensen,dc=example,dc=com. - Because no filter is specified, the directory uses the default filter
(objectclass=*).
Jensen and are at any level under dc=example,dc=com:
ldap://ldap.example.com/dc=example,dc=com??sub?(sn=Jensen)
- Because no attributes are specified, the search returns all attributes.
- Because the search scope is
sub, the search encompasses the base entrydc=example,dc=comand entries at all levels under the base entry.
dc=example,dc=com:
ldap://ldap.example.com/dc=example,dc=com?objectClass?one
- Because the search scope is
one, the search encompasses all entries one level under the base entrydc=example,dc=com. The search scope does not include the base entry. - Because no filter is specified, the directory uses the default filter (
objectclass=*).
NOTE
NOTE
- Collation order. The collation order provides language and cultural-specific information about how the characters of a given language are to be sorted. It identifies things like the sequence of the letters in the alphabet, how to compare letters with accents to letters without accents, and if there are any characters that can be ignored when comparing strings. The collation order also takes into account culture-specific information about a language, such as the direction in which the language is read (left to right, right to left, or up and down).
- Character type. The character type distinguishes alphabetic characters from numeric or other characters. For example, in some languages, the pipe (|) character is considered punctuation while in others it is considered alphabetic. In addition, it defines the mapping of upper-case to lower-case letters.
- Monetary format. The monetary format specifies the monetary symbol used by a specific region, whether the symbol goes before or after its value, and how monetary units are represented.
- Time/date format. The time and date format indicates the customary formatting for times and dates in the region. The time and date format indicates whether dates are customarily represented in the mm/dd/yy (month, day, year) or dd/mm/yy (day, month, year) format and specifies what the days of the week and month are in a given language. For example, the date January 10, 1996, is represented as
10.leden 1996in Czechoslovakian and10 janvier 1996in French.
en-GB.
2.16.840.1.113730.3.3.2.17.1 identifies the Finnish collation order.
Table C.1. Supported Locales
| Locale | Language Tag | Collation Order Object Identifiers (OIDs) |
|---|---|---|
| Albanian | sq | 2.16.840.1.113730.3.3.2.44.1 |
| Arabic | ar | 2.16.840.1.113730.3.3.2.1.1 |
| Belorussian | be | 2.16.840.1.113730.3.3.2.2.1 |
| Bulgarian | bg | 2.16.840.1.113730.3.3.2.3.1 |
| Catalan | ca | 2.16.840.1.113730.3.3.2.4.1 |
| Chinese (Simplified) | zh | 2.16.840.1.113730.3.3.2.49.1 |
| Chinese (Traditional) | zh-TW | 2.16.840.1.113730.3.3.2.50.1 |
| Croatian | hr | 2.16.840.1.113730.3.3.2.22.1 |
| Czechoslovakian | cs | 2.16.840.1.113730.3.3.2.5.1 |
| Danish | da | 2.16.840.1.113730.3.3.2.6.1 |
| Dutch | nl or nl-NL | 2.16.840.1.113730.3.3.2.33.1 |
| Dutch (Belgian) | nl-BE | 2.16.840.1.113730.3.3.2.34.1 |
| English (US) | en or en-US | 2.16.840.1.113730.3.3.2.11.1 |
| Estonian | et | 2.16.840.1.113730.3.3.2.16.1 |
| Finnish | fi | 2.16.840.1.113730.3.3.2.17.1 |
| French | fr or fr-FR | 2.16.840.1.113730.3.3.2.18.1 |
| French (Belgian) | fr-BE | 2.16.840.1.113730.3.3.2.19.1 |
| French (Canadian) | fr-CA | 2.16.840.1.113730.3.3.2.20.1 |
| French (Swiss) | fr-CH | 2.16.840.1.113730.3.3.2.21.1 |
| German | de | 2.16.840.1.113730.3.3.2.7.1 |
| German (Austrian) | de-AT | 2.16.840.1.113730.3.3.2.8.1 |
| German (Swiss) | de-CH | 2.16.840.1.113730.3.3.2.9.1 |
| Greek | el | 2.16.840.1.113730.3.3.2.10.1 |
| Hebrew | iw | 2.16.840.1.113730.3.3.2.27.1 |
| Hungarian | hu | 2.16.840.1.113730.3.3.2.23.1 |
| Icelandic | is | 2.16.840.1.113730.3.3.2.24.1 |
| Italian | it | 2.16.840.1.113730.3.3.2.25.1 |
| Italian (Swiss) | it-CH | 2.16.840.1.113730.3.3.2.26.1 |
| Japanese | ja | 2.16.840.1.113730.3.3.2.28.1 |
| Korean | ko | 2.16.840.1.113730.3.3.2.29.1 |
| Latvian, Lettish | lv | 2.16.840.1.113730.3.3.2.31.1 |
| Lithuanian | lt | 2.16.840.1.113730.3.3.2.30.1 |
| Macedonian | mk | 2.16.840.1.113730.3.3.2.32.1 |
| Norwegian | no | 2.16.840.1.113730.3.3.2.35.1 |
| Norwegian (Bokmul) | nb | 2.16.840.1.113730.3.3.2.36.1 |
| Norwegian (Nynorsk) | no-NO-NY | 2.16.840.1.113730.3.3.2.37.1 |
| Polish | pl | 2.16.840.1.113730.3.3.2.38.1 |
| Romanian | ro | 2.16.840.1.113730.3.3.2.39.1 |
| Russian | ru | 2.16.840.1.113730.3.3.2.40.1 |
| Serbian (Cyrillic) | sr | 2.16.840.1.113730.3.3.2.45.1 |
| Serbian (Latin) | sh | 2.16.840.1.113730.3.3.2.41.1 |
| Slovakian | sk | 2.16.840.1.113730.3.3.2.42.1 |
| Slovenian | sl | 2.16.840.1.113730.3.3.2.43.1 |
| Spanish | es or es-ES | 2.16.840.1.113730.3.3.2.15.1 |
| Swedish | sv | 2.16.840.1.113730.3.3.2.46.1 |
| Turkish | tr | 2.16.840.1.113730.3.3.2.47.1 |
| Ukrainian | uk | 2.16.840.1.113730.3.3.2.48.1 |
Table C.2. Supported Language Subtypes
| Language Tag | Language |
|---|---|
| af | Afrikaans |
| be | Belorussian |
| bg | Bulgarian |
| ca | Catalan |
| cs | Czechoslovakian |
| da | Danish |
| de | German |
| el | Greek |
| en | English |
| es | Spanish |
| eu | Basque |
| fi | Finnish |
| fo | Faroese |
| fr | French |
| ga | Irish |
| gl | Galician |
| hr | Croatian |
| hu | Hungarian |
| id | Indonesian |
| is | Icelandic |
| it | Italian |
| ja | Japanese |
| ko | Korean |
| nl | Dutch |
| no | Norwegian |
| pl | Polish |
| pt | Portuguese |
| ro | Romanian |
| ru | Russian |
| sk | Slovakian |
| sl | Slovenian |
| sq | Albanian |
| sr | Serbian |
| sv | Swedish |
| tr | Turkish |
| uk | Ukrainian |
| zh | Chinese |
NOTE
-V2 option on the call for ldapsearch.
ldapsearch syntax, see Section 8.3, “LDAP Search Filters”. For information on searching internationalized directories using the Users and Groups portion of the Red Hat Console, see the online help.
- As the OID of the collation order for the locale on which to base the search.
- As the language tag associated with the collation order on which to base the search.
- As the OID of the collation order and a suffix that represents a relational operator.
- As the language tag associated with the collation order and a suffix that represents a relational operator.
attr:OID:=(relational_operator value)
departmentNumber attributes that are at or after N4709 in the Swedish collation order, use the following filter:
departmentNumber:2.16.840.1.113730.3.3.2.46.1:=>= N4709
attr:language-tag:=(relational_operator value)
estudiante using the Spanish collation order, use the following filter:
cn:es:== estudiante
attr: OID+suffix:=value
businessCategory attributes with the value softwareprodukte in the German collation order, use the following filter:
businessCategory:2.16.840.1.113730.3.3.2.7.1.3:=softwareprodukte
.3 in the previous example is the equality suffix.
attr: language-tag+suffix:=value
La Salle in the French collation order, use the following filter:
sn:fr.4:=La Salle
- equality (=)
- substring (*)
- greater-than (>)
- greater-than or equal-to (>=)
- less-than (<)
- less-than or equal-to (<=)
ldapsearch search operation, an international search uses operators to define the type of search. However, when invoking an international search, either use the standard operators (=, >=, >, <, <=) in the value portion of the search string, or use a special type of operator, called a suffix (not to be confused with the directory suffix), in the matching rule portion of the filter. Table C.3, “Search Types, Operators, and Suffixes” summarizes each type of search, the operator, and the equivalent suffix.
Table C.3. Search Types, Operators, and Suffixes
| Search Type | Operator | Suffix |
|---|---|---|
| Less-than | < | .1 |
| Less-than or equal-to | <= | .2 |
| Equality | = | .3 |
| Greater-than or equal-to | >= | .4 |
| Greater-than | > | .5 |
| Substring | * | .6 |
.1) searches for all attribute values that come before the given attribute in a specific collation order.
Marquez in the Spanish collation order, any of the following matching rule filters would work:
sn:2.16.840.1.113730.3.3.2.15.1:=< Marquez ... sn:es:=< Marquez ... sn:2.16.840.1.113730.3.3.2.15.1.1:=Marquez ... sn:es.1:=Marquez
.2) searches for all attribute values that come at or before the given attribute in a specific collation order.
CZ422 in the Hungarian collation order, any of the following matching rule filters would work:
roomNumber:2.16.840.1.113730.3.3.2.23.1:=<= CZ422 ... roomNumber:hu:=<= CZ422 ... roomNumber:2.16.840.1.113730.3.3.2.23.1.2:=CZ422 ... roomNumber:hu.2:=CZ422
.3) searches for all attribute values that match the given attribute in a specific collation order.
businessCategory attributes with the value softwareprodukte in the German collation order, any of the following matching rule filters would work:
businessCategory:2.16.840.1.113730.3.3.2.7.1:==softwareprodukte ... businessCategory:de:== softwareprodukte ... businessCategory:2.16.840.1.113730.3.3.2.7.1.3:=softwareprodukte ... businessCategory:de.3:=softwareprodukte
>=), or suffix (.4) searches for all attribute values that come at or after the given attribute in a specific collation order.
Québec in the French collation order, any of the following matching rule filters would work:
locality:2.16.840.1.113730.3.3.2.18.1:=>= Québec ... locality:fr:=>= Québec ... locality:2.16.840.1.113730.3.3.2.18.1.4:=Québec ... locality:fr.4:=Québec
.5) searches for all attribute values that come at or before the given attribute in a specific collation order.
schranka4 in the Czechoslovakian collation order, any of the following matching rule filters would work:
mailHost:2.16.840.1.113730.3.3.2.5.1:=> schranka4 ... mailHost:cs:=> schranka4 ... mailHost:2.16.840.1.113730.3.3.2.5.1.5:=schranka4 ... mailHost:cs.5:=schranka4
ming in the Chinese collation order, any of the following matching rule filters would work:
uid:2.16.840.1.113730.3.3.2.49.1:=* *ming ... uid:zh:=* *ming ... uid:2.16.840.1.113730.3.3.2.49.1.6:=* *ming .. uid:zh.6:=* *ming
modifiersName or memberOf, do not always match entries correctly if the filter contains one or more space characters.
= part of the DN. For example, this filter should not be used:
(memberOf=*Domain Administrators*)
(memberOf=cn=Domain Administrators*) ... (memberOf=cn=Domain Administrators,ou=Groups,dc=example,dc=com)
/usr/lib64/mozldap/ldapsearch -p 389 -D "uid=userID,ou=people,dc=example,dc=com" -w secret -b "dc=example,dc=com" "sn:2.16.840.1.113730.3.3.2.7.1:=passin" /usr/lib64/mozldap/ldapsearch -p 389 -D "uid=userID,ou=people,dc=example,dc=com" -w secret -b "dc=example,dc=com" "sn:de:=passin"
.3 before the passin value):
/usr/lib64/mozldap/ldapsearch -p 389 -D "uid=userID,ou=people,dc=example,dc=com" -w secret -b "dc=example,dc=com" "sn:2.16.840.1.113730.3.3.2.7.1.3:=passin" /usr/lib64/mozldap/ldapsearch -p 389 -D "uid=userID,ou=people,dc=example,dc=com" -w secret -b "dc=example,dc=com" "sn:de.3:=passin"
A
- access control instruction
See ACI.
- access control list
See ACL.
- access rights
- In the context of access control, specify the level of access granted or denied. Access rights are related to the type of operation that can be performed on the directory. The following rights can be granted or denied: read, write, add, delete, search, compare, selfwrite, proxy and all.
- account inactivation
- Disables a user account, group of accounts, or an entire domain so that all authentication attempts are automatically rejected.
- ACI
- An instruction that grants or denies permissions to entries in the directory.
See Also access control instruction.
- ACL
- The mechanism for controlling access to your directory.
See Also access control list.
- All IDs Threshold
- Replaced with the ID list scan limit in Directory Server version 7.1. A size limit which is globally applied to every index key managed by the server. When the size of an individual ID list reaches this limit, the server replaces that ID list with an All IDs token.
See Also ID list scan limit.
- All IDs token
- A mechanism which causes the server to assume that all directory entries match the index key. In effect, the All IDs token causes the server to behave as if no index was available for the search request.
- anonymous access
- When granted, allows anyone to access directory information without providing credentials, and regardless of the conditions of the bind.
- approximate index
- Allows for efficient approximate or "sounds-like" searches.
- attribute
- Holds descriptive information about an entry. Attributes have a label and a value. Each attribute also follows a standard syntax for the type of information that can be stored as the attribute value.
- attribute list
- A list of required and optional attributes for a given entry type or object class.
- authenticating directory server
- In pass-through authentication (PTA), the authenticating Directory Server is the Directory Server that contains the authentication credentials of the requesting client. The PTA-enabled host sends PTA requests it receives from clients to the host.
- authentication
- (1) Process of proving the identity of the client user to the Directory Server. Users must provide a bind DN and either the corresponding password or certificate in order to be granted access to the directory. Directory Server allows the user to perform functions or access files and directories based on the permissions granted to that user by the directory administrator.(2) Allows a client to make sure they are connected to a secure server, preventing another computer from impersonating the server or attempting to appear secure when it is not.
- authentication certificate
- Digital file that is not transferable and not forgeable and is issued by a third party. Authentication certificates are sent from server to client or client to server in order to verify and authenticate the other party.
B
- base distinguished name
See base DN.
- base DN
- Base distinguished name. A search operation is performed on the base DN, the DN of the entry and all entries below it in the directory tree.
- bind distinguished name
See bind DN.
- bind DN
- Distinguished name used to authenticate to Directory Server when performing an operation.
- bind rule
- In the context of access control, the bind rule specifies the credentials and conditions that a particular user or client must satisfy in order to get access to directory information.
- branch entry
- An entry that represents the top of a subtree in the directory.
- browser
- Software, such as Mozilla Firefox, used to request and view World Wide Web material stored as HTML files. The browser uses the HTTP protocol to communicate with the host server.
- browsing index
- Speeds up the display of entries in the Directory Server Console. Browsing indexes can be created on any branch point in the directory tree to improve display performance.
See Also virtual list view index .
C
- CA
- cascading replication
- In a cascading replication scenario, one server, often called the hub supplier, acts both as a consumer and a supplier for a particular replica. It holds a read-only replica and maintains a changelog. It receives updates from the supplier server that holds the master copy of the data and in turn supplies those updates to the consumer.
- certificate
- A collection of data that associates the public keys of a network user with their DN in the directory. The certificate is stored in the directory as user object attributes.
- Certificate Authority
- Company or organization that sells and issues authentication certificates. You may purchase an authentication certificate from a Certification Authority that you trust. Also known as a CA.
- CGI
- Common Gateway Interface. An interface for external programs to communicate with the HTTP server. Programs written to use CGI are called CGI programs or CGI scripts and can be written in many of the common programming languages. CGI programs handle forms or perform output parsing that is not done by the server itself.
- chaining
- A method for relaying requests to another server. Results for the request are collected, compiled, and then returned to the client.
- changelog
- A changelog is a record that describes the modifications that have occurred on a replica. The supplier server then replays these modifications on the replicas stored on replica servers or on other masters, in the case of multi-master replication.
- character type
- Distinguishes alphabetic characters from numeric or other characters and the mapping of upper-case to lower-case letters.
- ciphertext
- Encrypted information that cannot be read by anyone without the proper key to decrypt the information.
- class definition
- Specifies the information needed to create an instance of a particular object and determines how the object works in relation to other objects in the directory.
- class of service
See CoS.
- classic CoS
- A classic CoS identifies the template entry by both its DN and the value of one of the target entry's attributes.
- client
See LDAP client.
- code page
- An internal table used by a locale in the context of the internationalization plug-in that the operating system uses to relate keyboard keys to character font screen displays.
- collation order
- Provides language and cultural-specific information about how the characters of a given language are to be sorted. This information might include the sequence of letters in the alphabet or how to compare letters with accents to letters without accents.
- consumer
- Server containing replicated directory trees or subtrees from a supplier server.
- consumer server
- In the context of replication, a server that holds a replica that is copied from a different server is called a consumer for that replica.
- CoS
- A method for sharing attributes between entries in a way that is invisible to applications.
- CoS definition entry
- Identifies the type of CoS you are using. It is stored as an LDAP subentry below the branch it affects.
- CoS template entry
- Contains a list of the shared attribute values.
See Also template entry.
D
- daemon
- A background process on a Unix machine that is responsible for a particular system task. Daemon processes do not need human intervention to continue functioning.
- DAP
- Directory Access Protocol. The ISO X.500 standard protocol that provides client access to the directory.
- data master
- The server that is the master source of a particular piece of data.
- database link
- An implementation of chaining. The database link behaves like a database but has no persistent storage. Instead, it points to data stored remotely.
- default index
- One of a set of default indexes created per database instance. Default indexes can be modified, although care should be taken before removing them, as certain plug-ins may depend on them.
- definition entry
See CoS definition entry.
- Directory Access Protocol
See DAP.
- Directory Manager
- The privileged database administrator, comparable to the root user in UNIX. Access control does not apply to the Directory Manager.
- directory service
- A database application designed to manage descriptive, attribute-based information about people and resources within an organization.
- directory tree
- The logical representation of the information stored in the directory. It mirrors the tree model used by most filesystems, with the tree's root point appearing at the top of the hierarchy. Also known as DIT.
- distinguished name
- String representation of an entry's name and location in an LDAP directory.
- DIT
See directory tree.
- DM
See Directory Manager.
- DN
See distinguished name.
- DNS
- Domain Name System. The system used by machines on a network to associate standard IP addresses (such as 198.93.93.10) with hostnames (such as
www.example.com). Machines normally get the IP address for a hostname from a DNS server, or they look it up in tables maintained on their systems. - DNS alias
- A DNS alias is a hostname that the DNS server knows points to a different hostspecifically a DNS CNAME record. Machines always have one real name, but they can have one or more aliases. For example, an alias such as
www.yourdomain.domain might point to a real machine calledrealthing.yourdomain.domain where the server currently exists.
E
- entry
- A group of lines in the LDIF file that contains information about an object.
- entry distribution
- Method of distributing directory entries across more than one server in order to scale to support large numbers of entries.
- entry ID list
- Each index that the directory uses is composed of a table of index keys and matching entry ID lists. The entry ID list is used by the directory to build a list of candidate entries that may match the client application's search request.
- equality index
- Allows you to search efficiently for entries containing a specific attribute value.
F
- file extension
- The section of a filename after the period or dot (.) that typically defines the type of file (for example, .GIF and .HTML). In the filename
index.htmlthe file extension ishtml. - file type
- The format of a given file. For example, graphics files are often saved in GIF format, while a text file is usually saved as ASCII text format. File types are usually identified by the file extension (for example, .GIF or .HTML).
- filter
- A constraint applied to a directory query that restricts the information returned.
- filtered role
- Allows you to assign entries to the role depending upon the attribute contained by each entry. You do this by specifying an LDAP filter. Entries that match the filter are said to possess the role.
G
H
- hostname
- A name for a machine in the form machine.domain.dom, which is translated into an IP address. For example,
www.example.comis the machinewwwin the subdomainexampleandcomdomain. - HTML
- Hypertext Markup Language. The formatting language used for documents on the World Wide Web. HTML files are plain text files with formatting codes that tell browsers such as the Mozilla Firefox how to display text, position graphics, and form items and to display links to other pages.
- HTTP
- Hypertext Transfer Protocol. The method for exchanging information between HTTP servers and clients.
- HTTPD
- An abbreviation for the HTTP daemon or service, a program that serves information using the HTTP protocol. The daemon or service is often called an httpd.
- HTTPS
- A secure version of HTTP, implemented using the Secure Sockets Layer, SSL.
- hub
- In the context of replication, a server that holds a replica that is copied from a different server, and, in turn, replicates it to a third server.
See Also cascading replication.
I
- ID list scan limit
- A size limit which is globally applied to any indexed search operation. When the size of an individual ID list reaches this limit, the server replaces that ID list with an all IDs token.
- index key
- Each index that the directory uses is composed of a table of index keys and matching entry ID lists.
- indirect CoS
- An indirect CoS identifies the template entry using the value of one of the target entry's attributes.
- international index
- Speeds up searches for information in international directories.
- International Standards Organization
See ISO.
- IP address
- Also Internet Protocol address. A set of numbers, separated by dots, that specifies the actual location of a machine on the Internet (for example, 198.93.93.10). Directory Server supports both IPv4 and IPv6 IP addresses.
- ISO
- International Standards Organization.
L
- LDAP
- Lightweight Directory Access Protocol. Directory service protocol designed to run over TCP/IP and across multiple platforms.
- LDAP client
- Software used to request and view LDAP entries from an LDAP Directory Server.
See Also browser.
- LDAP Data Interchange Format
- LDAP URL
- Provides the means of locating Directory Servers using DNS and then completing the query via LDAP. A sample LDAP URL is
ldap://ldap.example.com. - LDAPv3
- Version 3 of the LDAP protocol, upon which Directory Server bases its schema format.
- LDBM database
- A high-performance, disk-based database consisting of a set of large files that contain all of the data assigned to it. The primary data store in Directory Server.
- LDIF
- LDAP Data Interchange Format. Format used to represent Directory Server entries in text form.
- leaf entry
- An entry under which there are no other entries. A leaf entry cannot be a branch point in a directory tree.
- Lightweight Directory Access Protocol
See LDAP.
- locale
- Identifies the collation order, character type, monetary format and time / date format used to present data for users of a specific region, culture, and/or custom. This includes information on how data of a given language is interpreted, stored, or collated. The locale also indicates which code page should be used to represent a given language.
M
- managed object
- A standard value which the SNMP agent can access and send to the NMS. Each managed object is identified with an official name and a numeric identifier expressed in dot-notation.
- managed role
- Allows creation of an explicit enumerated list of members.
- management information base
See MIB.
- mapping tree
- A data structure that associates the names of suffixes (subtrees) with databases.
- master
See supplier.
- master agent
See SNMP master agent.
- matching rule
- Provides guidelines for how the server compares strings during a search operation. In an international search, the matching rule tells the server what collation order and operator to use.
- MD5
- A message digest algorithm by RSA Data Security, Inc., which can be used to produce a short digest of data that is unique with high probability and is mathematically extremely hard to produce; a piece of data that will produce the same message digest.
- MD5 signature
- A message digest produced by the MD5 algorithm.
- MIB
- Management Information Base. All data, or any portion thereof, associated with the SNMP network. We can think of the MIB as a database which contains the definitions of all SNMP managed objects. The MIB has a tree-like hierarchy, where the top level contains the most general information about the network and lower levels deal with specific, separate network areas.
- MIB namespace
- Management Information Base namespace. The means for directory data to be named and referenced. Also called the directory tree.
- monetary format
- Specifies the monetary symbol used by specific region, whether the symbol goes before or after its value, and how monetary units are represented.
- multi-master replication
- An advanced replication scenario in which two servers each hold a copy of the same read-write replica. Each server maintains a changelog for the replica. Modifications made on one server are automatically replicated to the other server. In case of conflict, a time stamp is used to determine which server holds the most recent version.
- multiplexor
- The server containing the database link that communicates with the remote server.
N
- n + 1 directory problem
- The problem of managing multiple instances of the same information in different directories, resulting in increased hardware and personnel costs.
- name collisions
- Multiple entries with the same distinguished name.
- nested role
- Allows the creation of roles that contain other roles.
- network management application
- Network Management Station component that graphically displays information about SNMP managed devices, such as which device is up or down and which and how many error messages were received.
- network management station
See NMS.
- NIS
- Network Information Service. A system of programs and data files that Unix machines use to collect, collate, and share specific information about machines, users, filesystems, and network parameters throughout a network of computers.
- NMS
- Powerful workstation with one or more network management applications installed. Also network management station.
- ns-slapd
- Red Hat's LDAP Directory Server daemon or service that is responsible for all actions of the Directory Server.
See Also slapd.
O
- object class
- Defines an entry type in the directory by defining which attributes are contained in the entry.
- object identifier
- A string, usually of decimal numbers, that uniquely identifies a schema element, such as an object class or an attribute, in an object-oriented system. Object identifiers are assigned by ANSI, IETF or similar organizations.
See Also OID.
- OID
See object identifier.
- operational attribute
- Contains information used internally by the directory to keep track of modifications and subtree properties. Operational attributes are not returned in response to a search unless explicitly requested.
P
- parent access
- When granted, indicates that users have access to entries below their own in the directory tree if the bind DN is the parent of the targeted entry.
- pass-through authentication
See PTA.
- pass-through subtree
- In pass-through authentication, the PTA directory server will pass through bind requests to the authenticating directory server from all clients whose DN is contained in this subtree.
- password file
- A file on Unix machines that stores Unix user login names, passwords, and user ID numbers. It is also known as
/etc/passwdbecause of where it is kept. - password policy
- A set of rules that governs how passwords are used in a given directory.
- PDU
- Encoded messages which form the basis of data exchanges between SNMP devices. Also protocol data unit.
- permission
- In the context of access control, permission states whether access to the directory information is granted or denied and the level of access that is granted or denied.
See Also access rights.
- pointer CoS
- A pointer CoS identifies the template entry using the template DN only.
- presence index
- Allows searches for entries that contain a specific indexed attribute.
- protocol
- A set of rules that describes how devices on a network exchange information.
- protocol data unit
See PDU.
- proxy authentication
- A special form of authentication where the user requesting access to the directory does not bind with its own DN but with a proxy DN.
- proxy DN
- Used with proxied authorization. The proxy DN is the DN of an entry that has access permissions to the target on which the client-application is attempting to perform an operation.
- PTA
- Mechanism by which one Directory Server consults another to check bind credentials. Also pass-through authentication.
- PTA directory server
- In pass-through authentication (PTA), the PTA Directory Server is the server that sends (passes through) bind requests it receives to the authenticating directory server.
- PTA LDAP URL
- In pass-through authentication, the URL that defines the authenticating directory server, pass-through subtree(s), and optional parameters.
R
- RAM
- Random access memory. The physical semiconductor-based memory in a computer. Information stored in RAM is lost when the computer is shut down.
- rc.local
- A file on Unix machines that describes programs that are run when the machine starts. It is also called
/etc/rc.localbecause of its location. - RDN
- The name of the actual entry itself, before the entry's ancestors have been appended to the string to form the full distinguished name. Also relative distinguished name.
- read-only replica
- A replica that refers all update operations to read-write replicas. A server can hold any number of read-only replicas.
- read-write replica
- A replica that contains a master copy of directory information and can be updated. A server can hold any number of read-write replicas.
- referential integrity
- Mechanism that ensures that relationships between related entries are maintained within the directory.
- referral
- (1) When a server receives a search or update request from an LDAP client that it cannot process, it usually sends back to the client a pointer to the LDAP sever that can process the request.(2) In the context of replication, when a read-only replica receives an update request, it forwards it to the server that holds the corresponding read-write replica. This forwarding process is called a referral.
- relative distinguished name
See RDN.
- replica
- A database that participates in replication.
- replica-initiated replication
- Replication configuration where replica servers, either hub or consumer servers, pull directory data from supplier servers. This method is available only for legacy replication.
- replication
- Act of copying directory trees or subtrees from supplier servers to replica servers.
- replication agreement
- Set of configuration parameters that are stored on the supplier server and identify the databases to replicate, the replica servers to which the data is pushed, the times during which replication can occur, the DN and credentials used by the supplier to bind to the consumer, and how the connection is secured.
- RFC
- Request for Comments. Procedures or standards documents submitted to the Internet community. People can send comments on the technologies before they become accepted standards.
- role
- An entry grouping mechanism. Each role has members, which are the entries that possess the role.
- role-based attributes
- Attributes that appear on an entry because it possesses a particular role within an associated CoS template.
- root
- The most privileged user available on Unix machines. The root user has complete access privileges to all files on the machine.
- root suffix
- The parent of one or more sub suffixes. A directory tree can contain more than one root suffix.
S
- SASL
- An authentication framework for clients as they attempt to bind to a directory. Also Simple Authentication and Security Layer .
- schema
- Definitions describing what types of information can be stored as entries in the directory. When information that does not match the schema is stored in the directory, clients attempting to access the directory may be unable to display the proper results.
- schema checking
- Ensures that entries added or modified in the directory conform to the defined schema. Schema checking is on by default, and users will receive an error if they try to save an entry that does not conform to the schema.
- Secure Sockets Layer
See SSL.
- self access
- When granted, indicates that users have access to their own entries if the bind DN matches the targeted entry.
- Server Console
- Java-based application that allows you to perform administrative management of your Directory Server from a GUI.
- server daemon
- The server daemon is a process that, once running, listens for and accepts requests from clients.
- Server Selector
- Interface that allows you select and configure servers using a browser.
- server service
- A process on Windows that, once running, listens for and accepts requests from clients. It is the SMB server on Windows NT.
- service
- A background process on a Windows machine that is responsible for a particular system task. Service processes do not need human intervention to continue functioning.
- SIE
- Server Instance Entry. The ID assigned to an instance of Directory Server during installation.
- Simple Authentication and Security Layer
See SASL.
- Simple Network Management Protocol
See SNMP.
- single-master replication
- The most basic replication scenario in which multiple servers, up to four, each hold a copy of the same read-write replicas to replica servers. In a single-master replication scenario, the supplier server maintains a changelog.
- SIR
- slapd
- LDAP Directory Server daemon or service that is responsible for most functions of a directory except replication.
See Also ns-slapd.
- SNMP
- Used to monitor and manage application processes running on the servers by exchanging data about network activity. Also Simple Network Management Protocol.
- SNMP master agent
- Software that exchanges information between the various subagents and the NMS.
- SNMP subagent
- Software that gathers information about the managed device and passes the information to the master agent. Also called a subagent.
- SSL
- A software library establishing a secure connection between two parties (client and server) used to implement HTTPS, the secure version of HTTP. Also called Secure Sockets Layer.
- standard index
- index maintained by default.
- sub suffix
- A branch underneath a root suffix.
- subagent
See SNMP subagent.
- substring index
- Allows for efficient searching against substrings within entries. Substring indexes are limited to a minimum of two characters for each entry.
- suffix
- The name of the entry at the top of the directory tree, below which data is stored. Multiple suffixes are possible within the same directory. Each database only has one suffix.
- superuser
- The most privileged user available on Unix machines. The superuser has complete access privileges to all files on the machine. Also called root.
- supplier
- Server containing the master copy of directory trees or subtrees that are replicated to replica servers.
- supplier server
- In the context of replication, a server that holds a replica that is copied to a different server is called a supplier for that replica.
- supplier-initiated replication
- Replication configuration where supplier servers replicate directory data to any replica servers.
- symmetric encryption
- Encryption that uses the same key for both encrypting and decrypting. DES is an example of a symmetric encryption algorithm.
- system index
- Cannot be deleted or modified as it is essential to Directory Server operations.
T
- target
- In the context of access control, the target identifies the directory information to which a particular ACI applies.
- target entry
- The entries within the scope of a CoS.
- TCP/IP
- Transmission Control Protocol/Internet Protocol. The main network protocol for the Internet and for enterprise (company) networks.
- template entry
See CoS template entry.
- time/date format
- Indicates the customary formatting for times and dates in a specific region.
- TLS
- The new standard for secure socket layers; a public key based protocol. Also Transport Layer Security.
- topology
- The way a directory tree is divided among physical servers and how these servers link with one another.
- Transport Layer Security
See TLS.
U
- uid
- A unique number associated with each user on a Unix system.
- URL
- Uniform Resource Locater. The addressing system used by the server and the client to request documents. It is often called a location. The format of a URL is protocol://machine:port/document. The port number is necessary only on selected servers, and it is often assigned by the server, freeing the user of having to place it in the URL.
V
- virtual list view index
- Speeds up the display of entries in the Directory Server Console. Virtual list view indexes can be created on any branch point in the directory tree to improve display performance.
See Also browsing index.
A
- access control
- ACI attribute, ACI Structure
- ACI syntax, The ACI Syntax
- allowing or denying access, Allowing or Denying Access
- and replication, Access Control and Replication
- and schema checking, Targeting Attributes
- anonymous access, Anonymous Access (anyone Keyword)
- bind rules, Bind Rules
- access at specific time or day, Defining Access at a Specific Time of Day or Day of Week
- access based on value matching, Defining Access Based on Value Matching
- general access, General Access (all Keyword)
- user and group access, Defining User Access - userdn Keyword
- Boolean bind rules, Using Boolean Bind Rules
- compatibility with earlier versions, Compatibility with Earlier Releases
- creating from console, Creating ACIs from the Console
- dynamic targets, LDAP URLs
- for a specific level of secure connection, Requiring a Certain Level of Security in Connections
- from specific domain, Defining Access from a Specific Domain
- from specific IP address, Defining Access from a Specific IP Address
- logging information, Logging Access Control Information
- overview, Managing Access Control
- permissions, Defining Permissions
- placement of ACIs, ACI Placement
- rights, Assigning Rights
- roles, Using Roles Securely
- SASL authentication, Defining Access Based on Authentication Method
- simple authentication, Defining Access Based on Authentication Method
- SSL authentication, Defining Access Based on Authentication Method
- structure of ACIs, ACI Structure
- target DN
- containing comma, Targeting a Directory Entry
- target DN containing comma, Defining Permissions for DNs That Contain a Comma
- targeting, Defining Targets
- targeting attribute values, Targeting Attribute Values Using LDAP Filters
- targeting attributes, Targeting Attributes
- targeting entries, Targeting a Directory Entry
- targeting using filters, Targeting Entries or Attributes Using LDAP Filters
- using the Access Control Editor, Creating ACIs from the Console
- value matching, Defining Access Based on Value Matching
- viewing
- Access Control Editor, Viewing ACIs
- get effective rights, Checking Access Rights on Entries (Get Effective Rights)
- Access Control Editor
- displaying, Displaying the Access Control Editor
- access control instruction (ACI). See ACI, ACI Structure
- access log
- configuring
- deletion policy, Defining a Log File Deletion Policy
- rotation policy, Defining a Log File Rotation Policy
- manually rotating, Manual Log File Rotation
- viewing, Viewing Log Files
- account inactivation, Inactivating Users and Roles
- from command line, Inactivating and Activating Users and Roles Using the Command Line
- from console, Activating and Inactivating Users and Roles Using the Console
- PAM pass-through authentication, Setting PAM PTA Mappings
- account lockout, Configuring the Account Lockout Policy Using the Console
- configuration
- configuring, Configuring the Account Lockout Policy
- using command line, Configuring the Account Lockout Policy Using the Command Line
- using console, Configuring the Account Lockout Policy Using the Console
- disabling, Configuring the Account Lockout Policy Using the Console
- enabling, Configuring the Account Lockout Policy Using the Console
- lockout duration, Configuring the Account Lockout Policy Using the Console
- password failure counter, Configuring the Account Lockout Policy Using the Console
- replicating attributes, Replicating Account Lockout Attributes
- replication, Managing the Account Lockouts and Replication
- ACI, Access Control Principles
- assessment, ACI Structure
- attribute, ACI Placement
- authmethod keyword, Defining Access Based on Authentication Method
- bind rules, The ACI Syntax
- cascading chaining, Configuring Cascading Chaining from the Command Line
- creating from console, Creating a New ACI
- dayofweek keyword, Defining Access at a Specific Time of Day or Day of Week
- deleting from console, Deleting an ACI
- dns keyword, Defining Access from a Specific Domain
- editing from console, Editing an ACI
- evaluation, ACI Evaluation
- examples of use, Access Control Usage Examples
- groupdn keyword, Defining Group Access - groupdn Keyword
- inheritance, Using the userattr Keyword with Inheritance
- ip keyword, Defining Access from a Specific IP Address
- local evaluation
- cascading chaining, Configuring Cascading Chaining from the Command Line
- name, The ACI Syntax
- permissions, The ACI Syntax
- precedence rule, ACI Evaluation
- proxy rights example, Proxied Authorization ACI Example
- replication, Access Control and Replication
- rights, Assigning Rights
- roledn keyword, Defining Role Access - roledn Keyword
- ssf keyword, Requiring a Certain Level of Security in Connections
- structure, ACI Structure
- syntax, The ACI Syntax
- targattrfilters keyword, Targeting Attribute Values Using LDAP Filters
- target, The ACI Syntax
- target DN
- containing comma, Targeting a Directory Entry
- target DN containing comma, Defining Permissions for DNs That Contain a Comma
- target keywords, Defining Targets
- target overview, Defining Targets
- targetattr keyword, Targeting Attributes
- targetfilter keyword, Targeting Entries or Attributes Using LDAP Filters
- userattr and parent, Using the userattr Keyword with Inheritance
- userattr keyword, Using the userattr Keyword
- using macro ACIs, Advanced Access Control: Using Macro ACIs
- value-based, Targeting Attribute Values Using LDAP Filters
- viewing current, Viewing ACIs
- wildcard in target, Targeting a Directory Entry
- wildcards, Wildcards
- ACI attribute
- default index for, Overview of System Indexes
- overview, ACI Structure
- ACI placement, ACI Placement
- ACI targets, Targeting a Directory Entry
- ACL, Access Control Principles
- activating accounts
- from command line, Inactivating and Activating Users and Roles Using the Command Line
- from console, Activating and Inactivating Users and Roles Using the Console
- Active Directory
- schema differences between Directory Server, User Schema Differences between Red Hat Directory Server and Active Directory, Group Schema Differences between Red Hat Directory Server and Active Directory
- add right, Assigning Rights
- adding directory entries, Adding Entries Using ldapmodify
- Admin Server
- and replication, Replicating o=NetscapeRoot for Admin Server Failover
- starting and stopping, Starting and Stopping Admin Server
- algorithm
- metaphone phonetic algorithm, Approximate Searches
- search, Overview of the Searching Algorithm
- All IDs Threshold, Indexing Performance
- all keyword, General Access (all Keyword)
- allowing access, Allowing or Denying Access
- anonymous access, Defining Access Based on Authentication Method
- example, Examples
- overview, Anonymous Access (anyone Keyword)
- anonymous binds
- disabling, Disabling Anonymous Binds
- resource limits, Setting Resource Limits on Anonymous Binds
- anyone keyword, Anonymous Access (anyone Keyword)
- approximate index, About Index Types
- query string codes, Approximate Searches
- approximate search, Using Operators in Search Filters
- attribute
- ACI, ACI Structure
- adding, Modifying an Entry Using LDIF
- adding multiple values, Adding Attribute Values
- adding to entry, Adding an Attribute to an Entry
- creating, Creating Attributes
- defining in schema, Creating Attributes, Creating Custom Schema Files
- deleting, Modifying an Entry Using LDIF, Deleting Schema
- deleting using LDIF update statements, Deleting All Values of an Attribute Using LDIF
- editing, Editing Custom Schema Elements
- nsslapd-schemacheck, Turning Schema Checking On and Off
- passwordChange, Configuring a Global Password Policy Using the Command Line
- passwordExp, Configuring a Global Password Policy Using the Command Line
- passwordGraceLimit, Configuring a Global Password Policy Using the Command Line
- passwordInHistory, Configuring a Global Password Policy Using the Command Line
- passwordMaxRepeats, Configuring a Global Password Policy Using the Command Line
- passwordMin8bit, Configuring a Global Password Policy Using the Command Line
- passwordMinAlphas, Configuring a Global Password Policy Using the Command Line
- passwordMinCategories, Configuring a Global Password Policy Using the Command Line
- passwordMinDigits, Configuring a Global Password Policy Using the Command Line
- passwordMinLowers, Configuring a Global Password Policy Using the Command Line
- passwordMinSpecials, Configuring a Global Password Policy Using the Command Line
- passwordMinTokenLength, Configuring a Global Password Policy Using the Command Line
- passwordMinUppers, Configuring a Global Password Policy Using the Command Line
- passwordMustChange, Configuring a Global Password Policy Using the Command Line
- passwordStorageScheme, Configuring a Global Password Policy Using the Command Line
- ref, Creating Smart Referrals from the Command Line
- removing a value, Adding Attribute Values
- searching for, Using Attributes in Search Filters
- standard, Overview of Schema
- targeting, Targeting Attributes
- very large, Adding Very Large Attributes
- viewing, Viewing Attributes and Object Classes
- attribute encryption, Configuring Attribute Encryption
- importing and exporting encrypted databases, Exporting and Importing an Encrypted Database
- attribute subtypes, Adding an Attribute Subtype
- adding, Adding an Attribute Subtype
- binary, Adding an Attribute Subtype
- language, Adding an Attribute Subtype
- pronunciation, Adding an Attribute Subtype
- attribute type field (LDIF), About the LDIF File Format
- attribute uniqueness plug-in, Enforcing Attribute Uniqueness
- configuring, Configuring Attribute Uniqueness
- creating an instance of, Creating an Instance of the Attribute Uniqueness Plug-in
- examples, Attribute Uniqueness Plug-in Syntax Examples
- markerObjectClass, Using the markerObjectClass and requiredObjectClass Keywords
- requiredObjectClass, Using the markerObjectClass and requiredObjectClass Keywords
- syntax, Attribute Uniqueness Plug-in Syntax
- attribute value field (LDIF), About the LDIF File Format
- attribute values
- adding, Modifying an Entry Using LDIF
- deleting, Deleting a Specific Attribute Value Using LDIF
- modifying, Changing an Attribute Value Using LDIF
- replacing, Modifying an Entry Using LDIF
- attributes
- allowed, Object Classes
- defined, Attributes
- linked attributes, Linking Attributes to Manage Attribute Values
- about, About Linking Attributes
- creating instance, Configuring Attribute Links
- syntax, Looking at the Linking Attributes Plug-in Syntax
- linking
- fixup-linkedattrs.pl, Regenerating Linked Attributes Using fixup-linkedattrs.pl
- managing, Managing Attributes and Values
- required, Object Classes
- syntax, Directory Server Attribute Syntaxes
- unique number assignments, Assigning and Managing Unique Numeric Attribute Values
- configuring, Configuring Unique Number Assignments, Editing the DNA Plug-in in the Console
- magic number, Assigning and Managing Unique Numeric Attribute Values
- overview, Assigning and Managing Unique Numeric Attribute Values
- syntax, Looking at the DNA Plug-in Syntax
- usage, Assigning and Managing Unique Numeric Attribute Values
- attributes values
- audit log
- configuring
- deletion policy, Defining a Log File Deletion Policy
- rotation policy, Defining a Log File Rotation Policy
- disabling, Enabling or Disabling Logs
- enabling, Enabling or Disabling Logs
- viewing, Viewing Log Files
- authentication
- access control and, Defining Access Based on Authentication Method
- autobind
- configuring, Configuring Autobind
- overview, Overview of Autobind and LDAPI
- bind DN, Logging into Directory Server
- certificate-based, Using Certificate-Based Authentication
- for database links, Using Different Bind Mechanisms
- LDAP URLs, Examples of LDAP URLs
- over TLS/SSL, Configuring the Directory Server to Run in SSL/TLS
- SASL, Using SASL
- SASL mechanisms, Authentication Mechanisms for SASL in Directory Server
- using PAM, Using PAM for Pass-through Authentication
- authmethod keyword, Defining Access Based on Authentication Method
- autobind
- configuring, Configuring Autobind
- overview, Overview of Autobind and LDAPI
B
- backing up data, Backing up and Restoring Data
- bak2db script, Using the bak2db Command-Line Script
- bak2db.pl perl script, Using bak2db.pl Perl Script
- base 64 encoding, Representing Binary Data
- base DN, ldapsearch and, Using LDAP_BASEDN
- binary data, LDIF and, Representing Binary Data
- binary subtype, Adding an Attribute Subtype
- bind credentials
- for database links, Providing Bind Credentials
- bind DN
- accessing the server, Logging into Directory Server
- resource limits based on, Setting Resource Limits Based on the Bind DN
- viewing current, Viewing the Current Console Bind DN
- bind rules
- access at specific time or day, Defining Access at a Specific Time of Day or Day of Week
- access based on authentication method, Defining Access Based on Authentication Method
- LDIF example, Examples
- access based on value matching
- overview, Defining Access Based on Value Matching
- ACI syntax, The ACI Syntax
- all keyword, General Access (all Keyword)
- anonymous access, Anonymous Access (anyone Keyword)
- anyone keyword, Anonymous Access (anyone Keyword)
- authmethod keyword, Defining Access Based on Authentication Method
- Boolean, Using Boolean Bind Rules
- dayofweek keyword, Defining Access at a Specific Time of Day or Day of Week
- dns keyword, Defining Access from a Specific Domain
- general access, General Access (all Keyword)
- example, Examples
- group access, Defining Group Access - groupdn Keyword
- group access example, Granting a Group Full Access to a Suffix
- groupdn keyword, Defining Group Access - groupdn Keyword
- ip keyword, Defining Access from a Specific IP Address
- LDAP URLs, LDAP URLs
- LDIF keywords, Bind Rule Syntax
- overview, Bind Rules
- parent keyword, Parent Access (parent Keyword)
- role access, Defining Role Access - roledn Keyword
- roledn keyword, Defining Role Access - roledn Keyword
- self keyword, Self Access (self Keyword)
- ssf keyword, Requiring a Certain Level of Security in Connections
- timeofday keyword, Defining Access at a Specific Time of Day or Day of Week
- user access
- LDIF example, Examples
- parent, Parent Access (parent Keyword)
- self, Self Access (self Keyword)
- user access example, Granting Write Access to Personal Entries
- userattr keyword, Using the userattr Keyword
- userdn keyword, Defining User Access - userdn Keyword
- binds
- anonymous, Disabling Anonymous Binds
- requiring secure, Requiring Secure Binds
- special types, Enabling Different Types of Binds
- unauthenticated, Allowing Unauthenticated Binds
- Boolean bind rules
- example, Using Boolean Bind Rules
- overview, Using Boolean Bind Rules
- Boolean operators, in search filters, Using Compound Search Filters
- browsing index, About Index Types
- browsing indexes
- creating
C
- cache memory size
- and import operations, Importing Entries with Large Attributes
- cascading chaining
- client ACIs, Configuring Cascading Chaining from the Command Line
- configuration attributes, Summary of Cascading Chaining Configuration Attributes
- configuring from command line, Configuring Cascading Chaining from the Command Line
- configuring from console, Configuring Cascading Chaining Using the Console
- example, Cascading Chaining Configuration Example
- local ACI evaluation, Configuring Cascading Chaining from the Command Line
- loop detection, Detecting Loops
- overview, Overview of Cascading Chaining
- proxy admin user ACI, Configuring Cascading Chaining from the Command Line
- proxy authorization, Configuring Cascading Chaining from the Command Line
- cascading replication
- initializing the replicas, Setting up the Replication Agreements
- introduction, Cascading Replication
- setting up, Configuring Cascading Replication
- certificate
- mapping to a DN, Using Certificate-Based Authentication
- password, Creating a Password File for the Directory Server
- certificate database
- password, Using TLS/SSL
- certificate-based authentication, Using Certificate-Based Authentication
- setting up, Using Certificate-Based Authentication
- certificates
- for authenticating to the Directory Server, Configuring Directory Server to Accept Certificate-Based Authentication from LDAP Clients
- certmap.conf
- defined, Mapping DNs to Certificates
- editing, Editing the certmap.conf File
- examples, Example certmap.conf Mappings
- chaining
- cascading, Overview of Cascading Chaining
- component operations, from command line, Chaining Component Operations from the Command Line
- component operations, from console, Chaining Component Operations Using the Console
- overview, Creating and Maintaining Database Links
- using SSL, Creating a New Database Link Using the Console, Providing an LDAP URL
- change operations, Using LDIF Update Statements to Create or Modify Entries
- add, Modifying an Entry Using LDIF
- delete, Modifying an Entry Using LDIF
- replace, Modifying an Entry Using LDIF
- change type
- changelog, Changelog
- deleting, Removing the Changelog
- character type, About Locales
- ciphers
- list of
- SSLv3, Available Ciphers
- TLSv1, Available Ciphers
- none,MD5
- MD5 message authentication, Selecting the Encryption Cipher
- overview, Setting Security Preferences
- selecting, Setting Security Preferences
- cl-dump.pl script, Troubleshooting Replication-Related Problems
- class of service (CoS), Assigning Class of Service
- access control, Access Control and CoS
- classic
- example, How a Classic CoS Works
- overview, How a Classic CoS Works
- cosPriority attribute, Handling Multi-valued Attributes with CoS
- creating, Creating a New CoS
- definition entry, Creating the CoS Definition Entry from the Command Line
- editing, Creating the CoS Template Entry
- indirect
- example, How an Indirect CoS Works
- overview, How an Indirect CoS Works
- pointer
- example, How a Pointer CoS Works
- overview, How a Pointer CoS Works
- qualifiers
- override, Handling Physical Attribute Values
- template entry
- creating, Creating the CoS Template Entry
- overview, About the CoS Template Entry
- classic CoS
- example, How a Classic CoS Works
- overview, How a Classic CoS Works
- client
- using to find entries, Finding Directory Entries
- client authentication, Configuring Directory Server to Accept Certificate-Based Authentication from LDAP Clients
- cn=fixup linked attributes task, Regenerating Linked Attributes Using ldapmodify
- cn=memberof task, Initializing and Regenerating memberOf Attributes Using ldapmodify
- cn=schema reload task, Reloading Schema Using ldapmodify
- cn=task
- cn=schema reload task, Reloading Schema Using ldapmodify
- cn=tasks
- cn=backup, Backing up the Database through the cn=tasks Entry
- cn=export, Exporting through the cn=tasks Entry
- cn=fixup linked attributes, Regenerating Linked Attributes Using ldapmodify
- cn=import, Importing through the cn=tasks Entry
- cn=memberof task, Initializing and Regenerating memberOf Attributes Using ldapmodify
- cn=restore, Restoring the Database through the cn=tasks Entry
- creating browsing indexes, Using a cn=tasks Entry to Create a Browsing Index
- creating indexes, Using a cn=tasks Entry to Create an Index
- code page, About Locales
- collation order
- international index, Creating Indexes from the Server Console
- overview, About Locales
- search filters and, Searching an Internationalized Directory
- command line
- providing input from, Providing Input from the Command Line
- command-line scripts
- db2bak, Backing up All Databases from the Command Line
- db2bak.pl, Backing up All Databases from the Command Line
- fixup-linkedattrs.pl, Regenerating Linked Attributes Using fixup-linkedattrs.pl
- fixup-memberof.pl, Initializing and Regenerating memberOf Attributes Using fixup-memberof.pl
- schema-reload.pl, Reloading Schema Using schema-reload.pl
- command-line utilities
- certificate-based authentication and, Using Certificate-Based Authentication
- ldapdelete, Deleting Entries Using ldapdelete
- ldapmodify, Adding and Modifying Entries Using ldapmodify
- ldapsearch, LDAP Search Filters
- ldif, Base-64 Encoding
- ldif2db, Running the db2index.pl Script
- commas, in DNs, Using Special Characters, Targeting a Directory Entry
- using ldapsearch with, Specifying DNs That Contain Commas in Search Filters
- compare right, Assigning Rights
- compatibility
- compound search filters, Using Compound Search Filters
- configuration attributes
- account lockout, Configuring the Account Lockout Policy Using the Command Line
- cascading chaining, Summary of Cascading Chaining Configuration Attributes
- password policy, Configuring a Global Password Policy Using the Command Line
- suffix, Creating Root and Sub Suffixes from the Command Line
- connections
- LDAPI (Unix sockets), Overview of Autobind and LDAPI
- configuring, Enabling LDAPI
- monitoring, Monitoring the Server from the Directory Server Console
- requiring secure, Requiring Secure Connections
- viewing number of, Monitoring the Server from the Directory Server Console
- consumer initialization
- filesystem replica, Filesystem Replica Initialization
- manual consumer creation, Manual Consumer Initialization Using the Command Line
- online consumer creation, Online Consumer Initialization Using the Console
- consumer server, Suppliers and Consumers
- continued lines
- in LDIF, Continuing Lines in LDIF
- in LDIF update statements, Using LDIF Update Statements to Create or Modify Entries
- CoS (class of service), Assigning Class of Service
- CoS definition entry
- attributes, Creating the CoS Definition Entry from the Command Line
- object classes, Creating the CoS Definition Entry from the Command Line
- CoS qualifiers
- default, Handling Physical Attribute Values
- override, Handling Physical Attribute Values
- CoS template entry, About the CoS Template Entry
- creating, Creating the CoS Template Entry
- cosPriority attribute, Handling Multi-valued Attributes with CoS
- counter, password failures, Configuring the Account Lockout Policy Using the Console
- country code, Supported Locales
- creating a database
- from the command line, Creating a New Database for a Single Suffix from the Command Line
- from the console, Creating a New Database for an Existing Suffix Using the Console
- creating a virtual DIT, Using Views
- creating the directory, Defining Directories Using LDIF
- custom distribution function
- adding to suffix, Adding Multiple Databases for a Single Suffix
- custom distribution logic
- adding databases, Adding Multiple Databases for a Single Suffix
- adding to suffix, Adding Multiple Databases for a Single Suffix
- custom schema files, Creating Custom Schema Files
D
- dash, in change operation, Using LDIF Update Statements to Create or Modify Entries
- data consistency
- using referential integrity, Maintaining Referential Integrity
- database
- and associated suffix, Creating and Maintaining Suffixes
- backing up
- backup, Backing up and Restoring Data
- backup files, Backing up All Databases from the Console
- backup from console, Backing up All Databases
- creating from command line, Creating a New Database for a Single Suffix from the Command Line
- creating from console, Creating a New Database for an Existing Suffix Using the Console
- creating multiple, Adding Multiple Databases for a Single Suffix
- creating using LDIF, Defining Directories Using LDIF
- deleting, Deleting a Database
- export, Exporting Data
- cn=tasks, Exporting through the cn=tasks Entry
- db2ldif, Exporting a Database Using db2ldif or db2ldif.pl
- db2ldif.pl, Exporting a Database Using db2ldif or db2ldif.pl
- encrypted database, Exporting and Importing an Encrypted Database
- export from console, Exporting Directory Data to LDIF Using the Console
- import, Importing Data
- cn=tasks, Importing through the cn=tasks Entry
- encrypted database, Exporting and Importing an Encrypted Database
- ldif2db, Importing Using the ldif2db Command-Line Script
- ldif2db.pl, Importing Using the ldif2db.pl Perl Script
- ldif2ldap, Importing Using the ldif2ldap Command-Line Script
- initialization, Initializing a Database from the Console
- making read-only, Placing a Database in Read-Only Mode
- monitoring from command line, Monitoring Databases from the Command Line
- monitoring from server console, Monitoring Database Activity from the Directory Server Console
- overview, Creating and Maintaining Databases
- read-only mode, Placing a Database in Read-Only Mode
- replication, What Directory Units Are Replicated
- restore, Backing up and Restoring Data
- restoring
- bak2db, Using the bak2db Command-Line Script
- bak2db.pl, Using bak2db.pl Perl Script
- cn=tasks, Restoring the Database through the cn=tasks Entry
- restoring from console, Restoring All Databases from the Console
- selecting for monitoring, Monitoring Database Activity
- viewing backend information, Monitoring Database Activity
- database link
- cascading
- configuring from command line, Configuring Cascading Chaining from the Command Line
- configuring from console, Configuring Cascading Chaining Using the Console
- overview, Overview of Cascading Chaining
- chaining with SSL, Creating a New Database Link Using the Console, Providing an LDAP URL
- configuration, Creating a New Database Link
- configuration attributes, Summary of Database Link Configuration Attributes
- configuration example, Summary of Database Link Configuration Attributes
- configuring bind and authentication, Using Different Bind Mechanisms
- configuring bind credentials, Providing Bind Credentials
- configuring defaults, Configuring Database Link Defaults
- configuring failover servers, Providing a List of Failover Servers
- configuring LDAP URL, Providing an LDAP URL
- configuring suffix, Creating a Database Link from the Command Line
- creating from command line, Creating a Database Link from the Command Line
- creating from console, Creating a New Database Link Using the Console
- deleting, Deleting Database Links
- maintaining remote server info, Maintaining Database Links
- overview, Creating and Maintaining Database Links
- database server parameters
- databases
- in Directory Server, Configuring Directory Databases
- date format, About Locales
- dayofweek keyword, Defining Access at a Specific Time of Day or Day of Week
- db2bak script, Backing up All Databases from the Command Line
- db2bak utility, Backing up All Databases from the Command Line
- db2bak.pl script, Backing up All Databases from the Command Line
- db2ldif utility, Exporting a Database Using db2ldif or db2ldif.pl
- db2ldif.pl, Exporting a Database Using db2ldif or db2ldif.pl
- debug
- and replication timeouts, Setting Replication Timeout Periods
- default CoS qualifier, Handling Physical Attribute Values
- default referrals
- setting, Setting Default Referrals
- setting from console, Setting a Default Referral Using the Console
- settings from command line, Setting a Default Referral from the Command Line
- defining
- access control policy, Creating ACIs from the Console
- attributes, Creating Attributes
- object classes, Creating Object Classes
- delete right, Assigning Rights
- deleting
- ACI, Deleting an ACI
- attribute values, Deleting a Specific Attribute Value Using LDIF
- attributes, Modifying an Entry Using LDIF, Deleting Schema
- database link, Deleting Database Links
- entries, Deleting an Entry Using LDIF
- multiple attributes, Modifying an Entry Using LDIF
- object classes, Deleting Schema
- deleting directory entries, Deleting Entries Using ldapdelete
- deleting schema elements, Deleting Schema
- denying access, Allowing or Denying Access
- precedence rule, ACI Evaluation
- directory creation, Defining Directories Using LDIF
- directory entries
- adding using LDIF, Adding Entries Using LDIF
- creating, Creating Directory Entries
- deleting, Deleting Directory Entries
- managing from command line, Managing Entries from the Command Line
- managing from console, Managing Entries from the Directory Console
- modifying, Modifying Directory Entries
- moving, A Note on Renaming Entries
- renaming, A Note on Renaming Entries
- Directory Manager
- attribute, Setting the Directory Manager Information
- configuring, Setting the Directory Manager Information
- privileges, Setting the Directory Manager Information
- Directory Server
- attributes, Setting the Directory Manager Information
- basic administration, Basic Red Hat Directory Server Settings
- binding to, Logging into Directory Server
- changing bind DN, Changing Login Identity
- configuration, Changing Directory Server Port Numbers
- configuring SASL authentication at startup, Configuring SASL Authentication at Directory Server Startup
- connecting over LDAPI (Unix sockets), Overview of Autobind and LDAPI
- controlling access, Managing Access Control
- creating a root entry, Creating a Root Entry
- creating content, Populating Directory Databases
- creating entries, Creating Directory Entries
- data, Populating Directory Databases
- databases, Configuring Directory Databases
- deleting entries, Deleting Directory Entries
- file locations, Directory Server File Locations
- importing data, Importing Data
- international charactersets, Internationalization
- login, Logging into Directory Server
- managing attributes, Managing Attributes and Values
- managing entries, Creating Directory Entries
- MIB, Using the Management Information Base
- modifying entries, Modifying Directory Entries
- monitoring, Types of Directory Server Log Files
- monitoring from command line, Monitoring the Directory Server from the Command Line
- monitoring with SNMP, Monitoring Directory Server Using SNMP
- overview, Basic Red Hat Directory Server Settings
- performance counters, Monitoring Server Activity, Enabling and Disabling Counters
- reloading schema, Dynamically Reloading Schema
- cn=schema reload task, Reloading Schema Using ldapmodify
- schema-reload.pl, Reloading Schema Using schema-reload.pl
- starting and stopping, Starting and Stopping Directory Server from the Command Line
- starting the Console, Starting the Directory Server Console
- suffixes, Configuring Directory Databases
- supported languages, Supported Locales
- Directory Server Console
- managing certificates, Managing Certificates Used by the Directory Server Console
- starting, Starting the Directory Server Console
- directory trees
- finding entries in, Using ldapsearch
- disabling suffixes, Disabling a Suffix
- disk space
- access log and, Enabling or Disabling Logs
- log files and, Manual Log File Rotation
- distributed number assignment, Assigning and Managing Unique Numeric Attribute Values
- about ranges, Assigning and Managing Unique Numeric Attribute Values
- basic example, Looking at the DNA Plug-in Syntax
- complete example, Looking at the DNA Plug-in Syntax
- configuring, Configuring Unique Number Assignments, Editing the DNA Plug-in in the Console
- Directory Server behavior, Assigning and Managing Unique Numeric Attribute Values
- for attributes, Assigning and Managing Unique Numeric Attribute Values
- overview, Assigning and Managing Unique Numeric Attribute Values
- scope, Assigning and Managing Unique Numeric Attribute Values
- syntax, Looking at the DNA Plug-in Syntax
- distribution function, Adding Multiple Databases for a Single Suffix
- dn field (LDIF), About the LDIF File Format
- DNs
- nested DNs and syntax, Enabling Strict Syntax Validation for DNs
- validating syntax, Enabling Strict Syntax Validation for DNs
- nested DNs, Enabling Strict Syntax Validation for DNs
- dns keyword, Defining Access from a Specific Domain
- ds-logpipe.py, Replacing Log Files with a Named Pipe
- using plug-ins, Loading Plug-ins with the Named Pipe Log Script
- dse.ldif file
- backing up, Backing up the dse.ldif Configuration File
- restoring, Restoring the dse.ldif Configuration File
- dynamic groups, Creating Dynamic Groups in the Console
- creating, Creating Dynamic Groups in the Console
- modifying, Creating Dynamic Groups in the Console
E
- editing
- attributes, Editing Custom Schema Elements
- object classes, Editing Custom Schema Elements
- encryption
- attribute, Configuring Attribute Encryption
- database, Configuring Attribute Encryption
- end of file marker, Providing Input from the Command Line
- entity table, Entity Table
- entries
- adding an object class, Adding or Removing an Object Class to an Entry
- adding attributes, Adding an Attribute to an Entry
- adding using LDIF, Adding Entries Using LDIF
- adding using LDIF update statements, Adding an Entry Using LDIF
- adding very large attributes, Adding Very Large Attributes
- creating, Creating Directory Entries
- using LDIF, Specifying Directory Entries Using LDIF
- deleting, Deleting Directory Entries
- using ldapdelete, Deleting Entries Using ldapdelete
- deleting using LDIF update statements, Deleting an Entry Using LDIF
- distribution, Creating Databases
- finding, Using ldapsearch
- managing, Creating Directory Entries
- managing from command line, Managing Entries from the Command Line
- managing from console, Managing Entries from the Directory Console
- modifying, Modifying Directory Entries
- using ldapmodify, Adding and Modifying Entries Using ldapmodify
- using LDIF update statements, Modifying an Entry Using LDIF
- moving, A Note on Renaming Entries
- order of creation, Providing Input from the Command Line
- order of deletion, Deleting Entries Using ldapdelete
- removing an object class, Adding or Removing an Object Class to an Entry
- renaming, A Note on Renaming Entries
- root, Defining Directories Using LDIF
- targeting, Targeting a Directory Entry
- entry distribution, Creating Databases
- entry ID list, Indexing Performance
- environment variables
- LDAP_BASEDN, Using LDAP_BASEDN
- EOF marker, Providing Input from the Command Line
- equality index, About Index Types
- equality search, Using Operators in Search Filters
- example, Using Attributes in Search Filters
- international example, Equality Example
- error log
- access control information, Logging Access Control Information
- configuring
- deletion policy, Defining a Log File Deletion Policy
- rotation policy, Defining a Log File Rotation Policy
- manually rotating, Manual Log File Rotation
- viewing, Viewing Log Files
- example
- cascading chaining, Cascading Chaining Configuration Example
- exporting data, Exporting Data
- cn=tasks, Exporting through the cn=tasks Entry
- db2ldif, Exporting a Database Using db2ldif or db2ldif.pl
- db2ldif.pl, Exporting a Database Using db2ldif or db2ldif.pl
- encrypted database, Exporting and Importing an Encrypted Database
- using console, Exporting Directory Data to LDIF Using the Console
- extending the directory schema, Managing the Directory Schema
F
- failover servers
- for database links, Providing a List of Failover Servers
- File locations, Directory Server File Locations
- files
- access log, Types of Directory Server Log Files
- database backup, Backing up All Databases from the Console
- EOF marker, Providing Input from the Command Line
- id2entry.db4, Overview of Standard Indexes
- Filesystem Hierarchy Standard, Directory Server File Locations
- filesystem replica initialization, Filesystem Replica Initialization
- filtered role
- creating, Creating a Filtered Role
- example, Creating a Filtered Role through the Command Line
- finding
- attributes, Using Attributes in Search Filters
- entries, Using ldapsearch
- fixup-linkedattrs.pl, Regenerating Linked Attributes Using fixup-linkedattrs.pl
- fixup-memberof.pl, Initializing and Regenerating memberOf Attributes Using fixup-memberof.pl
- format, LDIF, LDAP Data Interchange Format
- fractional replication, Replicating a Subset of Attributes with Fractional Replication
G
- general access
- example, Examples
- overview, General Access (all Keyword)
- get effective rights, Checking Access Rights on Entries (Get Effective Rights)
- return codes, Get Effective Rights Return Codes
- global password policy, Configuring the Password Policy
- glue entries, Solving Orphan Entry Conflicts
- greater than or equal to search
- international example, Greater-Than or Equal-to Example
- overview, Using Operators in Search Filters
- groupdn keyword, Defining Group Access - groupdn Keyword
- LDIF examples, Defining Group Access - groupdn Keyword
- groupdnattr keyword, Using the userattr Keyword
- groups
- access control, Defining User Access - userdn Keyword
- access control example, Granting a Group Full Access to a Suffix
- access to directory, Defining Group Access - groupdn Keyword
- configuring the memberOf plug-in, Configuring an Instance of the MemberOf Plug-in from the Command Line, Editing the MemberOf Plug-in from the Console, Editing the MemberOf Plug-in from the Command Line
- differences between Directory Server and Active Directory, Group Schema Differences between Red Hat Directory Server and Active Directory
- dynamic, Creating Dynamic Groups in the Console
- creating, Creating Dynamic Groups in the Console
- modifying, Creating Dynamic Groups in the Console
- fixup-memberof.pl, Initializing and Regenerating memberOf Attributes Using fixup-memberof.pl
- memberOf
- cn=memberof task, Initializing and Regenerating memberOf Attributes Using ldapmodify
- overview, Using Groups
- static, Creating Static Groups in the Console
- creating, Creating Static Groups in the Console
- modifying, Creating Static Groups in the Console
- GSS-API, Authentication Mechanisms for SASL in Directory Server
H
I
- id field (LDIF), About the LDIF File Format
- id2entry.db4 file, Overview of Standard Indexes
- identity mapping
- importing
- buffer size, Importing Entries with Large Attributes
- large attributes, Importing Entries with Large Attributes
- importing data, Importing Data
- cn=tasks, Importing through the cn=tasks Entry
- encrypted database, Exporting and Importing an Encrypted Database
- from console, Importing a Database from the Console
- ldif2ldap, Importing Using the ldif2ldap Command-Line Script
- using ldif2db, Importing Using the ldif2db Command-Line Script
- using ldif2db.pl, Importing Using the ldif2db.pl Perl Script
- inactivating accounts, Inactivating Users and Roles
- inactivating roles, Making a Role Inactive or Active
- index types, About Index Types
- approximate index, About Index Types
- browsing index, About Index Types
- equality index, About Index Types
- international index, About Index Types
- presence index, About Index Types
- substring index, About Index Types
- virtual list view index, About Index Types
- indexes
- creating
- creating dynamically, Creating Indexes from the Command Line
- dynamic changes to, Creating Indexes from the Command Line
- matching rules, Using Matching Rules
- presence, Overview of System Indexes
- indexing, About Index Types
- creating indexes from console, Creating Indexes from the Server Console
- system indexes, Overview of System Indexes
- indirect CoS
- example, How an Indirect CoS Works
- overview, How an Indirect CoS Works
- init scripts
- configuring SASL authentication, Configuring SASL Authentication at Directory Server Startup
- initializing databases, Initializing a Database from the Console
- initializing replicas
- cascading replication, Setting up the Replication Agreements
- filesystem replica, Filesystem Replica Initialization
- interaction table, Interaction Table
- international charactersets, Internationalization
- international index, About Index Types
- collation order, Creating Indexes from the Server Console
- international searches, Searching an Internationalized Directory
- equality, Equality Example
- examples, International Search Examples
- greater than, Greater-Than Example
- greater than or equal to, Greater-Than or Equal-to Example
- less than, Less-Than Example
- less than or equal to, Less-Than or Equal-to Example
- substring, Substring Example
- using OIDs, Matching Rule Formats
- internationalization
- character type, About Locales
- collation order, About Locales
- country code, Supported Locales
- date format, About Locales
- language tag, Supported Locales
- locales and, About Locales
- location of files, About Locales
- modifying entries, Modifying an Entry in an Internationalized Directory
- monetary format, About Locales
- object identifiers and, Supported Locales
- of LDIF files, Storing Information in Multiple Languages
- search filters and, Searching an Internationalized Directory
- supported locales, Supported Locales
- time format, About Locales
- ip keyword, Defining Access from a Specific IP Address
J
- jpeg images, Representing Binary Data
K
L
- language code
- in LDIF entries, Storing Information in Multiple Languages
- list of supported, Supported Locales
- language subtype, Adding an Attribute Subtype
- language support
- language tag, Supported Locales
- searching and, Searching an Internationalized Directory
- specifying using locales, Supported Locales
- language tags
- described, Supported Locales
- in international searches, Using a Language Tag for the Matching Rule
- in LDIF update statements, Modifying an Entry in an Internationalized Directory
- LDAP clients
- authentication over SSL, Configuring Directory Server to Accept Certificate-Based Authentication from LDAP Clients
- certificate-based authentication and, Using Certificate-Based Authentication
- monitoring database with, Monitoring Databases from the Command Line
- monitoring server with, Monitoring the Directory Server from the Command Line
- using to find entries, Finding Directory Entries
- LDAP Data Interchange Format, see LDIF, Using LDIF Update Statements to Create or Modify Entries
- LDAP search filters
- DNs with commas and, Specifying DNs That Contain Commas in Search Filters
- in targets, Targeting Entries or Attributes Using LDAP Filters
- LDAP URLs
- components of, Components of an LDAP URL
- examples, Examples of LDAP URLs
- for database links, Providing an LDAP URL
- in access control, LDAP URLs
- security, Examples of LDAP URLs
- syntax, Components of an LDAP URL
- ldapdelete utility, Adding and Modifying Entries Using ldapmodify
- deleting entries, Deleting Entries Using ldapdelete
- DNs with commas and, Using Special Characters
- example, Deleting Entries Using ldapdelete
- LDAPI
- enabling, Enabling LDAPI
- overview, Overview of Autobind and LDAPI
- ldapmodify utility, Adding and Modifying Entries Using ldapmodify
- attributes with language tags, Modifying an Entry in an Internationalized Directory
- creating a root entry, Creating a Root Entry from the Command Line
- creating entries, Adding Entries Using ldapmodify
- DNs with commas and, Using Special Characters
- example, Adding Entries Using ldapmodify
- example of use, Adding Entries Using ldapmodify
- modifying entries, Adding and Modifying Entries Using ldapmodify
- schema checking and, Adding and Modifying Entries Using ldapmodify
- vs. ldapdelete, Adding and Modifying Entries Using ldapmodify
- ldapsearch utility
- base DN and, Using LDAP_BASEDN
- commonly used options, Commonly Used ldapsearch Options
- DNs with commas and, Using Special Characters
- example of use, Examples of Common ldapsearches
- format, ldapsearch Command-Line Format
- international searches, Searching an Internationalized Directory
- limiting attributes returned, Displaying Subsets of Attributes
- search filters, LDAP Search Filters
- specifying files, Displaying Subsets of Attributes
- using, Using ldapsearch
- LDAP_BASEDN environment variable, Using LDAP_BASEDN
- LDIF
- access control keywords
- groupdnattr, Using the userattr Keyword
- userattr, Using the userattr Keyword
- adding entries, Adding Entries Using LDIF
- binary data, Representing Binary Data
- change type, Using LDIF Update Statements to Create or Modify Entries
- entry format, LDAP Data Interchange Format
- organization, Specifying Domain Entries
- organizational person, Specifying Organizational Person Entries
- organizational unit, Specifying Organizational Unit Entries
- example, LDIF File Example
- internationalization and, Storing Information in Multiple Languages
- line continuation, Continuing Lines in LDIF
- Server Console and, Adding Entries Using LDIF
- specifying entries
- organization, Specifying Domain Entries
- organizational person, Specifying Organizational Person Entries
- organizational unit, Specifying Organizational Unit Entries
- update statements, Using LDIF Update Statements to Create or Modify Entries
- using to create directory, Defining Directories Using LDIF
- LDIF entries
- binary data in, Representing Binary Data
- creating, Specifying Directory Entries Using LDIF
- organizational person, Specifying Organizational Person Entries
- organizational units, Specifying Organizational Unit Entries
- organizations, Specifying Domain Entries
- internationalization and, Storing Information in Multiple Languages
- LDIF files
- continued lines, Continuing Lines in LDIF
- creating directory using, Defining Directories Using LDIF
- creating multiple entries, Adding Entries Using LDIF
- example, LDIF File Example
- importing from Server Console, Adding Entries Using LDIF
- internationalization and, Storing Information in Multiple Languages
- LDIF format, LDAP Data Interchange Format
- LDIF update statements, Using LDIF Update Statements to Create or Modify Entries
- adding attributes, Adding Attributes to Existing Entries Using LDIF
- adding entries, Adding an Entry Using LDIF
- continued lines, Using LDIF Update Statements to Create or Modify Entries
- deleting attribute values, Deleting a Specific Attribute Value Using LDIF
- deleting attributes, Deleting All Values of an Attribute Using LDIF
- deleting entries, Deleting an Entry Using LDIF
- modifying attribute values, Changing an Attribute Value Using LDIF
- modifying entries, Modifying an Entry Using LDIF
- syntax, Using LDIF Update Statements to Create or Modify Entries
- ldif utility
- converting binary data to LDIF, Base-64 Encoding
- ldif2db utility, Importing Using the ldif2db Command-Line Script
- options, Running the db2index.pl Script
- ldif2db.pl perl script, Importing Using the ldif2db.pl Perl Script
- ldif2ldap utility, Importing Using the ldif2ldap Command-Line Script
- legacy consumer
- configuration, Configuring Legacy Replication
- legacy replication plug-in
- less than or equal to search
- international example, Less-Than or Equal-to Example
- syntax, Using Operators in Search Filters
- less than search
- international example, Less-Than Example
- syntax, Using Operators in Search Filters
- linked attributes, Linking Attributes to Manage Attribute Values
- about, About Linking Attributes
- and replication, About Linking Attributes
- attribute requirements, About Linking Attributes
- creating, Configuring Attribute Links
- data consistency and ACIs, About Linking Attributes
- scope, About Linking Attributes
- syntax, Looking at the Linking Attributes Plug-in Syntax
- local password policy, Configuring the Password Policy
- locales
- defined, About Locales
- location of files, About Locales
- supported, Supported Locales
- locked accounts, Configuring the Account Lockout Policy Using the Console
- lockout duration, Configuring the Account Lockout Policy Using the Console
- log files, Types of Directory Server Log Files
- access log, Types of Directory Server Log Files
- audit log, Types of Directory Server Log Files
- deletion policy, Defining a Log File Deletion Policy
- error log, Types of Directory Server Log Files
- location of, Manual Log File Rotation
- manually rotating, Manual Log File Rotation
- rotation policy, Defining a Log File Rotation Policy
- setting file permissions, Defining a Log File Rotation Policy
- viewing, Viewing Log Files
- viewing when server is down, Viewing Log Files
- logging
- for WinSync, Troubleshooting
- login identity
- changing, Changing Login Identity
- viewing, Viewing the Current Console Bind DN
- logs
- named pipe script
- permanently configuring named pipe, Using the Named Pipe for Logging
- replacing with named pipe, Replacing Log Files with a Named Pipe
- transaction
- loop detection
- cascading chaining, Detecting Loops
M
- macro ACIs
- example, Macro ACI Example
- overview, Advanced Access Control: Using Macro ACIs
- syntax, Macro ACI Syntax
- managed device
- overview, About SNMP
- managed object, About SNMP
- managed role
- creating, Creating a Managed Role
- example, Creating Managed Roles through the Command Line
- manually rotating log files, Manual Log File Rotation
- markerObjectClass keyword, Using the markerObjectClass and requiredObjectClass Keywords
- matching rules, Using Matching Rules
- international formats, Matching Rule Formats
- list of supported, Using Matching Rules
- matchingRule format
- using language tag, Using a Language Tag for the Matching Rule
- using language tag and suffix, Using a Language Tag and Suffix for the Matching Rule
- using OID, Matching Rule Formats
- using OID and suffix, Using an OID and Suffix for the Matching Rule
- memberOf plug-in
- configuring, Configuring an Instance of the MemberOf Plug-in from the Command Line
- from the command line, Editing the MemberOf Plug-in from the Command Line
- from the console, Editing the MemberOf Plug-in from the Console
- metaphone phonetic algorithm, Approximate Searches
- MIB
- Directory Server, Using the Management Information Base
- redhat-directory.mib, Using the Management Information Base
- entity table, Entity Table
- entries table, Entries Table
- interaction table, Interaction Table
- operations table, Operations Table
- modifying
- attribute values, Changing an Attribute Value Using LDIF
- entries, Modifying an Entry Using LDIF
- international entries, Modifying an Entry in an Internationalized Directory
- modutil
- loading PKCS#11 modules, Installing PKCS#11 Modules Through the Command Line
- monetary format, About Locales
- monitoring
- database from command line, Monitoring Databases from the Command Line
- database from server console, Monitoring Database Activity from the Directory Server Console
- Directory Server, Types of Directory Server Log Files
- from console, Monitoring Server Activity
- log files, Types of Directory Server Log Files
- replication status, Monitoring Replication Status
- threads, Monitoring the Server from the Directory Server Console
- with SNMP, Monitoring Directory Server Using SNMP
- monitoring from console, Monitoring Server Activity
- moving entries, A Note on Renaming Entries
- multi-master replication
- introduction, Multi-Master Replication
- preventing monopolization of the consumer, Preventing Monopolization of the Consumer in Multi-Master Replication
- setting up, Configuring Multi-Master Replication
- multiple search filters, Using Compound Search Filters
N
- named pipe log script
- configuring, Replacing Log Files with a Named Pipe
- named pipe logging script
- configuring in dse.ldif, Using the Named Pipe for Logging
- named pipe script
- using plug-ins, Loading Plug-ins with the Named Pipe Log Script
- naming conflicts
- in replication, Solving Naming Conflicts
- nested role
- creating, Creating a Nested Role
- example, Creating Nested Role through the Command Line
- NetscapeRoot
- and replication, Replicating o=NetscapeRoot for Admin Server Failover
- nsds5ReplicaBusyWaitTime, Preventing Monopolization of the Consumer in Multi-Master Replication
- nsds5ReplicaSessionPauseTime, Preventing Monopolization of the Consumer in Multi-Master Replication
- nsslapd-idlistscanlimit, Overview of the Searching Algorithm
- nsslapd-lookthroughlimit attribute
- role in searching algorithm, Overview of the Searching Algorithm
- nsslapd-maxbersize, Adding Very Large Attributes
- nsslapd-schemacheck attribute, Turning Schema Checking On and Off
- nsslapd-sizelimit attribute
- role in searching algorithm, Overview of the Searching Algorithm
- nsslapd-timelimit attribute
- role in searching algorithm, Overview of the Searching Algorithm
- nsview, Using Views
- nsviewfilter, Using Views
O
- object class
- adding to an entry, Adding or Removing an Object Class to an Entry
- allowed attributes, Object Classes
- creating, Creating Object Classes
- defined, Object Classes
- defining in schema, Creating Object Classes, Creating Custom Schema Files
- deleting, Deleting Schema
- editing, Editing Custom Schema Elements
- inheritance, Object Classes
- parent object class, Object Classes
- referral, Creating Smart Referrals from the Command Line
- removing from an entry, Adding or Removing an Object Class to an Entry
- required attributes, Object Classes
- standard, Overview of Schema
- user-defined, Viewing Attributes and Object Classes
- viewing, Viewing Attributes and Object Classes
- object identifier, Managing Object Identifiers
- object identifier (OID), Supported Locales
- in matchingRule, Matching Rule Formats
- matching rule, Using Matching Rules
- objectClass field (LDIF), About the LDIF File Format
- OID
- getting and assigning, Managing Object Identifiers
- OID, See object identifier, Supported Locales
- operations, Monitoring the Server from the Directory Server Console
- operations table, Operations Table
- operators
- Boolean, Using Compound Search Filters
- international searches and, Supported Search Types
- search filters and, Using Operators in Search Filters
- suffix, Supported Search Types
- organization, specifying entries for, Specifying Domain Entries
- organizational person, specifying entries for, Specifying Organizational Person Entries
- organizational unit, specifying entries for, Specifying Organizational Unit Entries
- override CoS qualifier, Handling Physical Attribute Values
P
- PAM pass-through authentication, Using PAM for Pass-through Authentication
- and account inactivation, Setting PAM PTA Mappings
- and password policies, Using PAM for Pass-through Authentication
- configuration options, PAM Pass-through Authentication Configuration Options
- configuring, Configuring PAM Pass-through Authentication
- entry mapping methods, Setting PAM PTA Mappings
- example, Configuring PAM Pass-through Authentication
- general settings, Configuring General PAM PTA Settings
- target subtrees, Specifying the Subtrees to Target for PAM PTA
- parent access, Parent Access (parent Keyword)
- parent keyword, Parent Access (parent Keyword)
- parent object class, Object Classes
- pass-through authentication
- pass-through authentication (PTA), Using Pass-through Authentication
- password change extended operation, Password Change Extended Operation
- password file
- Admin Server, Creating a Password File for the Admin Server
- SSL certificate, Creating a Password File for the Directory Server
- password policy
- account lockout, Configuring the Account Lockout Policy Using the Console
- attributes, Configuring a Global Password Policy Using the Command Line
- configuring, Configuring the Password Policy
- using command line, Configuring a Global Password Policy Using the Command Line
- using console, Configuring a Global Password Policy Using the Console
- global, Configuring the Password Policy
- lockout duration, Configuring the Account Lockout Policy Using the Console
- managing, Managing the Password Policy
- password failure counter, Configuring the Account Lockout Policy Using the Console
- replicating account lockout attributes, Replicating Account Lockout Attributes
- replication, Managing the Account Lockouts and Replication
- subtree level, Configuring the Password Policy
- user level, Configuring the Password Policy
- Password Sync, Managing the Password Sync Service
- installation directory, Step 4: Install the Password Sync Service
- installed files, Step 4: Install the Password Sync Service
- installing, Step 4: Install the Password Sync Service
- modifying, Modifying Password Sync
- setting up SSL, Step 5: Configure the Password Sync Service
- starting and stopping, Starting and Stopping the Password Sync Service
- uninstalling, Uninstalling Password Sync Service
- passwordChange attribute, Configuring a Global Password Policy Using the Command Line
- passwordExp attribute, Configuring a Global Password Policy Using the Command Line
- passwordGraceLimit attribute, Configuring a Global Password Policy Using the Command Line
- passwordInHistory attribute, Configuring a Global Password Policy Using the Command Line
- passwordMaxRepeats attribute, Configuring a Global Password Policy Using the Command Line
- passwordMin8bit attribute, Configuring a Global Password Policy Using the Command Line
- passwordMinAlphas attribute, Configuring a Global Password Policy Using the Command Line
- passwordMinCategories attribute, Configuring a Global Password Policy Using the Command Line
- passwordMinDigits attribute, Configuring a Global Password Policy Using the Command Line
- passwordMinLowers attribute, Configuring a Global Password Policy Using the Command Line
- passwordMinSpecials attribute, Configuring a Global Password Policy Using the Command Line
- passwordMinTokenLength attribute, Configuring a Global Password Policy Using the Command Line
- passwordMinUppers attribute, Configuring a Global Password Policy Using the Command Line
- passwordMustChange attribute, Configuring a Global Password Policy Using the Command Line
- passwords
- account lockout, Configuring the Account Lockout Policy Using the Console
- certificate, Creating a Password File for the Directory Server
- changing, Password Change Extended Operation
- failure counter, Configuring the Account Lockout Policy Using the Console
- lockout duration, Configuring the Account Lockout Policy Using the Console
- policy
- differences between Directory Server and Active Directory, Password Policies
- setting, Setting User Passwords
- syncing with Active Directory, Managing the Password Sync Service
- passwordStorageScheme attribute, Configuring a Global Password Policy Using the Command Line
- PDUs, About SNMP
- performance counters, Monitoring Database Activity from the Directory Server Console
- configuring 64-bit, Monitoring Server Activity, Monitoring Database Activity, Using the Management Information Base
- configuring 64-bit integers, Enabling and Disabling Counters
- monitoring the server with, Monitoring Server Activity
- server attributes, Enabling and Disabling Counters
- permissions
- ACI syntax, The ACI Syntax
- allowing or denying access, Allowing or Denying Access
- assigning rights, Assigning Rights
- overview, Defining Permissions
- precedence rule, ACI Evaluation
- PKCS#11 modules, Using External Security Devices
- installing through the command line, Installing PKCS#11 Modules Through the Command Line
- installing through the Console, Installing PKCS#11 Modules Through the Directory Server Console
- plug-ins
- disabling, Enabling Plug-ins
- distributed number assignment, Assigning and Managing Unique Numeric Attribute Values
- enabling, Enabling Plug-ins
- linked attributes, Linking Attributes to Manage Attribute Values
- about, About Linking Attributes
- creating instance, Configuring Attribute Links
- scope, About Linking Attributes
- syntax, Looking at the Linking Attributes Plug-in Syntax
- setting precedence, Setting the Plug-in Precedence
- pointer CoS
- example, How a Pointer CoS Works
- overview, How a Pointer CoS Works
- port number
- Directory Server configuration, Changing Directory Server Port Numbers
- for SSL communications, Changing Directory Server Port Numbers
- precedence rule
- ACI, ACI Evaluation
- preferences
- security, Setting Security Preferences
- presence index, About Index Types
- defaults, Overview of System Indexes
- presence search
- example, Using Attributes in Search Filters
- syntax, Using Operators in Search Filters
- preventing monopolization of the consumer in multi-master replication, Preventing Monopolization of the Consumer in Multi-Master Replication
- pronunciation subtype, Adding an Attribute Subtype
- Property Editor
- displaying, Modifying Directory Entries
- protocol data units. See PDUs, About SNMP
- proxy authorization
- ACI example, Proxied Authorization ACI Example
- with cascading chaining, Configuring Cascading Chaining from the Command Line
- proxy DN, Proxied Authorization ACI Example
- proxy right, Assigning Rights
- PTA plug-in
- configuring, Configuring the PTA Plug-in
- examples, PTA Plug-in Syntax Examples
- syntax, PTA Plug-in Syntax
- use in Directory Server, Using Pass-through Authentication
Q
- quotation marks, in parameter values, Using Special Characters
R
- read right, Assigning Rights
- read-only mode, Monitoring Database Activity from the Directory Server Console
- database, Placing a Database in Read-Only Mode
- read-only replica, Read-Write and Read-Only Replicas
- read-write replica, Read-Write and Read-Only Replicas
- redhat-directory.mib, Using the Management Information Base
- entity table, Entity Table
- entries table, Entries Table
- interaction table, Interaction Table
- operations table, Operations Table
- ref attribute, Creating Smart Referrals from the Command Line
- refer command, Starting the Server in Referral Mode
- referential integrity
- attributes, How Referential Integrity Works
- disabling, Enabling and Disabling Referential Integrity in the Console
- enabling, Enabling and Disabling Referential Integrity in the Console
- log file, How Referential Integrity Works
- modifying attributes, Modifying the Attribute List from the Console
- overview, Maintaining Referential Integrity
- with replication, Using Referential Integrity with Replication
- referral mode, Starting the Server in Referral Mode
- referral object class, Creating Smart Referrals from the Command Line
- referrals
- creating smart referrals, Creating Smart Referrals
- creating suffix, Creating Suffix Referrals
- on update, Creating Suffix Referrals Using the Console
- setting default, Setting Default Referrals
- suffix, Creating Suffix Referrals Using the Console
- reloading schema, Dynamically Reloading Schema
- cn=schema reload task, Reloading Schema Using ldapmodify
- schema-reload.pl, Reloading Schema Using schema-reload.pl
- renaming entries
- restrictions, A Note on Renaming Entries
- repl-monitor.pl script, Monitoring Replication Status from Administration Express
- replacing attribute values, Modifying an Entry Using LDIF
- replica
- exporting to LDIF, Exporting a Replica to LDIF
- read-only, Read-Write and Read-Only Replicas
- read-write, Read-Write and Read-Only Replicas
- replicate_now.sh script, Forcing Replication Updates from the Command Line
- replication
- and access control, Access Control and Replication
- and ou=NetscapeRoot, Replicating o=NetscapeRoot for Admin Server Failover
- and password policy, Managing the Account Lockouts and Replication
- and referential integrity, Using Referential Integrity with Replication
- and SSL, Replication over SSL
- and the Admin Server, Replicating o=NetscapeRoot for Admin Server Failover
- cascading, Configuring Cascading Replication
- changelog, Changelog
- compatibility with earlier versions, Compatibility with Earlier Versions of Directory Server
- configuring from the command line, Configuring Replication from the Command Line
- configuring legacy replication, Configuring Legacy Replication
- configuring SSL, Replication over SSL
- consumer server, Suppliers and Consumers
- creating the supplier bind DN, Creating the Supplier Bind DN Entry
- forcing synchronization, Forcing Replication Updates
- fractional, Replicating a Subset of Attributes with Fractional Replication
- hub, Suppliers and Consumers
- managing, Managing Replication
- monitoring status, Monitoring Replication Status
- multi-master, Configuring Multi-Master Replication
- of ACIs, Access Control and Replication
- overview, Replication Overview
- replicate_now.sh script, Forcing Replication Updates from the Command Line
- replicating account lockout attributes, Replicating Account Lockout Attributes
- replication manager entry, Replication Identity
- single-master, Configuring Single-Master Replication
- solving conflicts, Solving Common Replication Conflicts
- supplier bind DN, Replication Identity
- supplier server, Suppliers and Consumers
- supplier-initiated, Suppliers and Consumers
- timeout periods, Setting Replication Timeout Periods
- troubleshooting, Troubleshooting Replication-Related Problems
- unit of, What Directory Units Are Replicated
- using cl-dump.pl script, Troubleshooting Replication-Related Problems
- using repl-monitor.pl script, Monitoring Replication Status from Administration Express
- replication agreement, Replication Agreement
- replication manager, Replication Identity
- requiredObjectClass keyword, Using the markerObjectClass and requiredObjectClass Keywords
- resource limits, Setting Resource Limits Based on the Bind DN
- setting
- for anonymous binds, Setting Resource Limits on Anonymous Binds
- using command line, Setting Resource Limits Using the Command Line
- using console, Setting Resource Limits Using the Console
- Resource Summary
- resource use
- restoring data, Backing up and Restoring Data
- bak2db, Using the bak2db Command-Line Script
- bak2db.pl, Using bak2db.pl Perl Script
- cn=tasks, Restoring the Database through the cn=tasks Entry
- dse.ldif, Restoring the dse.ldif Configuration File
- from console, Restoring All Databases from the Console
- replicated entries, Restoring Databases That Include Replicated Entries
- retro changelog
- and access control, Retro Changelog and the Access Control Policy
- attributes, Using the Retro Changelog Plug-in
- object class, Using the Retro Changelog Plug-in
- searching, Retro Changelog and the Access Control Policy
- trimming, Trimming the Retro Changelog
- retro changelog plug-in
- rights
- list of, Assigning Rights
- roledn keyword, Defining Role Access - roledn Keyword
- roles, Using Roles
- access control, Using Roles Securely
- access to directory, Defining Role Access - roledn Keyword
- activating, Activating and Inactivating Users and Roles Using the Console
- assigning, Editing and Assigning Roles to an Entry
- filtered
- creating, Creating a Filtered Role
- example, Creating a Filtered Role through the Command Line
- inactivating, Making a Role Inactive or Active
- managed
- creating, Creating a Managed Role
- example, Creating Managed Roles through the Command Line
- nested
- creating, Creating a Nested Role
- example, Creating Nested Role through the Command Line
- overview, About Roles
- root DN, see Directory Manager, Setting the Directory Manager Information
- root DSE, Searching the Root DSE Entry
- root entry creation, Defining Directories Using LDIF
- root suffix, Creating Suffixes
- creating from command line, Creating Root and Sub Suffixes from the Command Line
- creating from console, Creating a New Root Suffix Using the Console
S
- SASL, Using SASL
- authentication, Defining Access Based on Authentication Method
- configuring
- KDC server, About the KDC Server and Keytabs
- configuring authentication at startup, Configuring SASL Authentication at Directory Server Startup
- configuring server to server mappings, About SASL Identity Mapping
- identity mapping, About SASL Identity Mapping
- configuring form the Console, Configuring SASL Identity Mapping from the Console
- configuring from the command line, Configuring SASL Identity Mapping from the Command Line
- default, Default SASL Mappings for Directory Server
- KDC server
- configuration example, About the KDC Server and Keytabs
- Kerberos, About Kerberos with Directory Server
- Kerberos realms, About Principals and Realms
- mechanisms, Authentication Mechanisms for SASL in Directory Server
- overview, Using SASL
- password change extended operation, Password Change Extended Operation
- requiring for connections, Requiring Secure Connections
- requiring secure binds, Requiring Secure Binds
- Solaris configuration, Setting up Kerberos on Solaris
- /etc/gss/mech, Setting up Kerberos on Solaris
- Kerberos, Setting up Kerberos on Solaris
- keytab, Setting up Kerberos on Solaris
- schema
- adding new attributes, Creating Attributes, Creating Custom Schema Files
- assigning OIDs, Managing Object Identifiers
- checking, Turning Schema Checking On and Off
- creating new attributes, Creating Attributes
- creating new object classes, Creating Object Classes
- custom files, Creating Custom Schema Files
- deleting attributes, Deleting Schema
- deleting elements, Deleting Schema
- deleting object classes, Deleting Schema
- differences between Directory Server and Active Directory, User Schema Differences between Red Hat Directory Server and Active Directory, Group Schema Differences between Red Hat Directory Server and Active Directory
- cn, Values for cn Attributes
- initials, Constraints on the initials Attribute
- street and streetAddress, Values for street and streetAddress
- editing attributes, Editing Custom Schema Elements
- editing object classes, Editing Custom Schema Elements
- extending, Managing the Directory Schema
- nsslapd-schemacheck attribute, Turning Schema Checking On and Off
- reloading, Dynamically Reloading Schema
- cn=schema reload task, Reloading Schema Using ldapmodify
- schema-reload.pl, Reloading Schema Using schema-reload.pl
- standard, Managing the Directory Schema
- viewing attributes, Viewing Attributes and Object Classes
- viewing object classes, Viewing Attributes and Object Classes
- schema checking
- and access control, Targeting Attributes
- ldapmodify and, Adding and Modifying Entries Using ldapmodify
- overview, Turning Schema Checking On and Off
- turning on or off, Turning Schema Checking On and Off
- turning on or off in the command line, Turning Schema Checking On and Off
- schema-reload.pl, Reloading Schema Using schema-reload.pl
- scripts
- cl-dump.pl, Troubleshooting Replication-Related Problems
- repl-monitor.pl, Monitoring Replication Status from Administration Express
- search filters, LDAP Search Filters
- Boolean operators, Using Compound Search Filters
- contained in file, Displaying Subsets of Attributes
- examples, LDAP Search Filters
- matching rule, Using Matching Rules
- operators in, Using Operators in Search Filters
- specifying attributes, Using Attributes in Search Filters
- syntax, LDAP Search Filters
- using compound, Using Compound Search Filters
- using multiple, Using Compound Search Filters
- Search Performance, Search Performance
- search right, Assigning Rights
- search types
- list of, Using Operators in Search Filters
- searches
- approximate, Using Operators in Search Filters
- equality, Using Operators in Search Filters
- example, Examples of Common ldapsearches
- greater than or equal to, Using Operators in Search Filters
- international, Searching an Internationalized Directory
- international examples, International Search Examples
- less than, Less-Than Example
- less than or equal to, Using Operators in Search Filters
- of directory tree, Using ldapsearch
- presence, Using Operators in Search Filters
- specifying scope, Commonly Used ldapsearch Options
- substring, Using Operators in Search Filters
- searching algorithm
- overview, Overview of the Searching Algorithm
- Secure Sockets Layer (SSL), Configuring the Directory Server to Run in SSL/TLS
- security
- LDAP URLs, Examples of LDAP URLs
- setting preferences, Setting Security Preferences
- security strength factor, Requiring Secure Connections
- self access, Self Access (self Keyword)
- LDIF example, Examples
- self keyword, Self Access (self Keyword)
- selfwrite right, Assigning Rights
- server parameters
- database
- setting access controls, Creating ACIs from the Console
- setting passwords, Setting User Passwords
- simple authentication, Defining Access Based on Authentication Method
- Simple Authentication and Security Layer, Using SASL
- Simple Authentication and Security Layer (SASL), Defining Access Based on Authentication Method
- simple binds
- requiring secure connections, Requiring Secure Binds
- Simple Network Management Protocol. See SNMP, About SNMP
- Simple Sockets Layer (SSL), Defining Access Based on Authentication Method
- single-master replication
- introduction, Single-Master Replication
- setting up, Configuring Single-Master Replication
- smart referrals
- creating, Creating Smart Referrals
- creating from command line, Creating Smart Referrals from the Command Line
- creating from console, Creating Smart Referrals Using the Directory Server Console
- SNMP
- configuring
- Directory Server, Configuring the Directory Server for SNMP
- managed device, About SNMP
- managed objects, About SNMP
- master agent, About SNMP
- configuring, Configuring the Master Agent
- MIB, Testing the Subagent
- entity table, Entity Table
- entries table, Entries Table
- interaction table, Interaction Table
- operations table, Operations Table
- monitoring the Directory Server, Monitoring Directory Server Using SNMP
- overview, About SNMP
- subagent, About SNMP
- configuration file, Creating the Subagent Configuration File
- location, Configuring the Subagent
- starting, Starting the Subagent
- testing the subagent, Testing the Subagent
- Solaris
- SASL configuration, Setting up Kerberos on Solaris
- /etc/gss/mech, Setting up Kerberos on Solaris
- Kerberos, Setting up Kerberos on Solaris
- keytab, Setting up Kerberos on Solaris
- SSF, Requiring Secure Connections
- ACI example, Setting an ACI to Require a Certain Security Strength Factor for Some Operations
- and SASL, Requiring Secure Connections
- and Start TLS, Requiring Secure Connections
- bind rule keyword, Requiring a Certain Level of Security in Connections
- setting minimum, Requiring Secure Connections
- ssf keyword, Requiring a Certain Level of Security in Connections
- SSL
- Admin Server password file, Creating a Password File for the Admin Server
- and replication, Replication over SSL
- authentication, Configuring the Directory Server to Run in SSL/TLS
- CA certificate error messages, Managing Certificates Used by the Directory Server Console
- certificate password, Creating a Password File for the Directory Server
- certificate-based authentication, Using Certificate-Based Authentication
- chaining with, Creating a New Database Link Using the Console, Providing an LDAP URL
- client authentication, Configuring Directory Server to Accept Certificate-Based Authentication from LDAP Clients
- configuring clients to use, Configuring Directory Server to Accept Certificate-Based Authentication from LDAP Clients
- enabling, Configuring the Directory Server to Run in SSL/TLS
- loading PKCS#11 modules, Using External Security Devices
- managing certificates for the Directory Server Console, Managing Certificates Used by the Directory Server Console
- port number, Changing Directory Server Port Numbers
- requiring for connections, Requiring Secure Connections
- requiring secure binds, Requiring Secure Binds
- setting preferences, Setting Security Preferences
- starting the server with, Configuring the Directory Server to Run in SSL/TLS
- using external security devices, Using External Security Devices
- SSL authentication, Defining Access Based on Authentication Method
- standard
- attributes, Overview of Schema
- index files, Overview of Standard Indexes
- object classes, Overview of Schema
- schema, Managing the Directory Schema
- Start TLS, Command-Line Functions for Start TLS
- starting and stopping
- Directory Server and Admin Server, Starting and Stopping Servers
- Starting and stopping
- Directory Server Console, Starting the Directory Server Console
- starting the Directory Server
- with TLS/SSL, Configuring the Directory Server to Run in SSL/TLS
- static groups, Creating Static Groups in the Console
- creating, Creating Static Groups in the Console
- modifying, Creating Static Groups in the Console
- sub suffix, Creating Suffixes
- creating from command line, Creating Root and Sub Suffixes from the Command Line
- creating from console, Creating a New Sub Suffix Using the Console
- substring index, About Index Types
- substring index limitation, About Index Types
- substring search, Using Operators in Search Filters
- international example, Substring Example
- subtree level password policy, Configuring the Password Policy
- subtypes
- of attributes, Adding an Attribute Subtype
- suffix
- and associated database, Creating and Maintaining Suffixes
- configuration attributes, Creating Root and Sub Suffixes from the Command Line
- creating, Creating a Root Entry
- creating from command line, Creating Root and Sub Suffixes from the Command Line
- creating root suffix, Creating a New Root Suffix Using the Console
- creating sub suffix, Creating a New Sub Suffix Using the Console
- custom distribution function, Adding Multiple Databases for a Single Suffix
- custom distribution logic, Adding Multiple Databases for a Single Suffix
- disabling, Disabling a Suffix
- in Directory Server, Configuring Directory Databases
- using referrals, Creating Suffix Referrals Using the Console
- on update only, Creating Suffix Referrals Using the Console
- with multiple databases, Adding Multiple Databases for a Single Suffix
- suffix referrals
- creating, Creating Suffix Referrals
- creating from command line, Creating Suffix Referrals from the Command Line
- creating from console, Creating Suffix Referrals Using the Console
- supplier bind DN, Replication Identity
- supplier server, Suppliers and Consumers
- symbols
- '', in ldapsearch, Using Special Characters
- -, in change operation, Using LDIF Update Statements to Create or Modify Entries
- ::, in LDIF statements, Base-64 Encoding
- <, in LDIF statements, Standard LDIF Notation
- quotation marks, in ldapmodify commands, Using Special Characters
- synchronization agreement
- changing, Modifying the Sync Agreement
- syntax
- ACI statements, The ACI Syntax
- LDAP URLs, Components of an LDAP URL
- ldapsearch, ldapsearch Command-Line Format
- LDIF update statements, Using LDIF Update Statements to Create or Modify Entries
- matching rule filter, Using Matching Rules
- search filter, LDAP Search Filters
- syntax validation, Using Syntax Validation
- and error logging, Enabling Syntax Validation Warnings (Logging)
- and warnings, Enabling Syntax Validation Warnings (Logging)
- command-line perl script, Validating the Syntax of Existing Attribute Values
- enabling and disabling, Enabling or Disabling Syntax Validation
- enforcing DNs, Enabling Strict Syntax Validation for DNs
- nested DNs, Enabling Strict Syntax Validation for DNs
- related RFCs, About Syntax Validation
- syntax-validate.pl, Validating the Syntax of Existing Attribute Values
- system connections
- system indexes, Overview of System Indexes
- system resources
T
- targattrfilters keyword, Targeting Attribute Values Using LDAP Filters
- target
- ACI syntax, The ACI Syntax
- attribute values, Targeting Attribute Values Using LDAP Filters
- attributes, Targeting Attributes
- keywords in ACIs, Defining Targets
- overview, Defining Targets
- using LDAP search filters, Targeting Entries or Attributes Using LDAP Filters
- using LDAP URLs, LDAP URLs
- target DNs
- containing commas, Targeting a Directory Entry
- target keyword, Targeting a Directory Entry
- targetattr keyword, Targeting Attributes
- targetfilter keyword, Targeting Entries or Attributes Using LDAP Filters
- targeting
- directory entries, Targeting a Directory Entry
- template entry. See CoS template entry., About the CoS Template Entry
- thread
- time format, About Locales
- timeofday keyword, Defining Access at a Specific Time of Day or Day of Week
- timeout period
- for replication, Setting Replication Timeout Periods
- TLS
- requiring for connections, Requiring Secure Connections
- transaction logs
U
- unauthenticated binds, Allowing Unauthenticated Binds
- user access, Defining User Access - userdn Keyword
- example, Granting Write Access to Personal Entries
- LDIF example, Examples
- to child entries, Parent Access (parent Keyword)
- to own entry, Self Access (self Keyword)
- LDIF example, Examples
- user and group management
- referential integrity, Maintaining Referential Integrity
- user level password policy, Configuring the Password Policy
- user passwords, Setting User Passwords
- user-defined object classes, Viewing Attributes and Object Classes
- userattr keyword, Using the userattr Keyword
- restriction on add, Granting Add Permission Using the userattr Keyword
- userdn keyword, Defining User Access - userdn Keyword
- users
- activating, Activating and Inactivating Users and Roles Using the Console
- inactivating, Inactivating Users and Roles
- UTF-8, Internationalization
V
- value-based ACI, Targeting Attribute Values Using LDAP Filters
- viewing
- access control
- get effective rights, Checking Access Rights on Entries (Get Effective Rights)
- attributes, Viewing Attributes and Object Classes
- object classes, Viewing Attributes and Object Classes
- virtual list view index, About Index Types
- vlvindex command-line tool, About Index Types
W
- wildcard
- in LDAP URL, Wildcards
- in target, Targeting a Directory Entry
- wildcards
- in matching rule filters, LDAP Search Filters
- WinSync, Synchronizing Red Hat Directory Server with Microsoft Active Directory
- about, About Windows Sync
- changing the sync agreement, Modifying the Sync Agreement
- checking sync status, Checking Synchronization Status
- configuring, Configuring Windows Sync
- deleting entries, Deleting and Resurrecting Entries
- groups, Synchronizing Groups
- logging levels, Troubleshooting
- manually updating, Sending Synchronization Updates
- Password Sync service, Step 4: Install the Password Sync Service, Managing the Password Sync Service
- modifying, Modifying Password Sync
- setting up SSL, Step 5: Configure the Password Sync Service
- starting and stopping, Starting and Stopping the Password Sync Service
- uninstalling, Uninstalling Password Sync Service
- resurrecting deleted entries, Resurrecting Entries
- schema differences, User Schema Differences between Red Hat Directory Server and Active Directory, Group Schema Differences between Red Hat Directory Server and Active Directory
- troubleshooting, Troubleshooting
- users, Synchronizing Users
- write performance, Indexing Performance
- write right, Assigning Rights































