LDAP User Authentication On CentOS 5.x

This tutorial explains how you can set up LDAP user authentication on a CentOS 5.x system.

Domain name: shadow.com

LDAP Server IP:


Server Configuration

Packages needed: openldap-servers

[[email protected] ~]# vi /etc/openldap/slapd.conf 

Set these values to:

suffix        "dc=shadow,dc=com"
rootdn        "cn=root,dc=shadow,dc=com"

Set root’s password:

rootpw        your_desired_password

We can  encrypt our admin password; for that run the slappasswd command. It will ask you for a password, and after you enter it twice, it'll spit out a line like this:


and use it as

rootpw {SSHA}04b5U6YTzQ651v9EB+l7e0FEXoEmB/Up

Test your configuration by running the

slaptest -u 


[[email protected] ~]# cp /etc/openldap/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
[[email protected] ~]# service ldap start
[[email protected] ~]# chkconfig ldap on

Now we need to set up our base, authentication and group files. That is, we'll establish our basic parameters for the LDAP server, then migrate over (most of) the user accounts, and (most of) the group accounts.

[[email protected] ~]# cd /usr/share/openldap/migration
[[email protected] ~]# ./migrate_base.pl > base.ldif

In base.ldif we require only the following sections:

dn: dc=padl,dc=com
dc: padl
objectClass: top
objectClass: domain

dn: ou=People,dc=padl,dc=com
ou: People
objectClass: top
objectClass: organizationalUnit

dn: ou=Group,dc=padl,dc=com
ou: Group
objectClass: top
objectClass: organizationalUnit

Replace all padl with shadow so that it becomes:

dn: dc=shadow,dc=com
dc: shadow
objectClass: top
objectClass: domain

dn: ou=People,dc=shadow,dc=com
ou: People
objectClass: top
objectClass: organizationalUnit

dn: ou=Group,dc=shadow,dc=com
ou: Group
objectClass: top
objectClass: organizationalUnit

Now, we can import that information into our LDAP database using this command:

  [[email protected] ~]#  ldapadd -x -W -D “cn=root,dc=shadow,dc=com” -f ./base.ldif

We need to tell the script where to find password information. We do that by setting the shell variable ETC_SHADOW to be /etc/shadow. This command will do just that:

  [[email protected] ~]# export ETC_SHADOW=/etc/shadow

Then, we can run

[[email protected] ~]# ./migrate_passwd.pl /etc/passwd people.ldif

In the people.ldif file delete all sections except the required user's section and replace all padl with shadow.

[[email protected] migration]# cat people.ldif
dn: uid=basil,ou=People,dc=shadow,dc=com
uid: basil
cn: Basil Kurian
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: {crypt}$1$Dr0hxwtg$.zGk8MIf57AHmj6vpD07n.
shadowLastChange: 14791
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 500
gidNumber: 500
homeDirectory: /home/basil
gecos: Basil Kurian
[[email protected] migration]# ./migrate_group.pl /etc/group group.ldif

Again, replace instances of padl with linuxclass, and remove extraneous groups.

[[email protected] migration]# cat group.ldif
dn: cn=basil,ou=Group,dc=shadow,dc=com
objectClass: posixGroup
objectClass: top
cn: basil
userPassword: {crypt}x
gidNumber: 500

After you've done that, it's time to import the two files to ldap:

 [[email protected] migration]# ldapadd -x -W -D “cn=root,dc=shadow,dc=com” -f people.ldif
[[email protected] migration]# ldapadd -x -W -D “cn=root,dc=shadow,dc=com” -f group.ldif

Now, we have our database populated with info. It's time to test our work. First, you can use the ldapsearch command to look for your username:

[[email protected] migration]# ldapsearch -x ‘cn=basil’


Client Configuration

Use authconfig-gtk or authconfig-tui:

[[email protected] migration]# authconfig-gtk

Choose Enable LDAP Support.

LDAP Search Base DN should be dc=shadow,dc=com

LDAP server, we'll enter ldap://, that is the server's IP.


How To Clear LDAP Database

First stop LDAP:

[[email protected] ~]# service ldap stop

Go to the /var/lib/ldap directory (this is the directory containing your database; this directory is specified in the slapd.conf file).

[[email protected] ~]# cd /var/lib/ldap

Remove all databases by using:

[[email protected] ~]#  rm *

Again start the LDAP service and populate it with data.

Share this page:

4 Comment(s)

Add comment

Please register in our forum first to comment.



Thank you. It's a pity that we have so few LDAP tutorials that actually work safely. I'm still waiting Canonical to do something about this. This tutorial should only be used in LAN networks behind a firewall. (And even then with great care.)


This tutorial should be showing usage of smbldap-tools with LDAP too. It is very efficient & easy to manage the users with smbldap-tools.

By: Anonymous

Having problems with invalid dn syntax? Try replacing the double quotes with ones you typed out. Unicode copy/paste FTL.

[[email protected] migrationtools]# ldapadd -x -W -D “cn=root,dc=abc,dc=net” -f ./base.ldif Enter LDAP Password: ldap_bind: Invalid DN syntax (34) additional info: invalid DN

By: frego

This article should include which ports need to be openned up and which protocols for IPTables and LDAP to work.