====== OpenLDAP Server configuration ====== When doing some operations, dealing with OpenLDAP can be a pain in the butt, as the community did retarded choice (like the slapd.d configuration mess, which makes a root creation a real pain in the arse). Therefore, if you don't read carefully the following instructions, you might lose your time while pissing off. ===== Slapd Installation ===== Well, it works pretty nicely on debian: apt-get install slapd ldap-utils Please notice that you may have conflicts with samba as debian implementation launches a LDAP directody by default. ===== Enable access to cn=config from PHPLdapAdmin ===== Hashing a password can be done with ''slappasswd''. Put the following content in a file (update_adminpass.ldif in our case). dn: cn=config changetype: modify # cn=admin,cn=config is already set in a fresh slapd install dn: olcDatabase={0}config,cn=config changetype: modify add: olcRootPW olcRootPW: {SSHA}XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Then execute the following command in your shell: # ldapadd -Y EXTERNAL -H ldapi:/// -f update_adminpass.ldif ===== Add a new root DN ===== For this part, let's assume we want to create a Root DN ''dc=acme'' ==== Storage Backend Configuration ==== 1st thing to do is to configure the backend to serve the root DN you want to create. To do so, the simplest way is to copy then edit the ''{1}hdb'' into a similar entry, without forgetting to increment the number between the brackets. Do not forget to change the following fields: * ''olcAccess'' Access rules * ''olcDbDirectory'' Data storage directory * ''olcRootDN'' Root user for your database (e.g. cn=admin,dc=acme) * ''olcRootPW'' Root password for your database * ''olcSuffix'' The RDN of the root DN you are to create. ==== Create the DN and populate the admin user ==== Put the following content in a file (add_dc_acme.ldif in our case). # Entry 1: dc=acme dn: dc=acme objectclass: top objectclass: dcObject objectclass: organization dc: acme o: acme description: Acme Corporation # Entry 2: cn=admin,dc=acme dn: cn=admin,dc=acme objectclass: simpleSecurityObject objectclass: organizationalRole cn: admin description: acme LDAP administrator userPassword: {SSHA}XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX One again, ''slappasswd'' is your friend to generate a password hash. Then execute the following command in your shell: ldapadd -x -D cn=admin,dc=acme -W -f add_dc_acme.ldif As far as I have understood, performing a basic authentication will use olcRootDN and olcRootPW from the backend data for authentication. If you screw up something with ''cn=admin,dc=acme'', you will still be able to repair your mess by performing a basic authentication.