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:
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:
Upgrade each server individually
Register each server in the DSCC
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.
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.
The following changes have been made to ACIs in Directory Server 6.0.
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.
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";)
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.
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 |
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 |
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.
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:
A grace login limit, specified by the pwdGraceAuthNLimit attribute. This attribute specifies the number of times an expired password can be used to authenticate. If it is not present or if it is set to 0, authentication will fail.
Safe password modification, specified by the pwdSafeModify attribute. This attribute specifies whether the existing password must be sent when changing a password. If the attribute is not present, the existing password does not need to be sent.
In addition, the new password policy provides the following new controls:
LDAP_CONTROL_PWP_[REQUEST|RESPONSE]
LDAP_CONTROL_ACCOUNT_USABLE_[REQUEST|RESPONSE]
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:
Period of time before the password expires
Number of grace login attempts remaining
The password has expired
The account is locked
The password must be changed after being reset
Password modifications are allowed
The user must supply his/her old password
The password quality (syntax) is insufficient
The password is too short
The password is too young
The password already exists in history
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:
t is a tag defining which warning is set, if any. The value of t can be one of the following:
LDAP_PWP_WARNING_RESP_NONE (0x00L) LDAP_PWP_WARNING_RESP_EXP (0x01L) LDAP_PWP_WARNING_RESP_GRACE (0x02L)
The first i indicates warning information.
The warning depends on the value set for t as follows:
If t is set to LDAP_PWP_WARNING_RESP_NONE, the warning is -1.
If t is set to LDAP_PWP_WARNING_RESP_EX, the warning is the number of seconds before expiration.
If t is set to LDAP_PWP_WARNING_RESP_GRACE, the warning is the number of remaining grace logins.
The second i indicates error information. If t is set to LDAP_PWP_WARNING_RESP_NONE, the error contains one of the following values:
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.
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:
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).
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.
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:
Change to DS6-migration-mode from DS5-compatible-mode.
Once the change is made, only DS6-migration-mode and DS6-mode are available.
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).
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.
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.
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
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.
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.
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:
restart-admin
start-admin
startconsole
stop-admin
uninstall
The following utilities under ServerRoot/bin have been deprecated:
ServerRoot/bin/admin/admconfig
ServerRoot/bin/https/bin/ns-httpd
ServerRoot/bin/https/bin/uxwdog
ServerRoot/bin/slapd/server/ns-ldapagt
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.
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.
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.
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:
ServerRoot/plugins/snmp/magt/magt
ServerRoot/plugins/snmp/mibs/
ServerRoot/plugins/snmp/sagt/sagt
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.
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 |
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 |
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.
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.
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 |