Sun Java System Directory Server Enterprise Edition 6.0 Migration Guide

Chapter 5 Architectural Changes in Directory Server 6.0

This chapter describes the architectural changes in Directory Server 6.0 that affect migration from a previous version. For information on all changes and bug fixes in Directory Server 6.0, see What’s New at a Glance in Sun Java System Directory Server Enterprise Edition 6.0 Evaluation Guide.

This chapter covers the following topics:

Changes in the Administration Framework

Directory Server 6.0 does not include an administration server, as in previous versions. Servers are now registered in the Directory Service Control Center (DSCC) and can be administered remotely by using the web-based GUI or the command-line tools.

To migrate to the new administration framework, you need to do the following:

Removal of the ServerRoot Directory

In the new administration model, a Directory Server instance is no longer tied to a ServerRoot. Each Directory Server instance is a standalone directory that can be manipulated in the same manner as an ordinary standalone directory.

Removal of the o=netscapeRoot Suffix

In previous versions of Directory Server, centralized administration information was kept in o=netscapeRoot. In the new administration model, the concept of a configuration directory server no longer exists. The o=netscapeRoot suffix is no longer required, and the netscapeRoot database files are therefore not migrated. The configuration data for this suffix can be migrated, if it is specifically required.

Changes to ACIs

The following changes have been made to ACIs in Directory Server 6.0.

Changes in the ACI Scope

In Directory Server 5.2 ACIs on the root DSE had base scope. In Directory Server 6.0, ACIs on the root DSE have global scope by default, equivalent to targetscope="subtree".

To reproduce the same behavior as Directory Server 5.2, add targetscope="base" to ACIs on the root DSE. If you use dsmig to migrate the configuration, this is done automatically.

Changes in Suffix-Level ACIs

In Directory Server 5.2, the following ACI was provided, at the suffix level:

aci: (targetattr != "nsroledn || aci || nsLookThroughLimit || 
  nsSizeLimit || nsTimeLimit || nsIdleTimeout || passwordPolicySubentry || 
  passwordExpirationTime || passwordExpWarned || passwordRetryCount || 
  retryCountResetTime || acc ountUnlockTime || passwordHistory || 
  passwordAllowChangeTime")(version 3.0; acl "Allow self entry modification 
  except for nsroledn, aci, resource limit attributes, passwordPolicySubentry 
  and password policy state attributes"; allow (write)userdn ="ldap:///self";)

This ACI allowed self-modification of user passwords, among other things. This ACI is no longer provided in Directory Server 6.0. Instead, the following global ACIs are provided by default:

aci: (targetattr != "aci") (targetscope = "base") (version 3.0; 
aci "Enable read access to rootdse for anonymous users"; 
allow(read,search,compare) user dn="ldap:///anyone"; )
aci: (targetattr = "*") (version 3.0; acl "Enable full access 
for Administrators group";  allow (all)(groupdn = 
"ldap:///cn=Administrators,cn=config"); )
aci: (targetattr = "userPassword") ( version 3.0; acl "allow 
userpassword self modification"; allow (write) userdn = "ldap:///self";)

In Directory Server 6.0, the default userPassword ACI at root DSE level provides equivalent access control to the default 5.2 ACI at suffix level. However, if you want to reproduce exactly the same access control as in 5.2, add the following ACI to your suffix. This ACI is the 5.2 ACI, with the new password policy operational attributes for Directory Server 6.0.

aci: (targetattr != "nsroledn || aci || nsLookThroughLimit || 
  nsSizeLimit || nsTimeLimit || nsIdleTimeout || passwordPolicySubentry || 
  passwordExpirationTime || passwordExpWarned || passwordRetryCount || 
  retryCountResetTime || accountUnlockTime || passwordHistory || 
  passwordAllowChangeTime || pwdAccountLockedTime || pwdChangedTime || 
  pwdFailureTime || pwdGraceUseTime || pwdHistory || 
  pwdLastAuthTime || pwdPolicySubentry || pwdReset")(version 3.0; acl "Allow self entry modification 
  except for nsroledn, aci, resource limit attributes, passwordPolicySubentry 
  and password policy state attributes"; allow (write)userdn ="ldap:///self";)

Tip –

Do not allow users write access to everything and then deny write access to specific attributes. Instead, explicitly list the attributes to which you allow write access.


Command Line Changes

In Directory Server 6.0 the functionality of most command-line tools is replaced by only two commands: dsadm and dsconf.

The following table shows commands used in Directory Server 5, and the corresponding commands for Directory Server 6.0. The default path of these commands when installed from native packages is /opt/SUNWdsee/ds6/bin. When installed from the zip installation, the default path is install-path/ds6/bin.

Table 5–1 Directory Server 5 and 6 commands

Version 5 Command 

Version 6.0 Command 

Description 

bak2db

dsadm restore

Restore a database from backup (locally, offline) 

bak2db-task

dsconf restore

Restore a database from backup (remotely, online) 

db2bak

dsadm backup

Create a database backup archive (locally, offline) 

db2bak-task

dsconf backup

Create a database backup archive (remotely, online) 

db2index

dsadm reindex

Create and generate indexes (locally, offline) 

db2index-task

dsconf reindex

Create and generate indexes (remotely, online) 

db2ldif

dsadm export

Export database contents to LDIF (locally, offline) 

db2ldif-task

dsconf export

Export database contents to LDIF (remotely, online) 

entrycmp

No change 

Compare the same entry in multiple replicas 

fildif

No change 

Create a filtered version of an LDIF file 

idsktune

No change 

Check patches and verifies system tuning 

insync

No change 

Indicate synchronization between multiple replicas 

ldif2db

dsadm import

Import database contents from LDIF (locally, offline) 

ldif2db-task

dsconf import

Import database contents from LDIF (remotely, online) 

ldif2ldap

ldapmodify -B

Import data from LDIF over LDAP (remotely, online) 

MigrateInstance5

dsmig / manual migration procedure

Migrate data from a previous version 

mmldif

No change 

Combine multiple LDIF files 

monitor

ldapsearch on cn=monitor

Retrieve performance monitoring information 

pwdhash

No change 

Print the encrypted form of a password 

repldisc

No change 

Discover a replication topology 

restart-slapd

dsadm restart

Restart a Directory Server instance 

schema_push

No change 

Update schema modification time stamps 

start-slapd

dsadm start

Start a Directory Server instance 

stop-slapd

dsadm stop

Stop a Directory Server instance 

suffix2instance

dsconf get-suffix-prop

See the backend name for a suffix 

vlvindex

dsadm reindex

Create virtual list view indexes 

Table 5–2 Directory Server 5 and 6 Commands (Subcommands of the directoryserver Command)

Version 5 Command 

Version 6.0 Command 

Description 

directoryserver accountstatus

ns-accountstatus

Establish account status 

directoryserver activate

ns-activate

Activate an entry or group of entries 

directoryserver configure

Installation procedure 

Install Directory Server 

directoryserver inactivate

ns-inactivate

Inactivate an entry or group of entries 

directoryserver unconfigure

Uninstallation procedure 

Uninstall Directory Server 

Deprecated Commands

Some version 5 commands have been deprecated in Directory Server 6.0. The following table provides a list of these commands.

Table 5–3 Version 5 Commands That Have Been Deprecated

Command 

Description 

getpwenc

Print encrypted password 

ns-ldapagt

Starts a Directory Server SNMP subagent. For information about how to do this in Directory Server 6.0, see To Set Up SNMP in Sun Java System Directory Server Enterprise Edition 6.0 Administration Guide

restore-config

Restore Administration Server configuration 

saveconfig

Save Administration Server configuration 

Changes to the Console

The downloaded, Java Swing-based console has been replaced by Directory Service Control Center (DSCC). DSCC is a graphical interface that enables you to manage an entire directory service by using a web browser. The DSCC requires no migration. Migrated Directory Server instances can be registered in the DSCC. For more information about the DSCC see Chapter 1, Directory Server Overview, in Sun Java System Directory Server Enterprise Edition 6.0 Reference.

New Password Policy

Directory Server6.0 implements a new password policy that uses the standard object class and attributes described in the “Password Policy for LDAP Directories” Internet-Draft.

The new password policy provides the following new features:

In addition, the new password policy provides the following new controls:

These controls enable LDAP clients to obtain account status information.

The LDAP_CONTROL_PWP control provides account status information on LDAP bind, search, modify, add, delete, modDN, and compare operations.

The following information is available, using the OID 1.3.6.1.4.1.42.2.27.8.5.1 in the search:

The LDAP_CONTROL_PWP control indicates warning and error conditions. The control value is a BER octet string, with the format {tii}, which has the following meaning:

pwp_resp_no_error (-1)
pwp_resp_expired_error (0)
pwp_resp_locked_error (1)
pwp_resp_need_change_error (2)
pwp_resp_mod_not_allowed_error (3)
pwp_resp_give_old_error (4)
pwp_resp_bad_qa_error (5)
pwp_resp_too_short_error (6)
pwp_resp_too_young_error (7)
pwp_resp_in_hist_error (8)

The LDAP_CONTROL_ACCOUNT_USABLE control provides account status information on LDAP search operations only.

Password Policy Compatibility

For migration purposes, the new password policy maintains compatibility with previous Directory Server versions by identifying a compatibility mode. The compatibility mode determines whether password policy attributes are handled as old attributes or new attributes, where old refers to Directory Server 5 password policy attributes.

The compatibility mode can be read using dsconf command as follows:


$ dsconf get-server-prop pwd-compat-mode

The pwd-compat-mode property can have one of the following values:

DS5-compatible-mode

If you install a Directory Server instance as part of a replicated topology that includes a version 5 server, the compatibility state should be set to DS5-compatible-mode. In this state both old and new password policy attributes are recognized. Only version 5 password policy attributes are replicated, but both sets of attributes are stored in the database.

If you upgrade an existing standalone server to Directory Server 6.0, the compatibility state is set to DS5-compatible-mode. The server generates the new equivalent password policy attributes.

If you upgrade an existing server as part of a replicated topology that includes Directory Server 5 servers, the compatibility state should also set to DS5-compatible-mode. The server accepts both old and new password policy attributes. Both sets of attributes are stored in the database. Only version 5 attributes can be replicated (using fractional replication).

DS6-migration-mode

As part of your migration, you can set the compatibility state to DS6-migration-mode. In this mode, all servers in the topology are version 6 servers, but there may be some existing Directory Server 5 password policy attributes in the database.

DS6-mode

If you install a standalone Directory Server instance, set compatibility mode to DS6-mode. In this case, only new password policy attributes are recognized.

A server in DS6-mode can never be a supplier to or consumer of a Directory Server 5 server. When all servers have been migrated to version 6.0, DS6-mode should be the only compatibility mode.

The compatibility mode is set using the dsconf command as follows:


$ dsconf pwd-compat new-mode

The new-mode action takes one of the following values:

to-DS6-migration-mode

Change to DS6-migration-mode from DS5-compatible-mode.

Once the change is made, only DS6-migration-mode and DS6-mode are available.

to-DS6-mode

Change to DS6-mode from DS6-migration-mode.

Once the change is made, only DS6-mode is available.

The server state can move only towards stricter compliance with the new password policy specifications. Compatibility with the old password policy will not be supported indefinitely. You should therefore migrate to the new password policy as soon as is feasible for your deployment.

When you consider migrating to the new password policy, note that the pwdChangedTime attribute did not exist in Directory Server 5.2. This attribute is required by the new password policy. When the attribute is not present in the user entry, its value is calculated from the entry's passwordExpirationTime attribute. However, writing the calculated pwdChangedTime attribute to the user entry would have a large performance impact directly after migration, because the first bind for every entry would require a write to the directory.

The calculated pwdChangedTime is therefore not written to the user entry during the DS5-compatible mode. You should leave your topology in DS5-compatible-mode until you have been through an entire password expiration cycle (90 days, for example, depending on the value of passwordMaxAge). In this way, the pwdChangedTime is added gradually across the directory (at the password change of each user entry).

Changes to Plug-Ins

This section lists the new and deprecated plug-ins in Directory Server 6.0. The section also describes what you need to do if you have custom plug-ins created with the old plug-in API.

New Plug-Ins in Directory Server 6.0

The following plug-ins have been added in Directory Server 6.0:

cn=example,cn=ldbm database,cn=plugins,cn=config
cn=gle,cn=plugins,cn=config
cn=MemberOf Plugin,cn=plugins,cn=config
cn=Monitoring Plugin,cn=plugins,cn=config
cn=ObjectDeletionMatch,cn=plugins,cn=config
cn=pswsync,cn=plugins,cn=config
cn=Replication Repair,cn=plugins,cn=config
cn=RMCE,cn=Password Storage Schemes,cn=plugins,cn=config
cn=Strong Password Check,cn=plugins,cn=config

For information about these plug-ins see the plugin(5dsconf) man page.

Plug-Ins Deprecated in Directory Server 6.0

The following plug-ins have been deprecated in Directory Server 6.0:

cn=aci,cn=index,cn=userRoot,cn=ldbm database,cn=plugins,cn=config
cn=cn,cn=index,cn=userRoot,cn=ldbm database,cn=plugins,cn=config
cn=encrypted attributes,cn=userRoot,cn=ldbm database,cn=plugins,cn=config
cn=entrydn,cn=index,cn=userRoot,cn=ldbm database,cn=plugins,cn=config
cn=givenName,cn=index,cn=userRoot,cn=ldbm database,cn=plugins,cn=config
cn=index,cn=userRoot,cn=ldbm database,cn=plugins,cn=config
cn=mail,cn=index,cn=userRoot,cn=ldbm database,cn=plugins,cn=config
cn=mailHost,cn=index,cn=userRoot,cn=ldbm database,cn=plugins,cn=config
cn=member,cn=index,cn=userRoot,cn=ldbm database,cn=plugins,cn=config
cn=monitor,cn=userRoot,cn=ldbm database,cn=plugins,cn=config
cn=nsCalXItemId,cn=index,cn=userRoot,cn=ldbm database,cn=plugins,cn=config
cn=nscpEntryDN,cn=index,cn=userRoot,cn=ldbm database,cn=plugins,cn=config
cn=nsRoleDN,cn=index,cn=userRoot,cn=ldbm database,cn=plugins,cn=config
cn=nsUniqueId,cn=index,cn=userRoot,cn=ldbm database,cn=plugins,cn=config
cn=nswcalCALID,cn=index,cn=userRoot,cn=ldbm database,cn=plugins,cn=config
cn=objectclass,cn=index,cn=userRoot,cn=ldbm database,cn=plugins,cn=config
cn=owner,cn=index,cn=userRoot,cn=ldbm database,cn=plugins,cn=config
cn=parentid,cn=index,cn=userRoot,cn=ldbm database,cn=plugins,cn=config
cn=pipstatus,cn=index,cn=userRoot,cn=ldbm database,cn=plugins,cn=config
cn=pipuid,cn=index,cn=userRoot,cn=ldbm database,cn=plugins,cn=config
cn=seeAlso,cn=index,cn=userRoot,cn=ldbm database,cn=plugins,cn=config
cn=sn,cn=index,cn=userRoot,cn=ldbm database,cn=plugins,cn=config
cn=uid,cn=index,cn=userRoot,cn=ldbm database,cn=plugins,cn=config
cn=uniquemember,cn=index,cn=userRoot,cn=ldbm database,cn=plugins,cn=config
cn=userRoot,cn=ldbm database,cn=plugins,cn=config

Changes to the Plug-In API

If you have developed your own custom plug-ins, you need to recompile these to work with Directory Server 6.0. For a complete list of the changes made to the plug-in API, see Chapter 2, Changes to the Plug-In API Since Directory Server 5.2, in Sun Java System Directory Server Enterprise Edition 6.0 Developer’s Guide.

Changes to the Installed Product Layout

This section summarizes the changes to the installed product layout from Directory Server 5.2. Several files and utilities have been deprecated since Directory Server 5.2, as described in the following sections.

Administration Utilities Previously Under ServerRoot

In Directory Server 6.0 the Administration Server is no longer used to manage server instances.

The following system administration utilities previously located under ServerRoot have therefore been deprecated:

Binaries Previously Under ServerRoot/bin

The following utilities under ServerRoot/bin have been deprecated:

On Solaris Sparc, the ns-slapd daemon is located in install-path/ds6/bin/lib/sparcvSolaris-Version. On platforms other than Solaris Sparc, the ns-slapd daemon is located in install-path/ds6/bin/lib.

Libraries and Plug-Ins Previously Under ServerRoot/lib

Product libraries and plug-ins in Directory Server 5.2 were located under ServerRoot/lib. In Directory Server 6.0, on Solaris Sparc, these libraries and plug-ins are located in install-path/ds6/lib/sparcvSolaris-Version. On platforms other than Solaris Sparc, they are located directly under install-path/ds6/lib.

Online Help Previously Under ServerRoot/manual

Console online help files were previously located under ServerRoot/manual. The console online help files for Directory Server 6.0 are located under opt/SUNWdsee/ds6/dccapp/html.

Plug-Ins Previously Under ServerRoot/plugins

The following tables describes the new location of sample server plug-ins, and header files for plug-in development.

Table 5–4 Support for Plug-Ins

Directory Server 5.2 Plug-In Directory 

Directory Server 6.0 Plug-In Directory 

Remarks 

ServerRoot/plugins/slapd/slapi/examples

install-path/ds6/examples

Sample plug-ins 

ServerRoot/plugins/slapd/slapi/include

install-path/ds6/include

Plug-in header files 

SNMP support is no longer handled within Directory Server. SNMP monitoring is now handled by the Java Enterprise System Management Framework (Java ES MF). All plug-ins and binaries related to SNMP have therefore been deprecated within Directory Server.

These plug-ins include the following:

For information about enabling monitoring Java ES MF monitoring, see Enabling Java ES MF Monitoring in Sun Java System Directory Server Enterprise Edition 6.0 Administration Guide.

Utilities Previously Under ServerRoot/shared/bin

The following tables describes the new location of the administrative tools previously under ServerRoot/shared/bin. Note that as a result of the change to the administrative framework, some of these tools have been deprecated.

Table 5–5 Tools Previously Under ServerRoot/shared/bin

5.2 File 

6.0 File 

Purpose 

ServerRoot/shared/bin/admin_ip.pl

Deprecated 

Change IP address 

ServerRoot/shared/bin/entrycmp

install-path/ds6/bin/entrycmp

Compare entries for replication 

ServerRoot/shared/bin/fildif

install-path/ds6/bin/fildif

Dump filtered LDIF 

ServerRoot/shared/bin/insync

install-path/ds6/bin/insync

Check replication synchronization 

ServerRoot/shared/bin/ldapcompare

/usr/sfw/bin/ldapcompare

Compare attribute value 

In Directory Server 6.0 you must install the SUN-LDAPCSDK-TOOLS package to get this utility

ServerRoot/shared/bin/ldapdelete

/usr/sfw/bin/ldapdelete

Delete directory entry 

In Directory Server 6.0 you must install the SUN-LDAPCSDK-TOOLS package to get this utility

ServerRoot/shared/bin/ldapmodify

/usr/sfw/bin/ldapmodify

Modify directory entry 

In Directory Server 6.0 you must install the SUN-LDAPCSDK-TOOLS package to get this utility

ServerRoot/shared/bin/ldapsearch

/usr/sfw/bin/ldapsearch

Find directory entries 

In Directory Server 6.0 you must install the SUN-LDAPCSDK-TOOLS package to get this utility

ServerRoot/shared/bin/modutil

Deprecated 

Manage PKCS #11 modules 

ServerRoot/shared/bin/uconv

Deprecated 

Convert from ISO to UTF-8 

ServerRoot/shared/bin/repldisc

install-path/ds6/bin/repldisc

Discover replication topology 

Certificate and Key Files

The following table shows the new locations of the certificate and key files in Directory Server 6.0.

Table 5–6 Location of Certificate and Key Files

5.2 File 

6.0 File 

Remarks 

ServerRoot/shared/config/certmap.conf

instance-path/alias/certmap.conf

Configuration file for mapping certificates to directory entries 

ServerRoot/alias/cert8.db

instance-path/alias/cert8.db

Trusted certificate database file 

ServerRoot/alias/key3.db

instance-path/alias/key3.db

Database file containing client keys 

ServerRoot/alias/secmod.db

instance-path/alias/secmod.db

Database file containing security modules such as PKCS#11

Silent Installation and Uninstallation Templates

In Directory Server 5.2, the ServerRoot/setup5 directory contained sample templates for silent installation and uninstallation. Silent installation and uninstallation are no longer needed for Directory Server 6.0 and these files have therefore been deprecated.

Server Instance Scripts Previously Under ServerRoot/slapd-ServerID

The command-line administration scripts previously under ServerRoot/slapd-ServerID have been replaced in the new administration framework and deprecated. These commands and their Directory Server 6.0 equivalents are described in Command Line Changes.

Server Instance Subdirectories

The following table describes the new locations for the configuration, log and backup data previously located under ServerRoot/slapd-instance-name

Table 5–7 Instance-Specific Subdirectories

Version 5 Directory 

Version 6 Directory 

Remarks 

ServerRoot/slapd-ServerID/bak

instance-path/bak

Directory instance database backup 

ServerRoot/slapd-ServerID/confbak

Deprecated 

Administration Server configuration backup 

ServerRoot/slapd-ServerID/conf_bk

instance-path/conf_bk

Directory instance configuration backup 

ServerRoot/slapd-ServerID/config

instance-path/config

Directory instance configuration 

ServerRoot/slapd-ServerID/config/schema

instance-path/config/schema

Directory instance schema 

ServerRoot/slapd-ServerID/db

instance-path/db

Directory instance databases 

ServerRoot/slapd-ServerID/ldif

instance-path/ds6/bin/ldif

Sample LDIF files 

ServerRoot/slapd-ServerID/locks

instance-path/locks

Run time process locks 

ServerRoot/slapd-ServerID/logs

instance-path/logs

Server instance log files 

ServerRoot/slapd-ServerID/tmp

instance-path/tmp

Run time temporary files