This section shows a sample configuration file.
There are a number of things to note:
- The maximum number of results returned has been increased from the default of 500 that even applies to paged results. See the OpenLDAP documentation on limits. If you have more than 500 users or groups this would be an issue.
- Digest authentication has been configured to map from a user ID to the corresponding distinguished name. See the example data.
- Passwords are in clear text (so that any authentication mechanism can be used). It is possible they can be in the correct hashed form for the MD5 digest to work.
See slapd.conf(5) for details on configuration options. # This file should NOT be world readable. # include /usr/local/etc/openldap/schema/core.schema include /usr/local/etc/openldap/schema/cosine.schema include /usr/local/etc/openldap/schema/inetorgperson.schema # Define global ACLs to disable default read access. # Do not enable referrals until AFTER you have a working directory # service AND an understanding of referrals. #referral ldap://root.openldap.org pidfile /usr/local/var/run/slapd.pid argsfile /usr/local/var/run/slapd.args # Load dynamic backend modules: # modulepath /usr/local/libexec/openldap # moduleload back_bdb.la # moduleload back_ldap.la # moduleload back_ldbm.la # moduleload back_passwd.la # moduleload back_shell.la # Sample security restrictions # Require integrity protection (prevent hijacking) # Require 112-bit (3DES or better) encryption for updates # Require 63-bit encryption for simple bind # security ssf=1 update_ssf=112 simple_bind=64 # Sample access control policy: # Root DSE: allow anyone to read it # Subschema (sub)entry DSE: allow anyone to read it # Other DSEs: # Allow self write access # Allow authenticated users read access # Allow anonymous users to authenticate # Directives needed to implement policy: # access to dn.base="" by * read # access to dn.base="cn=Subschema" by * read # access to * # by self write # by users read # by anonymous auth # # if no access controls are present, the default policy # allows anyone and everyone to read anything but restricts # updates to rootdn. (e.g., "access to * by * read") # # rootdn can always read and write EVERYTHING! ####################################################################### # BDB database definitions ####################################################################### database bdb suffix "dc=company,dc=com" rootdn "cn=Manager,dc=company,dc=com" # Cleartext passwords, especially for the rootdn, should # be avoid. See slappasswd(8) and slapd.conf(5) for details. # Use of strong authentication encouraged. # This is secret .... rootpw {SSHA}u9AUUYOSVX6idlXcwyYOAG6G84oHFpvG # The database directory MUST exist prior to running slapd AND # should only be accessible by the slapd and slap tools. # Mode 700 recommended. directory /usr/local/var/openldap-data # Indices to maintain index objectClass eq # Clear text to allow hashing password-hash {CLEARTEXT} # SASL mappings for md5 digest authentication # Extract the user id and use as the search key authz-regexp uid=([^,]*),cn=digest-md5,cn=auth ldap:///dc=company,dc=com??one?(uid=$1) authz-regexp uid=([^,]*),cn=company.com,cn=digest-md5,cn=auth ldap:///dc=company,dc=com??one?(uid=$1) # Tweaks to increase the result set size and max query time sizelimit 50000 timelimit 3600
The following is a very simple example LDIF file that defines People and Groups Organizational units and some example users and groups.
# Initial directory contents dn: dc=company,dc=com dc: company objectClass: top objectClass: domain dn: ou=People,dc=company,dc=com ou: People objectClass: top objectClass: organizationalUnit dn: ou=Groups,dc=company,dc=com ou: Groups objectClass: top objectClass: organizationalUnit dn: uid=fullname,ou=People,dc=company,dc=com objectclass: inetOrgPerson sn: Name cn: Full Name userPassword: inClearText telephoneNumber: 1234567890 uid: fullname givenName: Full mail: full.name@company.com o: Company Software Inc. dn: uid=walrus,ou=People,dc=company,dc=com objectclass: inetOrgPerson sn: Rus cn: Wal Rus userPassword: inClearText telephoneNumber: 1234567890 uid: walrus givenName: Wal mail: wal.rus@company.com o: Company Software Inc. dn: cn=Group One,ou=Groups,dc=company,dc=com objectclass: groupOfNames cn: Group One member: uid=fullname,ou=People,dc=company,dc=com dn: cn=Group Two,ou=Groups,dc=company,dc=com objectclass: groupOfNames cn: Group Two member: cn=Group One,ou=Groups,dc=company,dc=com member: uid=walrus,ou=People,dc=company,dc=com