PAM_LDAP(7) Standards, Environments, and Macros PAM_LDAP(7)
NAME
pam_ldap - authentication and account management PAM module for LDAP
SYNOPSIS
pam_ldap.so.1DESCRIPTION
The
pam_ldap module implements
pam_sm_authenticate(3PAM) and
pam_sm_acct_mgmt(3PAM), the functions that provide functionality for
the PAM authentication and account management stacks. The
pam_ldap module ties the authentication and account management functionality
to the functionality of the supporting LDAP server. For
authentication,
pam_ldap can authenticate the user directly to any
LDAP directory server by using any supported authentication
mechanism, such as
DIGEST-MD5. However, the account management
component of
pam_ldap will work only with the Sun Java System
Directory Server. The server's user account management must be
properly configured before it can be used by
pam_ldap. Refer to the
Sun Java System Directory Server Administration Guide for information
on how to configure user account management, including password and
account lockout policy.
pam_ldap must be used in conjunction with the modules that support
the UNIX authentication, password, and account management, which are
pam_authtok_get(7),
pam_passwd_auth(7),
pam_unix_account(7), and
pam_unix_auth(7).
pam_ldap is designed to be stacked directly below
these modules. If other modules are designed to be stacked in this
manner, the modules can be stacked below the
pam_ldap module. The
Examples section shows how the UNIX modules are stacked with
pam_ldap. When stacked together, the UNIX modules are used to
control local accounts, such as
root.
pam_ldap is used to control
network accounts, that is, LDAP users. For the stacks to work,
pam_unix_auth,
pam_unix_account, and
pam_passwd_auth must be
configured with the
binding control flag and the
server_policy option. This configuration allows local account override of a network
account.
LDAP Authentication Module
The LDAP authentication module verifies the identity of a user. The
pam_sm_authenticate(3PAM) function uses the password entered by the
user to attempt to authenticate to the LDAP server. If successful,
the user is authenticated. See NOTES for information on password
prompting.
The authentication method used is either defined in the client
profile, or the authentication method is configured by using the
ldapclient(8) command. To determine the authentication method to
use, this module first attempts to use the authentication method that
is defined, for service
pam_ldap, for example,
serviceAuthenticationMethod:pam_ldap:sasl/DIGEST-MD5. If no
authentication method is defined,
pam_ldap uses the default
authentication method. If neither are set, the authentication fails.
This module skips the configured authentication method if the
authentication method is set to
none.
The following options can be passed to the LDAP service module:
debug syslog(3C) debugging information at
LOG_DEBUG level.
nowarn Turn off warning messages.
These options are case sensitive and must be used exactly as
presented here.
LDAP Account Management Module
The LDAP account management module validates the user's account. The
pam_sm_acct_mgmt(3PAM) function authenticates to the LDAP server to
verify that the user's password has not expired, or that the user's
account has not been locked. In the event that there is no user
authentication token (
PAM_AUTHTOK) available, the
pam_sm_acct_mgmt(3PAM) function attempts to retrieve the user's
account status without authenticating to the LDAP server as the user
logging in. This procedure will succeed only if the LDAP server is
Sun Java System Directory server 5.2 patch 4 or newer. The following
options can be passed to the LDAP service module:
debug syslog(3C) debugging information at
LOG_DEBUG level.
nowarn Turn off warning messages.
These options are case sensitive, and the options must be used
exactly as presented here.
LDAP Password Management Module
LDAP password management is no longer supported by
pam_ldap. Use
pam_authtok_store(7) instead of
pam_ldap for password change.
pam_authtok_store(7) handles both the local and LDAP accounts and
updates the passwords in all the repositories configured by
nsswitch.conf(5).
ERRORS
The authentication service returns the following error codes:
PAM_SUCCESS The authentication was successful.
PAM_MAXTRIES The maximum number of authentication attempts was
exceeded.
PAM_AUTH_ERR The authentication failed.
PAM_USER_UNKNOWN No account is present for the user.
PAM_BUF_ERR A memory buffer error occurred.
PAM_SYSTEM_ERR A system error occurred.
PAM_IGNORE The user's account was inactivated.
The account management service returns the following error codes:
PAM_SUCCESS The user was allowed access to the account.
PAM_NEW_AUTHTOK_REQD A new authentication token is required.
PAM_ACCT_EXPIRED The user account has expired.
PAM_PERM_DENIED The user was denied access to the account at
this time.
PAM_USER_UNKNOWN No account is present for the user.
PAM_BUF_ERR A memory buffer error occurred.
PAM_SYSTEM_ERR A system error occurred.
EXAMPLES
Example 1: Using pam_ldap With Authentication
The following is a configuration for the login service when using
pam_ldap. The service name
login can be substituted for any other
authentication service such as
dtlogin or
su. Lines that begin with
the # symbol are comments and are ignored.
# Authentication management for login service is stacked.
# If pam_unix_auth succeeds, pam_ldap is not invoked.
# The control flag "binding" provides a local overriding
# remote (LDAP) control. The "server_policy" option is used
# to tell pam_unix_auth.so.1 to ignore the LDAP users.
login auth requisite pam_authtok_get.so.1
login auth required pam_dhkeys.so.1
login auth required pam_unix_cred.so.1
login auth binding pam_unix_auth.so.1 server_policy
login auth required pam_ldap.so.1
Example 2: Using pam_ldap With Account Management
The following is a configuration for account management when using
pam_ldap. Lines that begin with the # symbol are comments and are
ignored.
# Account management for all services is stacked
# If pam_unix_account succeeds, pam_ldap is not invoked.
# The control flag "binding" provides a local overriding
# remote (LDAP) control. The "server_policy" option is used
# to tell pam_unix_account.so.1 to ignore the LDAP users.
other account requisite pam_roles.so.1
other account binding pam_unix_account.so.1 server_policy
other account required pam_ldap.so.1
Example 3: Using pam_authtok_store With Password Management For Both
Local and LDAP Accounts
The following is a configuration for password management when using
pam_authtok_store. Lines that begin with the # symbol are comments
and are ignored.
# Password management (authentication)
# The control flag "binding" provides a local overriding
# remote (LDAP) control. The server_policy option is used
# to tell pam_passwd_auth.so.1 to ignore the LDAP users.
passwd auth binding pam_passwd_auth.so.1 server_policy
passwd auth required pam_ldap.so.1
# Password management (updates)
# This updates passwords stored both in the local /etc
# files and in the LDAP directory. The "server_policy"
# option is used to tell pam_authtok_store to
# follow the LDAP server's policy when updating
# passwords stored in the LDAP directory
other password required pam_dhkeys.so.1
other password requisite pam_authtok_get.so.1
other password requisite pam_authtok_check.so.1
other password required pam_authtok_store.so.1 server_policy
FILES
/var/ldap/ldap_client_file /var/ldap/ldap_client_cred The LDAP configuration files of the
client. Do not manually modify these
files, as these files might not be
human readable. Use
ldapclient(8) to
update these files.
/etc/pam.conf PAM configuration file.
ATTRIBUTES
See
attributes(7) for descriptions of the following attributes:
+--------------------+-------------------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-------------------------+
|Interface Stability | Evolving |
+--------------------+-------------------------+
|MT-Level | MT-Safe with exceptions |
+--------------------+-------------------------+
SEE ALSO
ldap(1),
syslog(3C),
libpam(3LIB),
pam(3PAM),
pam_sm_acct_mgmt(3PAM),
pam_sm_authenticate(3PAM),
pam_sm_chauthtok(3PAM),
pam_sm_close_session(3PAM),
pam_sm_open_session(3PAM),
pam_sm_setcred(3PAM),
pam.conf(5),
attributes(7),
pam_authtok_check(7),
pam_authtok_get(7),
pam_authtok_store(7),
pam_passwd_auth(7),
pam_unix_account(7),
pam_unix_auth(7),
idsconfig(8),
ldap_cachemgr(8),
ldapclient(8)NOTES
The interfaces in
libpam(3LIB) are MT-Safe only if each thread within
the multi-threaded application uses its own
PAM handle.
The previously supported
use_first_pass and
try_first_pass options
are obsolete in this version, are no longer needed, can safely be
removed from
pam.conf(5), and are silently ignored. They might be
removed in a future release. Password prompting must be provided for
by stacking
pam_authtok_get(7) before
pam_ldap in the
auth and
password module stacks and
pam_passwd_auth(7) in the
passwd service
auth stack (as described in the EXAMPLES section). The previously
supported password update function is replaced in this release by the
previously recommended use of
pam_authtok_store with the
server_policy option (as described in the EXAMPLES section).
The functions:
pam_sm_setcred(3PAM),
pam_sm_chauthtok(3PAM),
pam_sm_open_session(3PAM), and
pam_sm_close_session(3PAM) do nothing
and return
PAM_IGNORE in
pam_ldap.
August 19, 2023 PAM_LDAP(7)