PAM.CONF(5) File Formats and Configurations PAM.CONF(5)
NAME
pam.conf - configuration file for pluggable authentication modules
SYNOPSIS
/etc/pam.confDESCRIPTION
pam.conf is the configuration file for the Pluggable Authentication
Module architecture, or
PAM. A
PAM module provides functionality for
one or more of four possible services: authentication, account
management, session management, and password management.
authentication service module Provides functionality to authenticate a user and set up user
credentials.
account management module Provides functionality to determine if the current user's account
is valid. This includes checking for password and account
expiration, as well as verifying access hour restrictions.
session management module Provides functionality to set up and terminate login sessions.
password management module Provides functionality to change a user's authentication token or
password.
Each of the four service modules can be implemented as a shared
library object which can be referenced in the
pam.conf configuration
file.
Simplified pam.conf Configuration File The
pam.conf file contains a listing of services. Each service is
paired with a corresponding service module. When a service is
requested, its associated module is invoked. Each entry may be a
maximum of 256 characters, including the end of line, and has the
following format:
service_name module_type control_flag module_path options The following is an example of a
pam.conf configuration file with
support for authentication, account management, session management
and password management modules (See the
pam.conf file that is
shipped with your system for the contents of this file):
login auth requisite pam_authtok_get.so.1
login auth required pam_dhkeys.so.1
login auth required pam_unix_auth.so.1
login auth required pam_dial_auth.so.1
other account requisite pam_roles.so.1
other account required pam_unix_account.so.1
other session required pam_unix_session.so.1
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
service_name denotes the service (for example,
login,
dtlogin, or
rlogin).
The keyword, "
other," indicates the module that all other
applications which have not been specified should use. The "
other"
keyword can also be used if all services of the same
module_type have
the same requirements.
In the example, since all of the services use the same session
module, they could have been replaced by a single
other line.
module_type denotes the service module type: authentication (
auth),
account management (
account), session management (
session), or
password management (
password).
The
control_flag field determines the behavior of stacking.
The
module_path field specifies the relative pathname to a shared
library object, or an included
PAM configuration file, which
implements the service functionality. If the pathname is not
absolute, shared library objects are assumed to be relative to
/usr/lib/security/$ISA/, and included
PAM configuration files are
assumed to be relative to
/usr/lib/security/.
The
ISA token is replaced by an implementation defined directory name
which defines the path relative to the calling program's instruction
set architecture.
The
options field is used by the
PAM framework layer to pass module
specific options to the modules. It is up to the module to parse and
interpret the options.
This field can be used by the modules to turn on debugging or to pass
any module specific parameters such as a
TIMEOUT value. The options
supported by the modules are documented in their respective manual
pages.
Integrating Multiple Authentication Services With Stacking
When a
service_name of the same
module_type is defined more than
once, the service is said to be stacked. Each module referenced in
the
module_path for that service is then processed in the order that
it occurs in the configuration file. The
control_flag field specifies
the continuation and failure semantics of the modules, and can
contain one of the following values:
binding If the service module returns success and no preceding
required modules returned failures, immediately return
success without calling any subsequent modules. If a
failure is returned, treat the failure as a
required module failure, and continue to process the
PAM stack.
include Process the lines from the
PAM configuration file that
is specified in the
module_path at this point in the
PAM stack. The ``
other'' keyword is used if the
specified service_name is not found. 32 levels of
included
PAM configuration files are supported. Any
options are ignored.
optional If the service module returns success, record the
success, and continue to process the
PAM stack. If a
failure is returned, and it is the first
optional module failure, save the failure code as an
optional failure. Continue to process the
PAM stack.
required If the service module returns success, record the
success, and continue to process the
PAM stack. If a
failure is returned, and it is the first
required failure, save the failure code as a
required failure.
Continue to process the
PAM stack.
requisite If the service module returns success, record the
success, and continue to process the
PAM stack. If a
failure is returned, immediately return the first non-
optional failure value recorded without calling any
subsequent modules. That is, return this failure unless
a previous required service module failed. If a
previous required service module failed, then return
the first of those values.
sufficient If the service module return success and no preceding
required modules returned failures, immediately return
success without calling any subsequent modules. If a
failure is returned, treat the failure as an optional
module failure, and continue to process the
PAM stack.
If the
PAM stack runs to completion, that is, neither a
requisite module failed, nor a
binding or
sufficient module success stops it,
success is returned if no required modules failed and at least one
required, requisite, optional module succeeded. If no module
succeeded and a required or binding module failed, the first of those
errors is returned. If no required or binding module failed and an
optional module failed, the first of the option module errors is
returned. If no module in the stack succeeded or failed, that is, all
modules returned an ignore status, a default error based on module
type, for example, "User account expired," is returned.
All errors in
pam.conf entries are logged to
syslog as
LOG_AUTH |
LOG_ERR errors. The use of a service with an error noted in the
pam.conf entry for that service will fail. The system administrator
will need to correct the noted errors before that service may be
used. If no services are available or the
pam.conf file is missing,
the system administrator may enter system maintenance mode to correct
or restore the file.
The following is a sample configuration file that stacks the
su,
login, and
rlogin services.
su auth required pam_inhouse.so.1
su auth requisite pam_authtok_get.so.1
su auth required pam_dhkeys.so.1
su auth required pam_unix_auth.so.1
login auth requisite pam_authtok_get.so.1
login auth required pam_dhkeys.so.1
login auth required pam_unix_auth.so.1
login auth required pam_dial_auth.so.1
login auth optional pam_inhouse.so.1
rlogin auth sufficient pam_rhosts_auth.so.1
rlogin auth requisite pam_authtok_get.so.1
rlogin auth required pam_dhkeys.so.1
rlogin auth required pam_unix_auth.so.1
In the case of
su, the user is authenticated by the
inhouse and
authtok_get,
dhkeys, and
unix_auth authentication modules. Because
the
inhouse and the other authentication modules are
required and
requisite, respectively, an error is returned back to the application
if any module fails. In addition, if the
requisite authentication
(
pam_authtok_get authentication) fails, the other authentication
modules are never invoked, and the error is returned immediately back
to the application.
In the case of
login, the
required keyword for
control_flag requires
that the user be allowed to login only if the user is authenticated
by all the service modules. If
pam_unix_auth authentication fails,
control continues to proceed down the stack, and the
inhouse authentication module is invoked.
inhouse authentication is optional
by virtue of the optional keyword in the
control_flag field. The user
can still log in even if
inhouse authentication fails, assuming the
modules stacked above succeeded.
In the case of
rlogin, the
sufficient keyword for
control_flag specifies that if the
rhosts authentication check succeeds, then
PAM should return success to
rlogin and
rlogin should not prompt the user
for a password. The other authentication modules, which are in the
stack, will only be invoked if the
rhosts check fails. This gives
the system administrator the flexibility to determine if
rhosts alone
is sufficient enough to authenticate a remote user.
Some modules return
PAM_IGNORE in certain situations. In these cases
the
PAM framework ignores the entire entry in
pam.conf regardless of
whether or not it is
binding,
requisite,
required,
optional, or
sufficient.
Utilities and Files
The specific service names and module types for each service should
be documented in the man page for that service. For instance, the
sshd(8) man page lists all of the
PAM service names and module types
for the
sshd command.
The
PAM configuration file does not dictate either the name or the
location of the service specific modules. The convention, however, is
the following:
pam_module_name.so.x File that implements various function of
specific authentication services. As the
relative pathname specified,
/usr/lib/security/$ISA is prepended to
it.
/etc/pam.conf Configuration file
/usr/lib/$ISA/libpam.so.1 File that implements the
PAM framework
library
EXAMPLES
Example 1: Using the include control flag
The following example collects the common Unix modules into a single
file to be included as needed in the example of a
pam.conf file. The
common Unix module file is named
unix_common and consists of:
OTHER auth requisite pam_authtok_get.so.1
OTHER auth required pam_dhkeys.so.1
OTHER auth required pam_unix_auth.so.1
OTHER auth required pam_unix_cred.so.1
OTHER account requisite pam_roles.so.1
OTHER account required pam_unix_account.so.1
OTHER session required pam_unix_session.so.1
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
The
pam.conf file and consists of:
# Authentication management
#
# login service (explicit because of pam_dial_auth)
#
login auth include unix_common
login auth required pam_dial_auth.so.1
#
# rlogin service (explicit because of pam_rhost_auth)
#
rlogin auth sufficient pam_rhosts_auth.so.1
rlogin auth include unix_common
#
# Default definitions for Authentication management
# Used when service name is not explicitly mentioned
#
OTHER auth include unix_common
#
# Default definition for Account management
# Used when service name is not explicitly mentioned
#
OTHER account include unix_common
#
# Default definition for Session management
# Used when service name is not explicitly mentioned
#
OTHER session include unix_common
#
# Default definition for Password management
# Used when service name is not explicitly mentioned
#
OTHER password include unix_common
ATTRIBUTES
See
attributes(7) for descriptions of the following attributes:
+--------------------+-----------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-----------------+
|Interface Stability | See Below. |
+--------------------+-----------------+
The format is Stable. The contents has no stability attributes.
SEE ALSO
login(1),
passwd(1),
syslog(3C),
libpam(3LIB),
pam(3PAM),
attributes(7),
environ(7),
pam_authtok_check(7),
pam_authtok_get(7),
pam_authtok_store(7),
pam_dhkeys(7),
pam_krb5(7),
pam_passwd_auth(7),
pam_unix_account(7),
pam_unix_auth(7),
pam_unix_session(7),
in.rlogind(8),
in.rshd(8),
in.telnetd(8),
in.uucpd(8),
init(8),
sac(8),
su(8),
ttymon(8)NOTES
The
pam_unix module is no longer supported. Similar functionality is
provided by
pam_authtok_check(7),
pam_authtok_get(7),
pam_authtok_store(7),
pam_dhkeys(7),
pam_passwd_auth(7),
pam_unix_account(7),
pam_unix_auth(7), and
pam_unix_session(7).
With the removal of the
pam_unix module, the SunOS delivered PAM
service modules no longer need or support the "
use_first_pass" or
"
try_first_pass" options. This functionality is provided by stacking
pam_authtok_get(7) above a module that requires a password.
March 4, 2017 PAM.CONF(5)