Provided by: libpam-ldap_184-8.7ubuntu1_amd64 bug

NAME

       pam_ldap - LDAP pluggable authentication module

DESCRIPTION

       The  pam_ldap  module  is  a  Pluggable  Authentication  Module  (PAM) which provides for authentication,
       authorization and password changing against LDAP servers.

       Features of the PADL pam_ldap module include support for transport layer security,  SASL  authentication,
       directory server-enforced password policy, and host- and group- based logon authorization.

       The  present  version of pam_ldap supports AIX 5L, FreeBSD 3.x and above, HP-UX 11i, IRIX 6.x, Linux, Mac
       OS X 10.2 and above, and Solaris 2.6 and above.  Many  vendors  provide  their  own  LDAP  authentication
       providers, often also called pam_ldap.  This manual page applies to the PADL pam_ldap module only. If you
       are using a vendor provided module, consult the relevant documentation instead.

       When  authenticating  or authorizing a user, pam_ldap first maps the user's login name to a distinguished
       name by searching the directory server.  This  must  be  possible  using  the  local  system's  identity,
       specified  in  ldap.conf. (Note that presently only simple authentication is supported for authenticating
       in this initial step.)

       To authenticate a user, pam_ldap attempts to bind to the directory server using the distinguished name of
       the user (retrieved previously). Both simple and SASL authentication mechanisms  are  supported;  in  the
       former  case,  one  should  take  care  to  use  transport  security to prevent the user's password being
       transmitted in the clear.

       A variety of authorization primitives are supported by pam_ldap, discussed in the  configuration  section
       below.

       Finally,  pam_ldap  supports a number of password change protocols used by directory servers from various
       vendors. (Some directory servers support more than one password change protocol.)

       Whilst pam_ldap is generally configured in the system LDAP naming configuration  file  (ldap.conf),  some
       options  can  be  configured  in  the PAM configuration file, to allow for per-service granularity. These
       options include the path to the LDAP naming configuration file to use, so in effect all  options  can  be
       configured on a per-service basis. Options are listed below under PAM Configuration.

CONFIGURATION

       pam_ldap  stores  its  configuration  in  the  ldap.conf  file. (It should be noted that some LDAP client
       libraries, such as OpenLDAP, also use a configuration file of the same name.  pam_ldap supports  many  of
       the  same  configuration  file  options  as  OpenLDAP,  but  it  adds  several  that  are specific to the
       functionality it provides.  It is not guaranteed that pam_ldap will continue to match  the  configuration
       file semantics of OpenLDAP.  You may wish to use different files.)

       Configuration  file  options  consist  of  a keyword followed by a space and any arguments. The following
       options are supported by both pam_ldap and the PADL nss_ldap module:

       host <name:port ...>
              Specifies the name(s) or IP address(es) of the LDAP server(s) to connect  to.  In  the  case  that
              nss_ldap  is  used  for  host name resolution, each server should be specified as an IP address or
              name that can be resolved without using LDAP.  Multiple servers may be specified,  each  separated
              by  a  space.   The failover time depends on whether the LDAP client library supports configurable
              network or connect timeouts (see bind_timelimit below).

       base <base>
              Specifies the default base distinguished name (DN) to use for searches.

       uri <ldap[is]://[name[:port]] ...>
              For LDAP client libraries that support it, specifies the URI(s) of the LDAP server(s)  to  connect
              to.  The  URI  scheme  may  be  ldap,  ldapi,  or  ldaps,  specifying  LDAP  over TCP, IPC and SSL
              respectively. If applicable, a port number can be specified;  the  default  port  number  for  the
              selected protocol is used if omitted. This option takes precedence over the host option; it is not
              possible to combine the two.

       ldap_version <version>
              Specifies  the  version of the LDAP protocol to use. Presently version must be 2 or 3. The default
              is to use the maximum version supported by the client library.

       binddn <binddn>
              Specifies the distinguished name with which to bind to the directory  server(s).  This  option  is
              optional; the default is to bind anonymously.

       bindpw <bindpw>
              Specifies  the  cleartext credentials with which to bind. This option is only applicable when used
              with binddn above. The default is no credential (anonymous bind). When binding  to  the  directory
              using SASL or other authentication mechanisms apart from simple binds, this option is not used.

       rootbinddn <binddn>
              This  option has the same syntax and effect as the binddn option above, except it applies when the
              effective user ID is zero. If not specified,  then  the  identity  specified  in  binddn  is  used
              instead.  Because  the  configuration  file  may  be  readable  by  many  users,  the root bind DN
              credentials are stored in the ldap.secret file instead. This file is usually in the same directory
              as the configuration file.

       port <port>
              Specifies the port to connect to; this option is used with the host option, and  is  ignored  with
              the uri option.

       scope <sub|one|base>
              Specifies the search scope (subtree, one level or base object). The default scope is subtree; base
              scope is almost never useful for nameservice lookups.

       deref <never|searching|finding|always>
              Specifies  the  policy  for  dereferencing  aliases.  The  default  policy is to never dereference
              aliases.

       timelimit <timelimit>
              Specifies the time limit (in seconds) to use when performing searches. A value of zero (0),  which
              is the default, is to wait indefinitely for searches to be completed.

       bind_timelimit <timelimit>
              Specifies  the  time  limit  (in  seconds) to use when connecting to the directory server. This is
              distinct from the time limit specified in timelimit and  affects  the  initial  server  connection
              only.  (Server  connections  are  otherwise  cached.)  Only  some  LDAP  client libraries have the
              underlying functionality necessary to support this  option.  The  default  bind  timelimit  is  30
              seconds.

       referrals <yes|no>
              Specifies  whether automatic referral chasing should be enabled. The default behaviour is specifed
              by the LDAP client library.

       restart <yes|no>
              Specifies whether  the  LDAP  client  library  should  restart  the  select(2)  system  call  when
              interrupted. This feature is not supported by all client libraries.

       logdir <directory>
              Specifies the directory used for logging by the LDAP client library. This feature is not supported
              by all client libraries.

       debug <level>
              Specifies  the  debug  level  used  for  logging  by  the LDAP client library. This feature is not
              supported by all client libraries, and does  not  apply  to  the  nss_ldap  and  pam_ldap  modules
              themselves (debugging, if any, is configured separately and usually at compile time).

       ssl <on|off|start_tls>
              Specifies  whether  to  use SSL/TLS or not (the default is not to). If start_tls is specified then
              StartTLS is used rather than raw LDAP over SSL.  Not all LDAP client libraries  support  both  SSL
              and StartTLS, and all related configuration options.

       sslpath <cert7_path>
              For  the  Netscape  and  Mozilla  LDAP client libraries only, this specifies the path to the X.509
              certificate database.

       tls_checkpeer <yes|no>
              Specifies whether to require and verify the server certificate or not, when using SSL/TLS with the
              OpenLDAP client library.  The default is to use the default behaviour of the client  library;  for
              OpenLDAP  2.0  and  earlier  it  is  "no", for OpenLDAP 2.1 and later it is "yes". At least one of
              tls_cacertdir and tls_cacertfile is required if peer verification is enabled.

       tls_cacertdir <certificate_dir>
              Specifies the directory containing X.509 certificates for peer authentication.

       tls_cacertfile <certificate_file>
              Specifies the path to the X.509 certificate for peer authentication.

       tls_randfile <entropy_file>
              Specifies the path to an entropy source.

       tls_ciphers <ciphers>
              Specifies the ciphers to use for TLS. See your  TLS  implementation's  documentation  for  further
              information.

       tls_cert <certificate_file>
              Specifies the path to the file containing the local certificate for client TLS authentication.

       tls_key <key_file>
              Specifies the path to the file containing the private key for client TLS authentication.

       The following configuration options apply to pam_ldap only:

       pam_login_attribute <attribute>
              Specifies  the  attribute  to use when constructing the attribute value assertion for retrieving a
              directory entry for a user's login name.  The default is "uid", for compatibility with RFC 2307.

       pam_filter <filter>
              Specifies a filter to use when  retrieving  user  information.  The  user  entry  must  match  the
              attribute  value  assertion  of  (pam_login_attribute=login_name)  as well as any filter specified
              here. There is no default for this option.

       pam_lookup_policy <yes|no>
              Specifies whether to search the root DSE for password policy. The default is "no".

       pam_check_host_attr <yes|no>
              Specifies whether the "host" attribute should be checked for logon authorization ("account" in the
              PAM stack). The default is not to.  If set to "yes" and  a  user  has  no  value  for  the  "host"
              attribute, then the user will be unable to login.

       pam_check_service_attr <yes|no>
              Specifies  whether  the  "authorizedService"  attribute  should be checked for logon authorization
              ("account" in the PAM stack). The default is not to. If set to "yes" and a user has no  value  for
              the "authorizedService" attribute, then the user will be unable to login.

       pam_groupdn <groupdn>
              Specifies the distinguished name of a group to which a user must belong for logon authorization to
              succeed.   pam_member_attribute  <attribute>  Specifies the attribute to use when testing a user's
              membership of a group specified in the pam_groupdn option.

       pam_min_uid <uid>
              If specified, a user must have a POSIX user ID of at least uid in order for logon authorization to
              succeed.

       pam_max_uid <uid>
              If specified, a user must have a POSIX user  ID  of  no  greater  than  uid  in  order  for  logon
              authorization to succeed.

       pam_template_login_attribute <attribute>
              When  using  template  users  (not  supported  by  all  PAM applications), specifies the attribute
              containing the user's actual login name.  The pam_ldap module will set PAM_USER to  the  value  of
              this  attribute if present in the user's entry, otherwise it defaults to the user specified in the
              pam_template_login option.

       pam_template_login <user>
              When using template users (not supported by all PAM applications), pam_ldap will set  PAM_USER  to
              the value of this option if the user does not contain a template login attribute.

       pam_password <protocol>
              Specifies the password change protocol to use. The following protocols are supported:

              clear  Change  password using an LDAPModify request, replacing the userPassword value with the new
                     cleartext password.

              clear_remove_old
                     Change password  using  an  LDAPModify  request,  first  removing  the  userPassword  value
                     containing  the old cleartext password, and then adding the userPassword value with the new
                     cleartext password. This protocol is necessary for use with Novell NDS and IBM RACF.

              crypt  Change password using an LDAPModify request, first generating a one way  hash  of  the  new
                     password using crypt(3) and then replacing userPassword value with the new hashed password.

              md5    Change  password  using  an  LDAPModify request, first generating a one way hash of the new
                     password using MD5 and then replacing userPassword value with the new hashed password.

              nds    This is an alias for clear_remove_old.

              racf   This is an alias for clear_remove_old.

              ad     Change password using an LDAPModify request, using the Active Directory Services  Interface
                     (ADSI) password change protocol.

              exop   Change  password  using  the  RFC  3062  password  modify  extended operation (only the new
                     password is sent).

              exop_send_old
                     Change password using the RFC 3062 password modify extended operation (both the old and new
                     passwords are sent).

       pam_password_prohibit_message <message>
              Specifies a message to send to users indicating that passwords cannot be changed.  This  could  be
              used to redirect users to another means of changing passwords.

       pam_sasl_mech <mechanism>
              Specifies  the  SASL  mechanism  to  use  for  PAM authentication. This requires SASL libraries be
              installed. Support for this functionality presently experimental and  does  not  support  password
              policy controls.

PAM CONFIGURATION

       It  is  possible  to  configure some aspects of pam_ldap on a per-service basis, in the PAM configuration
       file (this is usually /etc/pam.conf; for PAM implementations based on  Linux-PAM,  per-service  files  in
       /etc/pam.d are also supported).

       The following options may be specified as arguments to the pam_ldap module:

       config=<path>
              Specifies that pam_ldap should use the configuration file in path instead of ldap.conf to retrieve
              its  global  configuration.  Configuring  multiple instances of pam_ldap for the same service with
              different configuration files is not supported, because the configuration information is cached.

       use_first_pass
              Specifies that pam_ldap should always use the first password provided in the authentication stack.

       try_first_pass
              Specifies that pam_ldap should first try the first password provided in the authentication  stack,
              and then prompt the user for their LDAP password if authentication fails.

       ignore_unknown_user
              Specifies  that  pam_ldap  should  return PAM_IGNORE for users that are not present in LDAP.  This
              forces the PAM framework to ignore the pam_ldap  module.  This  option  is  useful  where  certain
              accounts do not reside in LDAP, but one wishes to make pam_ldap "required" for all accounts in the
              directory.  In this case one would make both pam_ldap and the other module (for example, pam_unix)
              "required" and enable the ignore_unknown_user option. (For this to work,  the  other  module  must
              behave  similarly  for  users in the directory; in the case of a module such as pam_unix that uses
              the system accounts database, using nss_ldap(5) should be sufficient to meet this requirement.)

       ignore_authinfo_unavail
              Specifies that pam_ldap should return PAM_IGNORE if it cannot contact the LDAP server. This option
              forces the PAM framework to ignore the pam_ldap module in this case.

       no_warn
              Specifies that warning messages should not be propagated to the PAM application.

       use_authtok
              Analogous to use_first_pass for password changing only.

       debug  This option is recognized by pam_ldap but is presently ignored.

AUTHOR

       The pam_ldap module was developed by PADL Software Pty Ltd (www.padl.com).

FILES

       /etc/ldap.conf, /etc/ldap.secret, /etc/pam.conf

SEE ALSO

       pam(8)

                                                                                                     pam_ldap(5)