16.3. PAM Configuration File Format
Each PAM configuration file contains a group of directives formatted as follows:
<module interface> <control flag> <module name> <module arguments>
Each of these elements are explained in the subsequent sections.
16.3.1. Module Interface
There are four types of PAM module interfaces which correlate to different aspects of the authorization process:
auth
— This module interface authenticates use. For example, it asks for and verifies the validity of a password. Modules with this interface can also set credentials, such as group memberships or Kerberos tickets.account
— This module interface verifies that access is allowed. For example, it may check if a user account is expired or is allowed to log in at a particular time of day.password
— This module interface sets and verifies passwords.session
— This module interface configures and manages user sessions. Modules with this interface can also perform additional tasks that are needed to allow access, like mounting a user's home directory and making the user's mailbox available.
Note
An individual module can provide any or all module interfaces. For instance,
pam_unix.so
provides all four module interfaces.
In a PAM configuration file, the module interface is the first field defined. For example, a typical line in a configuration may look like this:
auth required pam_unix.so
This instructs PAM to use the
pam_unix.so
module's auth
interface.
16.3.1.1. Stacking Module Interfaces
Module interface directives can be stacked, or placed upon one another, so that multiple modules are used together for one purpose. For this reason, the order in which the modules are listed is very important to the authentication process.
Stacking makes it very easy for an administrator to require specific conditions to exist before allowing the user to authenticate. For example,
rlogin
normally uses five stacked auth
modules, as seen in its PAM configuration file:
auth required pam_nologin.so auth required pam_securetty.so auth required pam_env.so auth sufficient pam_rhosts_auth.so auth required pam_stack.so service=system-auth
Before someone is allowed to use
rlogin
, PAM verifies that the /etc/nologin
file does not exist, that they are not trying to log in remotely as a root user over a network connection, and that any environmental variables can be loaded. Then, if a successful rhosts
authentication is performed, the connection is allowed. If the rhosts
authentication fails, then standard password authentication is performed.