[colug-432] PAM and LDAP

Brian Miller bnmille at gmail.com
Wed Sep 7 06:24:20 EDT 2011


On 09/05/2011 03:39 PM, Matthew Gardlik, Ph.D. wrote:
> I would like to use PAM to authenticate against an OpenLDAP directory
> containing user credentials.
>
> Can anyone direct me to a good resource on this topic.  Most of
> information I can find online seems fragmented and incomplete.  Some of
> the questions that I have include:  What schema or attributes do I need
> to have in the LDAP director?  Can I use an email address as the
> "username" (uid) I want to authenticate?

What other people have replied is good.  At a minimum, you need the 
core, cosine, and nis schemas defined in OpenLDAP.  That will give you 
the necessary "posix account" user attributes (uidNumber, gidNumber, 
homeDirectory, loginShell, etc.) necessary to login to a Linux/UNIX 
workstation.  Note that OpenLDAP only considers about half of the 
attributes mandatory.  For instance, loginShell is not mandatory.  But 
depending on how you have your workstations configured, an account might 
not be able to login if it does not have a shell (as listed in 
/etc/shells) defined.  Other schema definitions (such as inetOrgPerson) 
as not necessary unless you want some of the user attributes provided by 
that schema.

>
> The man page for pam_ldap(5) provided some useful information, but it
> still looks like I'm missing something.
>

You don't say what distribution you are using.  If you are running 
RedHat/Centos, you can run "setup", and select Authentication, and then 
configure the ldap client (nss_ldap).  If you are running SuSE, you can 
run yast-->Security and Users-->User and Group 
Management-->Authentication Settings to achieve the same thing.   These 
will modify /etc/nsswitch and /etc/ldap.conf, and, if necessary, the 
proper files under /etc/pam.d so your system will use OpenLDAP as the 
authentication source.

/etc/nsswitch.conf will generally have one of two edits (depending on 
the distribution):

passwd:  files ldap
group:   files ldap

Or something like this:

passwd:  compat
group:   compat

compat_passwd:  ldap
compat_group:   ldap


/etc/ldap.conf will have a number of edits, including IP Address/DNS 
name of the LDAP server.  The file itself generally provides good 
comments about what the important options do.

Older versions of Linux (say 3 to 4 years ago) would add a pam_ldap.so 
entry to the authentication and account sections of the appropriate 
files in /etc/pam.d, but I don't see those changes being made more 
recently.  I suspect some code has been added to pam_unix.so that 
automatically handles the LDAP calls.




More information about the colug-432 mailing list