pam-7.html
Next
pam-5.html
Previous
pam.html#toc6
Contents
6. A reference guide for available modules
Here, we collect together some descriptions of the various modules
available for
Linux-PAM
.  In general these modules should be
freely available.  Where this is not the case, it will be indicated.
Also please note the comments contained in the section
pam-2.html#text-conventions
on text conventions above
when copying
the examples listed below.
6.1 The access module
Synopsis
Module Name:
pam_access
Author[s]:
Alexei Nogin <alexei@nogin.dnttm.ru>
Maintainer:
Management groups provided:
account
Cryptographically sensitive:
Security rating:
Clean code base:
System dependencies:
Requires a configuration file. By default
/etc/security/access.conf
is used but this can be overridden.
Network aware:
Through
PAM_TTY
if set, otherwise attempts getting tty name of
the stdin file descriptor with
ttyname()
.  Standard
gethostname(),
yp_get_default_domain()
,
gethostbyname()
calls.
NIS
is used for netgroup support.
Overview of module
Provides logdaemon style login access control.
Account component
Recognized arguments:
accessfile=
/path/to/file.conf
;
fieldsep=
separators
listsep=
separators
Description:
This module provides logdaemon style login access control based on
login names and on host (or domain) names, internet addresses (or
network numbers), or on terminal line names in case of non-networked
logins. Diagnostics are reported through
syslog(3)
.  Wietse
Venema's
login_access.c
from
logdaemon-5.6
is used with
several changes by A. Nogin.
The behavior of this module can be modified with the following
arguments:
accessfile=/path/to/file.conf
-
indicate an alternative
access
configuration file to override
the default. This can be useful when different services need different
access lists.
fieldsep=
separators
-
this option modifies the field separator character that
pam_access
will recognize when parsing the access configuration
file. For example:
fieldsep=|
will cause the default `:'
character to be treated as part of a field value and `|' becomes the
field separator. Doing this is useful in conjuction with a system that
wants to use pam_access with X based applications, since the
PAM_TTY
item is likely to be of the form "hostname:0" which
includes a `:' character in its value.
listsep=
separators
-
this option modifies the list separator character that
pam_access
will recognize when parsing the access configuration
file. For example:
listsep=,
will cause the default ` ' and `\t'
characters to be treated as part of a list element value and `,' becomes the
only list element separator. Doing this is useful on a system with
group information obtained from a Windows domain, where the default built-in
groups "Domain Users", "Domain Admins" contain a space.
Examples/suggested usage:
Use of module is recommended, for example, on administrative machines
such as
NIS
servers and mail servers where you need several accounts
active but don't want them all to have login capability.
For
/etc/pam.d
style configurations where your modules live
in
/lib/security
, start by adding the following line to
/etc/pam.d/login
,
/etc/pam.d/rlogin
,
/etc/pam.d/rsh
and
/etc/pam.d/ftp
:
account  required       /lib/security/pam_access.so
Note that use of this module is not effective unless your system ignores
.rhosts
files.  See the the pam_rhosts_auth documentation.
A sample
access.conf
configuration file is included with the
distribution.
6.2 Chroot
Synopsis
Module Name:
pam_chroot
Author:
Bruce Campbell <brucec@humbug.org.au>
Maintainer:
Author; proposed on 20/11/96 - email for status
Management groups provided:
account; session; authentication
Cryptographically sensitive:
Security rating:
Clean code base:
Unwritten.
System dependencies:
Network aware:
Expects localhost.
Overview of module
This module is intended to provide a transparent wrapper around the
average user, one that puts them in a fake file-system (eg, their
'
/
' is really
/some/where/else
).
Useful if you have several classes of users, and are slightly paranoid
about security.  Can be used to limit who else users can see on the
system, and to limit the selection of programs they can run.
Account component:
Need more info here.
Authentication component:
Need more info here.
Session component:
Need more info here.
Recognized arguments:
Arguments and logging levels for the PAM version are being worked on.
Description:
Examples/suggested usage:
Do provide a reasonable list of programs - just tossing 'cat', 'ls', 'rm',
'cp' and 'ed' in there is a bit...
Don't take it to extremes (eg, you can set up a separate environment for
each user, but its a big waste of your disk space.)
6.3 Cracklib pluggable password strength-checker
Synopsis
Module Name:
pam_cracklib
Author:
Cristian Gafton <gafton@redhat.com>
Maintainer:
Author.
Management groups provided:
password
Cryptographically sensitive:
Security rating:
Clean code base:
System dependencies:
Requires the system library
libcrack
and a system dictionary:
/usr/lib/cracklib_dict
.
Network aware:
Overview of module
This module can be plugged into the
password
stack of a given
application to provide some plug-in strength-checking for passwords.
This module works in the following manner: it first calls the
Cracklib
routine to check the strength of the password; if
crack likes the password, the module does an additional set of
strength checks.  These checks are:
Palindrome
-
Is the new password a palindrome of the old one?
Case Change Only
-
Is the new password the the old one with only a change of case?
Similar
-
Is the new password too much like the old one?  This is primarily
controlled by one argument,
difok
which is a number of characters
that if different between the old and new are enough to accept the new
password, this defaults to 10 or 1/2 the size of the new password
whichever is smaller.
To avoid the lockup associated with trying to change a long and
complicated password,
difignore
is available. This argument can
be used to specify the minimum length a new password needs to be
before the
difok
value is ignored. The default value for
difignore
is 23.
Simple
-
Is the new password too small?  This is controlled by 5 arguments
minlen
,
dcredit
,
ucredit
,
lcredit
, and
ocredit
. See the section on the arguments for the details of how
these work and there defaults.
Rotated
-
Is the new password a rotated version of the old password?
Already used
-
Was the password used in the past?  Previously used passwords are to
be found in /etc/security/opasswd.
This module with no arguments will work well for standard unix
password encryption.  With md5 encryption, passwords can be longer
than 8 characters and the default settings for this module can make it
hard for the user to choose a satisfactory new password.  Notably, the
requirement that the new password contain no more than 1/2 of the
characters in the old password becomes a non-trivial constraint.  For
example, an old password of the form "the quick brown fox jumped over
the lazy dogs" would be difficult to change...  In addition, the
default action is to allow passwords as small as 5 characters in
length.  For a md5 systems it can be a good idea to increase the
required minimum size of a password.  One can then allow more credit
for different kinds of characters but accept that the new password may
share most of these characters with the old password.
Password component
Recognized arguments:
debug
;
type=XXX
;
retry=N
;
difok=N
;
minlen=N
;
dcredit=N
;
ucredit=N
;
lcredit=N
;
ocredit=N
;
use_authtok
;
Description:
The action of this module is to prompt the user for a password and
check its strength against a system dictionary and a set of rules for
identifying poor choices.
The default action is to prompt for a single password, check its
strength and then, if it is considered strong, prompt for the password
a second time (to verify that it was typed correctly on the first
occasion). All being well, the password is passed on to subsequent
modules to be installed as the new authentication token.
The default action may be modified in a number of ways using the
arguments recognized by the module:
debug
-
this option makes the module write information to syslog(3) indicating
the behavior of the module (this option does
not
write password
information to the log file).
type=XXX
-
the default action is for the module to use the following prompts when
requesting passwords: ``New UNIX password: '' and ``Retype UNIX
password: ''. Using this option you can replace the word UNIX with
XXX
.
retry=N
-
the default number of times this module will request a new password
(for strength-checking) from the user is 1. Using this argument this
can be increased to
N
.
difok=N
-
This argument will change the default of 10 for the number of
characters in the new password that must not be present in the old
password.  In addition, if 1/2 of the characters in the new password
are different then the new password will be accepted anyway.
minlen=N
-
The minimum acceptable size for the new password (plus one if credits
are not disabled which is the default).
In addition to the number of characters in the new password, credit (of
+1 in length) is given for each different kind of character (
other,
upper, lower
and
digit
).  The default for this parameter is
9 which is good for a old style UNIX password all of the same type of
character but may be too low to exploit the added security of a md5
system.  Note that there is a pair of length limits in
Cracklib
itself, a "way too short" limit of 4 which is hard
coded in and a defined limit (6) that will be checked without
reference to
minlen
.  If you want to allow passwords as short
as 5 characters you should either not use this module or recompile
the crack library and then recompile this module.
dcredit=N
-
(N >= 0) This is the maximum credit for having digits in the new password. If
you have less than or
N
digits, each digit will count +1 towards
meeting the current
minlen
value.  The default for
dcredit
is 1 which is the recommended value for
minlen
less than 10.
(N < 0) This is the minimum number of digits that must be met for a new
password.
ucredit=N
-
(N >= 0) This is the maximum credit for having upper case letters in the new
password.  If you have less than or
N
upper case letters each
letter will count +1 towards meeting the current
minlen
value.
The default for
ucredit
is 1 which is the recommended value for
minlen
less than 10. (N < 0) This is the minimum number of upper
case letters that must be met for a new password.
lcredit=N
-
(N >= 0) This is the maximum credit for having lower case letters in the new
password.  If you have less than or
N
lower case letters, each
letter will count +1 towards meeting the current
minlen
value.
The default for
lcredit
is 1 which is the recommended value for
minlen
less than 10. (N < 0) This is the minimum number of lower
case letters that must be met for a new password.
ocredit=N
-
(N >= 0) This is the maximum credit for having other characters in the new
password.  If you have less than or
N
other characters, each
character will count +1 towards meeting the current
minlen
value.
The default for
ocredit
is 1 which is the recommended value for
minlen
less than 10. (N < 0) This is the minimum number of other
characters that must be met for a new password.
use_authtok
-
This argument is used to
force
the module to not prompt the user
for a new password but use the one provided by the previously stacked
password
module.
Examples/suggested usage:
For an example of the use of this module, we show how it may be
stacked with the password component of
pam_pwdb
:
#
# These lines stack two password type modules. In this example the
# user is given 3 opportunities to enter a strong password. The
# "use_authtok" argument ensures that the pam_pwdb module does not
# prompt for a password, but instead uses the one provided by
# pam_cracklib.
#
passwd  password required       pam_cracklib.so retry=3
passwd  password required       pam_pwdb.so use_authtok
Another example (in the
/etc/pam.d/passwd
format) is for the
case that you want to use md5 password encryption:
#%PAM-1.0
#
# These lines allow a md5 systems to support passwords of at least 14
# bytes with extra credit of 2 for digits and 2 for others the new
# password must have at least three bytes that are not present in the
# old password
#
password  required pam_cracklib.so \
difok=3 minlen=15 dcredit= 2 ocredit=2
password  required pam_pwdb.so use_authtok nullok md5
And here is another example in case you don't want to use credits:
#%PAM-1.0
#
# These lines require the user to select a password with a minimum
# length of 8 and with at least 1 digit number, 1 upper case letter,
# and 1 other character
#
password  required pam_cracklib.so \
dcredit=-1 ucredit=-1 ocredit=-1 lcredit=0 minlen=8
password  required pam_pwdb.so use_authtok nullok md5
In this example we simply say that the password must have a minimum
length of 8:
#%PAM-1.0
#
# These lines require the user to select a password with a mimimum
# length of 8. He gets no credits and he is not forced to use
# digit numbers, upper case letters etc.
#
password  required pam_cracklib.so \
dcredit=0 ucredit=0 ocredit=0 lcredit=0 minlen=8
password  required pam_pwdb.so use_authtok nullok md5
6.4 The locking-out module
Synopsis
Module Name:
pam_deny
Author:
Andrew G. Morgan <morgan@kernel.org>
Maintainer:
current
Linux-PAM
maintainer
Management groups provided:
account; authentication; password; session
Cryptographically sensitive:
Security rating:
Clean code base:
clean.
System dependencies:
Network aware:
Overview of module
This module can be used to deny access. It always indicates a failure
to the application through the PAM framework. As is commented in the
overview section
pam-3.html#overview-section
above
, this module
might be suitable for using for default (the
OTHER
) entries.
Account component
Recognized arguments:
Description:
This component does nothing other than return a failure. The
failure type is
PAM_ACCT_EXPIRED
.
Examples/suggested usage:
Stacking this module with type
account
will prevent the user from
gaining access to the system via applications that refer to
Linux-PAM
's account management function
pam_acct_mgmt()
.
The following example would make it impossible to login:
#
# add this line to your other login entries to disable all accounts
#
login   account  required       pam_deny.so
Authentication component
Recognized arguments:
Description:
This component does nothing other than return a failure. The failure
type is
PAM_AUTH_ERR
in the case that
pam_authenticate()
is
called (when the application tries to authenticate the user), and is
PAM_CRED_UNAVAIL
when the application calls
pam_setcred()
(to establish and set the credentials of the user -- it is unlikely
that this function will ever be called in practice).
Examples/suggested usage:
To deny access to default applications with this component of the
pam_deny
module, you might include the following line in your
Linux-PAM
configuration file:
#
# add this line to your existing OTHER entries to prevent
# authentication succeeding with default applications.
#
OTHER   auth     required       pam_deny.so
Password component
Recognized arguments:
Description:
This component of the module denies the user the opportunity to change
their password. It always responds with
PAM_AUTHTOK_ERR
when
invoked.
Examples/suggested usage:
This module should be used to prevent an application from updating the
applicant user's password. For example, to prevent
login
from
automatically prompting for a new password when the old one has
expired you should include the following line in your configuration
file:
#
# add this line to your other login entries to prevent the login
# application from being able to change the user's password.
#
login   password required       pam_deny.so
Session component
Recognized arguments:
Description:
This aspect of the module prevents an application from starting a
session on the host computer.
Examples/suggested usage:
Together with another session module, that displays a message of the
day perhaps (
pam_motd
for example), this module can be used to
block a user from starting a shell. We might use the following entries
in the configuration file to inform the user it is system time:
#
# An example to see how to configure login to refuse the user a
# session (politely)
#
login   session  required       pam_motd.so \
motd=/etc/system_time
login   session  required       pam_deny.so
6.5 Set/unset environment variables
Synopsis
Module Name:
pam_env
Author:
Dave Kinchlea <kinch@kinch.ark.com>
Maintainer:
Author
Management groups provided:
Authentication (setcred)
Cryptographically sensitive:
Security rating:
Clean code base:
System dependencies:
/etc/security/pam_env.conf
Network aware:
Overview of module
This module allows the (un)setting of environment variables. Supported
is the use of previously set environment variables as well as
PAM_ITEM
s such as
PAM_RHOST
.
Authentication component
Recognized arguments:
debug
;
conffile=
configuration-file-name
;
envfile
=
env-file-name
;
readenv
=
0|1
Description:
This module allows you to (un)set arbitrary environment variables
using fixed strings, the value of previously set environment variables
and/or
PAM_ITEM
s.
All is controlled via a configuration file (by default,
/etc/security/pam_env.conf
but can be overriden with
conffile
argument).  Each line starts with the variable name,
there are then two possible options for each variable
DEFAULT
and
OVERRIDE
.
DEFAULT
allows an administrator to
set the value of the variable to some default value, if none is
supplied then the empty string is assumed.  The
OVERRIDE
option tells pam_env that it should enter in its value (overriding the
default value) if there is one to use.
OVERRIDE
is not used,
""
is assumed and no override will be done.
VARIABLE   [DEFAULT=[value]]  [OVERRIDE=[value]]
(Possibly non-existent) environment variables may be used in values
using the
${string}
syntax and (possibly
non-existent)
PAM_ITEM
s may be used in values using the
&commat;{string}
syntax. Both the
$
and
&commat;
characters can be backslash-escaped to be used
as literal values (as in
\$
.  Double quotes may
be used in values (but not environment variable names) when white
space is needed
the full value must be delimited by the quotes and
embedded or escaped quotes are not supported
.
This module can also parse a file with simple
KEY=VAL
pairs
on seperate lines (
/etc/environment
by default). You can
change the default file to parse, with the
envfile
flag and turn
it on or off by setting the
readenv
flag to 1 or 0 respectively.
The behavior of this module can be modified with one of the following
flags:
debug
- write more information to
syslog(3)
.
conffile=
filename
- by default the file
/etc/security/pam_env.conf
is used as
the configuration file. This option overrides the default. You must
supply a complete path + file name.
envfile=
filename
- by default the file
/etc/environment
is used to load KEY=VAL
pairs directly into the env. This option overrides the default. You must
supply a complete path + file name.
readenv=
0|1
- turns on or off the reading of the file specified by envfile (0 is off,
1 is on). By default this option is on.
Examples/suggested usage:
See sample
pam_env.conf
for more information and examples.
6.6 The filter module
Synopsis
Module Name:
pam_filter
Author:
Andrew G. Morgan <morgan@kernel.org>
Maintainer:
Author.
Management groups provided:
account; authentication; password; session
Cryptographically sensitive:
Not yet.
Security rating:
Clean code base:
This module compiles cleanly on Linux based systems.
System dependencies:
To function it requires
filters
to be installed on the system.
Network aware:
Overview of module
This module was written to offer a plug-in alternative to programs
like ttysnoop (XXX - need a reference). Since writing a filter that
performs this function has not occurred, it is currently only a toy.
The single filter provided with the module simply transposes upper and
lower case letters in the input and output streams. (This can be very
annoying and is not kind to termcap based editors).
Account+Authentication+Password+Session components
Recognized arguments:
debug
;
new_term
;
non_term
;
runX
Description:
Each component of the module has the potential to invoke the desired
filter.  The filter is always
execv(2)
d with the privilege of the
calling application and
not
that of the user. For this reason it
cannot usually be killed by the user without closing their session.
The behavior of the module can be significantly altered by the
arguments passed to it in the
Linux-PAM
configuration file:
debug
-
this option increases the amount of information logged to
syslog(3)
as the module is executed.
new_term
-
the default action of the filter is to set the
PAM_TTY
item to
indicate the terminal that the user is using to connect to the
application. This argument indicates that the filter should set
PAM_TTY
to the filtered pseudo-terminal.
non_term
-
don't try to set the
PAM_TTY
item.
runX
-
in order that the module can invoke a filter it should know when to
invoke it. This argument is required to tell the filter when to do
this. The arguments that follow this one are respectively the full
pathname of the filter to be run and any command line arguments that
the filter might expect.
Permitted values for
X
are
1
and
2
. These indicate the
precise time that the filter is to be run. To understand this concept
it will be useful to have read the Linux-PAM Module developer's
guide. Basically, for each management group there are up to two ways
of calling the module's functions.
In the case of the
authentication
and
session
components
there are actually two separate functions.  For the case of
authentication, these functions are
_authenticate
and
_setcred
-- here
run1
means run the filter from the
_authenticate
function and
run2
means run the filter from
_setcred
. In the case of the session modules,
run1
implies
that the filter is invoked at the
_open_session
stage, and
run2
for
_close_session
.
For the case of the account component. Either
run1
or
run2
may be used.
For the case of the password component,
run1
is used to indicate
that the filter is run on the first occasion
_chauthtok
is run
(the
PAM_PRELIM_CHECK
phase) and
run2
is used to indicate
that the filter is run on the second occasion (the
PAM_UPDATE_AUTHTOK
phase).
Examples/suggested usage:
At the time of writing there is little real use to be made of this
module. For fun you might try adding the following line to your
login's configuration entries
#
# An example to see how to configure login to transpose upper and
# lower case letters once the user has logged in(!)
#
login   session  required       pam_filter.so \
run1 /usr/sbin/pam_filter/upperLOWER
6.7 Anonymous access module
Synopsis
Module Name:
pam_ftp.so
Author:
Andrew G. Morgan <morgan@kernel.org>
Maintainer:
Author.
Management groups provided:
authentication
Cryptographically sensitive:
Security rating:
Clean code base:
System dependencies:
Network aware:
prompts for email address of user; easily spoofed (XXX - needs work)
Overview of module
The purpose of this module is to provide a pluggable anonymous ftp
mode of access.
Authentication component
Recognized arguments:
debug
;
users=XXX,YYY,...
;
ignore
Description:
This module intercepts the user's name and password. If the name is
``
ftp
'' or ``
anonymous
'', the user's password is broken up
at the `
@
' delimiter into a
PAM_RUSER
and a
PAM_RHOST
part; these pam-items being set accordingly. The username
(
PAM_USER
) is set to ``
ftp
''.  In this case the module
succeeds.  Alternatively, the module sets the
PAM_AUTHTOK
item
with the entered password and fails.
The behavior of the module can be modified with the following flags:
debug
-
log more information to with
syslog(3)
.
users=XXX,YYY,...
-
instead of ``
ftp
'' or ``
anonymous
'', provide anonymous login
to the comma separated list of users; ``
XXX,YYY,...
''. Should the
applicant enter one of these usernames the returned username is set to
the first in the list; ``
XXX
''.
ignore
-
pay no attention to the email address of the user (if supplied).
Examples/suggested usage:
An example of the use of this module is provided in the configuration
file section
pam-4.html#configuration
above
. With care, this
module could be used to provide new/temporary account anonymous
login.
6.8 The group access module
Synopsis
Module Name:
pam_group
Author:
Andrew G. Morgan <morgan@kernel.org>
Maintainer:
Author.
Management groups provided:
authentication
Cryptographically sensitive:
Security rating:
Sensitive to
setgid
status of file-systems accessible to users.
Clean code base:
System dependencies:
Requires an
/etc/security/group.conf
file. Can be compiled
with or without
libpwdb
.
Network aware:
Only through correctly set
PAM_TTY
item.
Overview of module
This module provides group-settings based on the user's name and the
terminal they are requesting a given service from. It takes note of
the time of day.
Authentication component
Recognized arguments:
Description:
This module does not authenticate the user, but instead it grants
group memberships (in the credential setting phase of the
authentication module) to the user.  Such memberships are based on the
service they are applying for. The group memberships are listed in
text form in the
/etc/security/group.conf
file.
Examples/suggested usage:
For this module to function correctly there must be a correctly
formatted
/etc/security/groups.conf
file present. The format
of this file is as follows. Group memberships are given based on the
service application satisfying any combination of lines in the
configuration file. Each line (barring comments which are preceded by
`
#
' marks) has the following
syntax:
services   ;   ttys   ;   users   ;   times   ;   groups
Here the first four fields share the syntax of the
pam_time
configuration file;
/etc/security/pam_time.conf
, and the last
field, the
groups
field, is a comma (or space) separated list of
the text-names of a selection of groups. If the users application for
service satisfies the first four fields, the user is granted membership
of the listed groups.
As stated in above this module's usefulness relies on the file-systems
accessible to the user.  The point being that once granted the
membership of a group, the user may attempt to create a
setgid
binary with a restricted group ownership.  Later, when the user is not
given membership to this group, they can recover group membership with
the precompiled binary.  The reason that the file-systems that the user
has access to are so significant, is the fact that when a system is
mounted
nosuid
the user is unable to create or execute such a
binary file.  For this module to provide any level of security, all
file-systems that the user has write access to should be mounted
nosuid
.
The
pam_group
module fuctions in parallel with the
/etc/group
file. If the user is granted any groups based on
the behavior of this module, they are granted
in addition
to
those entries
/etc/group
(or equivalent).
6.9 Add issue file to user prompt
Synopsis
Module Name:
pam_issue
Author:
Ben Collins <bcollins@debian.org>
Maintainer:
Author
Management groups provided:
Authentication (pam_sm_authenticate)
Cryptographically sensitive:
Security rating:
Clean code base:
System dependencies:
Network aware:
Overview of module
This module prepends the issue file (
/etc/issue
by default) when
prompting for a username.
Authentication component
Recognized arguments:
issue=issue-file-name
;
noesc
;
Description:
This module allows you to prepend an issue file to the username prompt. It
also by default parses escape codes in the issue file similar to some
common getty's (using \x format).
Recognized escapes:
d
- current date
s
- operating system name
l
- name of this tty
m
- architecture of this system (i686, sparc, powerpc, ...)
n
- hostname of this system
o
- domainname of this system
r
- release number of the operation system (eg. 2.2.12)
t
- current time
u
- number of users currently logged in
U
- same as
u
, except it is suffixed with "user" or "users" (eg. "1
user" or "10 users"
v
- version/build-date of the operating system (eg. "#3 Mon Aug 23 14:38:16
EDT 1999" on Linux).
The behavior of this module can be modified with one of the following
flags:
issue
- the file to output if not using the default
noesc
- turns off escape code parsing
Examples/suggested usage:
login  auth  pam_issue.so  issue=/etc/issue
6.10 The Kerberos 4 module.
Synopsis
Module Name:
pam_krb4
Author:
Derrick J. Brashear <shadow@dementia.org>
Maintainer:
Author.
Management groups provided:
authentication; password; session
Cryptographically sensitive:
uses API
Security rating:
Clean code base:
System dependencies:
libraries -
libkrb
,
libdes
,
libcom_err
,
libkadm
;
and a set of Kerberos include files.
Network aware:
Gets Kerberos ticket granting ticket via a Kerberos key distribution
center reached via the network.
Overview of module
This module provides an interface for doing Kerberos verification of a
user's password, getting the user a Kerberos ticket granting ticket
for use with the Kerberos ticket granting service, destroying the
user's tickets at logout time, and changing a Kerberos password.
Session component
Recognized arguments:
Description:
This component of the module currently sets the user's
KRBTKFILE
environment variable (although there is currently no way to export
this), as well as deleting the user's ticket file upon logout (until
PAM_CRED_DELETE
is supported by
login
).
Examples/suggested usage:
This part of the module won't be terribly useful until we can change
the environment from within a
Linux-PAM
module.
Password component
Recognized arguments:
use_first_pass
;
try_first_pass
Description:
This component of the module changes a user's Kerberos password
by first getting and using the user's old password to get
a session key for the password changing service, then sending
a new password to that service.
Examples/suggested usage:
This should only be used with a real Kerberos v4
kadmind
. It
cannot be used with an AFS kaserver unless special provisions are
made. Contact the module author for more information.
Authentication component
Recognized arguments:
use_first_pass
;
try_first_pass
Description:
This component of the module verifies a user's Kerberos password
by requesting a ticket granting ticket from the Kerberos server
and optionally using it to attempt to retrieve the local computer's
host key and verifying using the key file on the local machine if
one exists.
It also writes out a ticket file for the user to use later, and
deletes the ticket file upon logout (not until
PAM_CRED_DELETE
is called from
login
).
Examples/suggested usage:
This module can be used with a real Kerberos server using MIT
v4 Kerberos keys. The module or the system Kerberos libraries
may be modified to support AFS style Kerberos keys. Currently
this is not supported to avoid cryptography constraints.
6.11 The last login module
Synopsis
Module Name:
pam_lastlog
Author:
Andrew G. Morgan <morgan@kernel.org>
Maintainer:
Author
Management groups provided:
auth
Cryptographically sensitive:
Security rating:
Clean code base:
System dependencies:
uses information contained in the
/var/log/lastlog
file.
Network aware:
Overview of module
This session module maintains the
/var/log/lastlog
file.  Adding
an open entry when called via the
pam_open_seesion()
function
and completing it when
pam_close_session()
is called.  This
module can also display a line of information about the last login of
the user.  If an application already performs these tasks, it is not
necessary to use this module.
Session component
Recognized arguments:
debug
;
nodate
;
noterm
;
nohost
;
silent
;
never
Description:
This module can be used to provide a ``Last login on ...''
message. when the user logs into the system from what ever application
uses the PAM libraries.  In addition, the module maintains the
/var/log/lastlog
file.
The behavior of this module can be modified with one of the following
flags:
debug
- write more information to
syslog(3)
.
nodate
- neglect to give the date of the last login when displaying
information about the last login on the system.
noterm
- neglect to diplay the terminal name on which the last login was
attempt.
nohost
- neglect to indicate from which host the last login was attempted.
silent
- neglect to inform the user about any previous login: just update
the
/var/log/lastlog
file.
never
- if the
/var/log/lastlog
file does not contain any old entries
for the user, indicate that the user has never previously logged in
with a ``welcome..." message.
Examples/suggested usage:
This module can be used to indicate that the user has new mail when
they
login
to the system. Here is a sample entry for your
/etc/pam.d/XXX
file:
#
# When were we last here?
#
session  optional       pam_lastlog.so
Note, some applications may perform this function themselves. In such
cases, this module is not necessary.
6.12 The resource limits module
Synopsis
Module Name:
pam_limits
Authors:
Cristian Gafton <gafton@redhat.com>
Thanks are also due to Elliot Lee <sopwith@redhat.com>
for his comments on improving this module.
Maintainer:
Cristian Gafton - 1996/11/20
Management groups provided:
session
Cryptographically sensitive:
Security rating:
Clean code base:
System dependencies:
requires an
/etc/security/limits.conf
file and kernel support
for resource limits. Also uses the library,
libpwdb
.
Network aware:
Overview of module
This module, through the
Linux-PAM
open
-session hook, sets
limits on the system resources that can be obtained in a
user-session. Its actions are dictated more explicitly through the
configuration file discussed below.
Session component
Recognized arguments:
debug
;
conf=/path/to/file.conf
;
change_uid
;
utmp_early
Description:
Through the contents of the configuration file,
/etc/security/limits.conf
, resource limits are placed on
users' sessions. Users of
uid=0
are not affected by this
restriction.
The behavior of this module can be modified with the following
arguments:
debug
-
verbose logging to
syslog(3)
.
conf=/path/to/file.conf
-
indicate an alternative
limits
configuration file to the default.
change_uid
-
change real uid to the user for who the limits are set up.  Use this
option if you have problems like login not forking a shell for user
who has no processes. Be warned that something else may break when
you do this.
utmp_early
-
some broken applications actually allocate a utmp entry for the user
before the user is admitted to the system. If some of the services you
are configuring PAM for do this, you can selectively use this module
argument to compensate for this behavior and at the same time maintain
system-wide consistency with a single limits.conf file.
Examples/suggested usage:
In order to use this module the system administrator must first create
a
root-only-readable
file (default is
/etc/security/limits.conf
).  This file describes the resource
limits the superuser wishes to impose on users and groups. No limits
are imposed on
uid=0
accounts.
Each line of the configuration file describes a limit for a user in
the form:
<domain>     <type>       <item>               <value>
The fields listed above should be filled as follows...
<domain>
can be:
a username
a groupname, with
@group
syntax
the wild-card
*
, for default entry
the wild-card
%
, for maxlogins limit only,
can also be used with
%group
syntax
<type>
can have the three values:
hard
for enforcing
hard
resource limits. These limits
are set by the superuser and enforced by the Linux Kernel. The user
cannot raise his requirement of system resources above such values.
soft
for enforcing
soft
resource limits. These limits
are ones that the user can move up or down within the permitted range
by any pre-exisiting
hard
limits. The values specified with this
token can be thought of as
default
values, for normal system
usage.
-
for enforcing both
soft
and
hard
limits
together.
<item>
can be one of the following:
core
- limits the core file size (KB)
data
- max data size (KB)
fsize
- maximum filesize (KB)
memlock
- max locked-in-memory address space (KB)
nofile
- max number of open files
rss
- max resident set size (KB)
stack
- max stack size (KB)
cpu
- max CPU time (MIN)
nproc
- max number of processes
as
- address space limit
maxlogins
- max number of logins for this user
maxsyslogins
- max number of logins on system
priority
- the priority to run user process with (negative
values boost process priority)
locks
- max locked files (Linux 2.4 and higher)
Note, if you specify a type of ``-'' but neglect to supply the
item
and
value
fields then the module will never enforce any
limits on the corresponding user/group-members etc. . Note, the first
entry of the form which applies to the authenticating user will
override all other entries in the limits configuration file. In such
cases, the
pam_limits
module will always return
PAM_SUCCESS
.
In general, individual limits have priority over group limits, so if
you impose no limits for
admin
group, but one of the members in
this group have a limits line, the user will have its limits set
according to this line.
Also, please note that all limit settings are set
per login
.
They are not global, nor are they permanent; existing only for the
duration of the session.
In the
limits
configuration file, the ``
#
'' character
introduces a comment - after which the rest of the line is ignored.
The
pam_limits
module does its best to report configuration
problems found in its configuration file via
syslog(3)
.
The following is an example configuration file:
# EXAMPLE /etc/security/limits.conf file:
# =======================================
# <domain>   <type>       <item>               <value>
*               soft    core            0
*               hard    rss             10000
@student        hard    nproc           20
@faculty        soft    nproc           20
@faculty        hard    nproc           50
ftp             hard    nproc           0
@student        -       maxlogins       4
Note, the use of
soft
and
hard
limits for the same resource
(see
@faculty
) -- this establishes the
default
and permitted
extreme
level of resources that the user can obtain in a given
service-session.
Note, that wild-cards
*
and
%
have the following meaning when
used for maxlogins limit
*
every user
%
all users, or entire group when
%group
is specified
See the following examples:
# EXAMPLE /etc/security/limits.conf file:
# <domain>   <type>       <item>               <value>
*               -       maxlogins       2
@faculty        -       maxlogins       4
%               -       maxlogins       30
%student        -       maxlogins       10
Explanation: every user can login 2 times, members of the
faculty
group can login 4 times, there can be only 30 logins, only 10 from
students
group.
For the services that need resources limits (login for example) put
the following line in
/etc/pam.conf
as the last line for that
service (usually after the pam_unix session line:
#
# Resource limits imposed on login sessions via pam_limits
#
login   session    required     pam_limits.so
6.13 The list-file module
Synopsis
Module Name:
pam_listfile
Author:
Elliot Lee
<sopwith@cuc.edu>
Maintainer:
Red Hat Software:
Michael K. Johnson <johnsonm@redhat.com>  1996/11/18
(if unavailable, contact Elliot Lee <sopwith@cuc.edu>).
Management groups provided:
authentication
Cryptographically sensitive:
Security rating:
Clean code base:
clean
System dependencies:
Network aware:
Overview of module
The list-file module provides a way to deny or allow services based on
an arbitrary file.
Authentication component
Recognized arguments:
onerr=succeed|fail
;
sense=allow|deny
;
file=
filename
;
item=user|tty|rhost|ruser|group|shell
apply=user|@group
Description:
The module gets the item of the type specified --
user
specifies
the username,
PAM_USER
; tty specifies the name of the terminal
over which the request has been made,
PAM_TTY
; rhost specifies
the name of the remote host (if any) from which the request was made,
PAM_RHOST
; and ruser specifies the name of the remote user
(if available) who made the request,
PAM_RUSER
-- and looks for
an instance of that item in the file
filename
.
filename
contains one line per item listed.  If the item is found, then if
sense=allow
,
PAM_SUCCESS
is returned, causing the
authorization request to succeed; else if
sense=deny
,
PAM_AUTH_ERR
is returned, causing the authorization
request to fail.
If an error is encountered (for instance, if
filename
does not exist, or a poorly-constructed argument is encountered),
then if
onerr=succeed
,
PAM_SUCCESS
is returned,
otherwise if
onerr=fail
,
PAM_AUTH_ERR
or
PAM_SERVICE_ERR
(as appropriate) will be returned.
An additional argument,
apply=
, can be used to restrict the
application of the above to a specific user
(
apply=
username
) or a given group
(
apply=@
groupname
).  This added restriction is only
meaningful when used with the
tty
,
rhost
and
shell
items
.
Besides this last one, all arguments should be specified; do not count
on any default behavior, as it is subject to change.
No credentials are awarded by this module.
Examples/suggested usage:
Classic ``ftpusers'' authentication can be implemented with this entry
in
/etc/pam.conf
:
#
# deny ftp-access to users listed in the /etc/ftpusers file
#
ftp     auth     required       pam_listfile.so \
onerr=succeed item=user sense=deny file=/etc/ftpusers
Note, users listed in
/etc/ftpusers
file are
(counterintuitively)
not
allowed access to the ftp service.
To allow login access only for certain users, you can use a
pam.conf
entry like this:
#
# permit login to users listed in /etc/loginusers
#
login   auth     required       pam_listfile.so \
onerr=fail item=user sense=allow file=/etc/loginusers
For this example to work, all users who are allowed to use the login
service should be listed in the file
/etc/loginusers
.  Unless
you are explicitly trying to lock out root, make sure that when you do
this, you leave a way for root to log in, either by listing root in
/etc/loginusers
, or by listing a user who is able to
su
to the root account.
6.14 The mail module
Synopsis
Module Name:
pam_mail
Author:
Andrew G. Morgan <morgan@kernel.org>
Maintainer:
Author
Management groups provided:
Authentication (credential)
Session (open)
Cryptographically sensitive:
Security rating:
Clean code base:
System dependencies:
Default mail directory
/var/spool/mail/
Network aware:
Overview of module
This module looks at the user's mail directory and indicates
whether the user has any mail in it.
Session component
Recognized arguments:
debug
;
dir=
directory-name
;
nopen
;
close
;
noenv
;
empty
;
hash=
hashcount
;
standard
;
quiet
;
Description:
This module provides the ``you have new mail'' service to the user. It
can be plugged into any application that has credential hooks. It gives a
single message indicating the
newness
of any mail it finds in the
user's mail folder. This module also sets the
Linux-PAM
environment variable,
MAIL
, to the user's mail directory.
The behavior of this module can be modified with one of the following
flags:
debug
- write more information to
syslog(3)
.
dir=
pathname
- look for the users' mail in an alternative directory given by
pathname
.  The default location for mail is
/var/spool/mail
. Note, if the supplied
pathname
is
prefixed by a `
~
', the directory is interpreted as
indicating a file in the user's home directory.
nopen
- instruct the module to
not
print any mail information when the
user's credentials are acquired. This flag is useful to get the
MAIL
environment variable set, but to not display any information about it.
close
- instruct the module to indicate if the user has any mail at the as
the user's credentials are revoked.
noenv
- do not set the
MAIL
environment variable.
empty
- indicate that the user's mail directory is empty if this is found to
be the case.
hash=
hashcount
- mail directory hash depth.  For example, a
hashcount
of 2 would
make the mailfile be
/var/spool/mail/u/s/user
.
standard
- old style "You have..." format which doesn't show the mail spool being used.
this also implies "empty"
quiet
- only report when there is new mail.
Examples/suggested usage:
This module can be used to indicate that the user has new mail when
they
login
to the system. Here is a sample entry for your
/etc/pam.conf
file:
#
# do we have any mail?
#
login   session  optional       pam_mail.so
Note, if the mail spool file (be it
/var/spool/mail/$USER
or
a pathname given with the
dir=
parameter) is a directory then
pam_mail
assumes it is in the
Qmail Maildir
format.
Note, some applications may perform this function themselves. In such
cases, this module is not necessary.
Authentication component
Then authentication companent works the same as the session component,
except that everything is done during the
pam_setcred()
phase.
6.15 Create home directories on initial login
Synopsis
Module Name:
pam_mkhomedir
Author:
Jason Gunthorpe <jgg@ualberta.ca>
Maintainer:
Ben Collins <bcollins@debian.org>
Management groups provided:
Session
Cryptographically sensitive:
Security rating:
Clean code base:
System dependencies:
Network aware:
Overview of module
Creates home directories on the fly for authenticated users.
Session component
Recognized arguments:
skel=skeleton-dir
;
umask=octal-umask
;
Description:
This module is useful for distributed systems where the user account is
managed in a central database (such as NIS, NIS+, or LDAP) and accessed
through miltiple systems. It frees the administrator from having to create
a default home directory on each of the systems by creating it upon the
first succesfully authenticated login of that user. The skeleton directory
(usually /etc/skel/) is used to copy default files and also set's a umask
for the creation.
The behavior of this module can be modified with one of the following
flags:
skel
- The skeleton directory for default files to copy to the new home directory.
umask
- An octal for of the same format as you would pass to the shells umask command.
Examples/suggested usage:
session    required   pam_mkhomedir.so skel=/etc/skel/ umask=0022
6.16 Output the motd file
Synopsis
Module Name:
pam_motd
Author:
Ben Collins <bcollins@debian.org>
Maintainer:
Author
Management groups provided:
Session (open)
Cryptographically sensitive:
Security rating:
Clean code base:
System dependencies:
Network aware:
Overview of module
This module outputs the motd file (
/etc/motd
by default) upon
successful login.
Session component
Recognized arguments:
debug
;
motd=motd-file-name
;
Description:
This module allows you to have arbitrary motd's (message of the day)
output after a succesful login. By default this file is
/etc/motd
,
but is configurable to any file.
The behavior of this module can be modified with one of the following
flags:
motd
- the file to output if not using the default.
Examples/suggested usage:
login  session  pam_motd.so  motd=/etc/motd
6.17 The no-login module
Synopsis
Module Name:
pam_nologin
Author:
Written by Michael K. Johnson <johnsonm@redhat.com>
Maintainer:
Management groups provided:
account; authentication
Cryptographically sensitive:
Security rating:
Clean code base:
System dependencies:
Network aware:
Overview of module
Provides standard Unix
nologin
authentication.
Authentication component
Recognized arguments:
successok, file=<
filename
>
Description:
Provides standard Unix
nologin
authentication.  If the file
/etc/nologin
exists, only root is allowed to log in; other
users are turned away with an error message (and the module returns
PAM_AUTH_ERR
or
PAM_USER_UNKNOWN
).  All users (root or
otherwise) are shown the contents of
/etc/nologin
.
If the file
/etc/nologin
does not exist, this module defaults
to returning
PAM_IGNORE
, but the
successok
module argument
causes it to return
PAM_SUCCESS
in this case.
The administrator can override the default nologin file with the
file=
pathname
module argument.
Examples/suggested usage:
In order to make this module effective, all login methods should be
secured by it.  It should be used as a
required
method listed
before any
sufficient
methods in order to get standard Unix
nologin semantics. Note, the use of
successok
module argument
causes the module to return
PAM_SUCCESS
and as such would break
such a configuration - failing
sufficient
modules would lead to a
successful login because the nologin module
succeeded
.
6.18 The promiscuous module
Synopsis
Module Name:
pam_permit
Author:
Andrew G. Morgan, <morgan@kernel.org>
Maintainer:
Linux-PAM maintainer.
Management groups provided:
account; authentication; password; session
Cryptographically sensitive:
Security rating:
VERY LOW. Use with extreme caution.
Clean code base:
Clean.
System dependencies:
Network aware:
Overview of module
This module is very dangerous. It should be used with extreme
caution. Its action is always to permit access. It does nothing else.
Account+Authentication+Password+Session components
Recognized arguments:
Description:
No matter what management group, the action of this module is to
simply return
PAM_SUCCESS
-- operation successful.
In the case of authentication, the user's name will be acquired. Many
applications become confused if this name is unknown.
Examples/suggested usage:
It is seldom a good idea to use this module. However, it does have
some legitimate uses.  For example, if the system-administrator wishes
to turn off the account management on a workstation, and at the same
time continue to allow logins, then she might use the following
configuration file entry for login:
#
# add this line to your other login entries to disable account
# management, but continue to permit users to log in...
#
login   account  required       pam_permit.so
6.19 The Password-Database module
Synopsis
Module Name:
pam_pwdb
Author:
Cristian Gafton <gafton@redhat.com>
and Andrew G. Morgan <morgan@kernel.org>
Maintainer:
Red Hat.
Management groups provided:
account; authentication; password; session
Cryptographically sensitive:
Security rating:
Clean code base:
System dependencies:
Requires properly configured
libpwdb
Network aware:
Overview of module
This module is a pluggable replacement for the
pam_unix_..
modules. It uses the generic interface of the
Password Database
library
libpwdb
.
Account component
Recognized arguments:
debug
Description:
The
debug
argument makes the accounting functions of this module
syslog(3)
more information on its actions. (Remaining arguments
supported by the other functions of this module are silently ignored,
but others are logged as errors through
syslog(3)
).
Based on the following
pwdb_element
s:
expire
;
last_change
;
max_change
;
defer_change
;
warn_change
,
this module performs the task of establishing the status of the user's
account and password. In the case of the latter, it may offer advice
to the user on changing their password or, through the
PAM_AUTHTOKEN_REQD
return, delay giving service to the user until
they have established a new password. The entries listed above are
documented in the
Password Database Library Guide
(see pointer
above). Should the user's record not contain one or more of these
entries, the corresponding
shadow
check is not performed.
Examples/suggested usage:
In its accounting mode, this module can be inserted as follows:
#
# Ensure users account and password are still active
#
login   account  required       pam_pwdb.so
Authentication component
Recognized arguments:
debug
;
use_first_pass
;
try_first_pass
;
nullok
;
nodelay
;
likeauth
;
noreap
Description:
The
debug
argument makes the authentication functions of this
module
syslog(3)
more information on its actions.
The default action of this module is to not permit the user access to
a service if their
official
password is blank. The
nullok
argument overrides this default.
When given the argument
try_first_pass
, before prompting the user
for their password, the module first tries the previous stacked
auth
-module's password in case that satisfies this module as
well. The argument
use_first_pass
forces the module to use such a
recalled password and will never prompt the user - if no password is
available or the password is not appropriate, the user will be denied
access.
The argument,
nodelay
, can be used to discourage the
authentication component from requesting a delay should the
authentication as a whole fail.  The default action is for the module
to request a delay-on-failure of the order of one second.
Remaining arguments, supported by the other functions of this module,
are silently ignored. Other arguments are logged as errors through
syslog(3)
.
A helper binary,
pwdb_chkpwd
, is provided to check the user's
password when it is stored in a read protected database.  This binary
is very simple and will only check the password of the user invoking
it.  It is called transparently on behalf of the user by the
authenticating component of this module.  In this way it is possible
for applications like
xlock
to work without being
setuid-root. The module, by default, will temporarily turn off
SIGCHLD
handling for the duration of execution of the helper
binary. This is generally the right thing to do, as many applications
are not prepared to handle this signal from a child they didn't know
was
fork()
d. The
noreap
module argument can be used to
suppress this temporary shielding and may be needed for use with
certain applications.
The
likeauth
argument makes the module return the same value
when called as a credential setting module and an authentication
module.  This will help libpam take a sane path through the auth
component of your configuration file.
Examples/suggested usage:
The correct functionality of this module is dictated by having an
appropriate
/etc/pwdb.conf
file, the user
databases specified there dictate the source of the authenticated
user's record.
Password component
Recognized arguments:
debug
;
nullok
;
not_set_pass
;
use_authtok
;
try_first_pass
;
use_first_pass
;
md5
;
bigcrypt
;
shadow
;
radius
;
unix
Description:
This part of the
pam_pwdb
module performs the task of updating
the user's password.  Thanks to the flexibility of
libpwdb
this
module is able to move the user's password from one database to
another, perhaps securing the user's database entry in a dynamic
manner (
this is very ALPHA code at the moment!
) - this is the
purpose of the
shadow
,
radius
and
unix
arguments.
In the case of conventional unix databases (which store the password
encrypted) the
md5
argument is used to do the encryption with the
MD5 function as opposed to the
conventional
crypt(3)
call.
As an alternative to this, the
bigcrypt
argument can be used to
encrypt more than the first 8 characters of a password with DEC's
(Digital Equipment Cooperation) `C2' extension to the standard UNIX
crypt()
algorithm.
The
nullok
module is used to permit the changing of a password
from
an empty one. Without this argument, empty passwords are
treated as account-locking ones.
The argument
use_first_pass
is used to lock the choice of old and
new passwords to that dictated by the previously stacked
password
module.  The
try_first_pass
argument is used to avoid the user
having to re-enter an old password when
pam_pwdb
follows a module
that possibly shared the user's old password - if this old password is
not correct the user will be prompted for the correct one.  The
argument
use_authtok
is used to
force
this module to set the
new password to the one provided by the previously stacked
password
module (this is used in an example of the stacking of
the
Cracklib
module documented above).
The
not_set_pass
argument is used to inform the module that it is
not to pay attention to/make available the old or new passwords from/to
other (stacked) password modules.
The
debug
argument makes the password functions of this module
syslog(3)
more information on its actions. Other arguments may be
logged as erroneous to
syslog(3)
.
Examples/suggested usage:
An example of the stacking of this module with respect to the
pluggable password checking module,
pam_cracklib
, is given in
that modules section above.
Session component
Recognized arguments:
Description:
No arguments are recognized by this module component. Its action is
simply to log the username and the service-type to
syslog(3)
. Messages are logged at the beginning and end of the
user's session.
Examples/suggested usage:
The use of the session modules is straightforward:
#
# pwdb - unix like session opening and closing
#
login   session  required       pam_pwdb.so
6.20 The RADIUS session module
Synopsis
Module Name:
pam_radius
Author:
Cristian Gafton <gafton@redhat.com>
Maintainer:
Author.
Management groups provided:
session
Cryptographically sensitive:
This module does not deal with passwords
Security rating:
Clean code base:
gcc reports 1 warning when compiling
/usr/include/rpc/clnt.h
.
Hey, is not my fault !
System dependencies:
Network aware:
yes; this is a network module (independent of application).
Overview of module
This module is intended to provide the session service for users
authenticated with a RADIUS server.  At the present stage, the only
option supported is the use of the RADIUS server as an accounting
server.
Session component
Recognized arguments:
debug
- verbose logging to
syslog(3)
.
Description:
This module is intended to provide the session service for users
authenticated with a RADIUS server. At the present stage, the only
option supported is the use of the RADIUS server as an
accounting
server.
(There are few things which needs to be cleared out first in
the PAM project until one will be able to use this module and expect
it to magically start pppd in response to a RADIUS server command to
use PPP for this user, or to initiate a telnet connection to another
host, or to hang and call back the user using parameters provided in
the RADIUS server response. Most of these things are better suited for
the radius login application. I hope to make available Real Soon (tm)
patches for the login apps to make it work this way.)
When opening a session, this module sends an ``Accounting-Start''
message to the RADIUS server, which will log/update/whatever a
database for this user. On close, an ``Accounting-Stop'' message is
sent to the RADIUS server.
This module has no other prerequisites for making it work.  One can
install a RADIUS server just for fun and use it as a centralized
accounting server and forget about wtmp/last/sac etc. .
Examples/suggested usage:
For the services that need this module (
login
for example) put
the following line in
/etc/pam.conf
as the last line for that
service (usually after the pam_unix session line):
login   session  required       pam_radius.so
Replace
login
for each service you are using this module.
This module make extensive use of the API provided in libpwdb
0.54preB or later. By default, it will read the radius server
configuration (hostname and secret) from
/etc/raddb/server
.
This is a default compiled into libpwdb, and curently there is no way to
modify this default without recompiling libpwdb. I am working on
extending the radius support from libpwdb to provide a possibility
to make this runtime-configurable.
Also please note that libpwdb will require also the RADIUS
dictionary to be present (
/etc/raddb/dictionary
).
6.21 The rhosts module
Synopsis
Module Name:
pam_rhosts_auth
Author:
Al Longyear <longyear@netcom.com>
Maintainer:
Management groups provided:
authentication
Cryptographically sensitive:
Security rating:
Clean code base:
Clean.
System dependencies:
Network aware:
Standard
inet_addr()
,
gethostbyname()
function calls.
Overview of module
This module performs the standard network authentication for services,
as used by traditional implementations of
rlogin
and
rsh
etc.
Authentication component
Recognized arguments:
no_hosts_equiv
;
no_rhosts
;
debug
;
no_warn
;
privategroup
;
promiscuous
;
suppress
Description:
The authentication mechanism of this module is based on the contents
of two files;
/etc/hosts.equiv
(or
_PATH_HEQUIV
in
#include <netdb.h>
) and
~/.rhosts
.  Firstly,
hosts listed in the former file are treated as equivalent to the
localhost. Secondly, entries in the user's own copy of the latter file
is used to map "
remote-host remote-user
" pairs to that user's
account on the current host. Access is granted to the user if their
host is present in
/etc/hosts.equiv
and their remote account
is identical to their local one, or if their remote account has an
entry in their personal configuration file.
Some restrictions are applied to the attributes of the user's personal
configuration file: it must be a regular file (as defined by
S_ISREG(x)
of POSIX.1); it must be owned by the
superuser
or
the user; it must not be writable by any user besides its owner.
The module authenticates a remote user (internally specified by the
item
PAM_RUSER
) connecting from the remote host (internally
specified by the item
PAM_RHOST
).  Accordingly, for applications
to be compatible this authentication module they must set these items
prior to calling
pam_authenticate()
.  The module is not capable
of independently probing the network connection for such information.
In the case of
root
-access, the
/etc/host.equiv
file is
ignored
unless the
hosts_equiv_rootok
option
should be used.  Instead, the superuser must have a correctly configured
personal configuration file.
The behavior of the module is modified by flags:
debug
-
log more information to
syslog(3)
. (XXX - actually, this module
does not do any logging currently, please volunteer to fix this!)
no_warn
-
do not give verbal warnings to the user about failures etc. (XXX -
this module currently does not issue any warnings, please volunteer to
fix this!)
no_hosts_equiv
-
ignore the contents of the
/etc/hosts.equiv
file.
hosts_equiv_rootok
-
allow the use of
/etc/hosts.equiv
for superuser.  Without this
option
/etc/hosts.equiv
is not consulted for the superuser account.
This option has no effect if the
no_hosts_equiv
option is used.
no_rhosts
-
ignore the contents of all user's personal configuration file
~/.rhosts
.
privategroup
-
normally, the
~/.rhosts
file must not be writable by anyone
other than its owner.  This option overlooks group write access in the
case that the group owner of this file has the same name as the
user being authenticated.  To lessen the security problems associated
with this option, the module also checks that the user is the only
member of their private group.
promiscuous
-
A host entry of `+' will lead to all hosts being granted
access. Without this option, '+' entries will be ignored. Note, that
the
debug
option will syslog a warning in this latter case.
suppress
-
This will prevent the module from
syslog(3)
ing a warning message
when this authentication fails.  This option is mostly for keeping
logs free of meaningless errors, in particular when the module is used
with the
sufficient
control flag.
Examples/suggested usage:
To allow users to login from trusted remote machines, you should try
adding the following line to your
/etc/pam.conf
file
before
the line that would otherwise prompt the user for a
password:
#
# No passwords required for users from hosts listed above.
#
login  auth  sufficient  pam_rhosts_auth.so no_rhosts
Note, in this example, the system administrator has turned off all
personal
rhosts
configuration files. Also note, that this module
can be used to
only
allow remote login from hosts specified in
the
/etc/host.equiv
file, by replacing
sufficient
in the
above example with
required
.
6.22 The root access module
Synopsis
Module Name:
pam_rootok
Author:
Andrew G. Morgan <morgan@kernel.org>
Maintainer:
Linux-PAM
maintainer
Management groups provided:
authentication
Cryptographically sensitive:
Security rating:
Clean code base:
Clean.
System dependencies:
Network aware:
Overview of module
This module is for use in situations where the superuser wishes
to gain access to a service without having to enter a password.
Authentication component
Recognized arguments:
debug
Description:
This module authenticates the user if their
uid
is
0
.
Applications that are created
setuid
-root generally retain the
uid
of the user but run with the authority of an enhanced
effective-
uid
. It is the real
uid
that is checked.
Examples/suggested usage:
In the case of the
su
application the historical usage is to
permit the superuser to adopt the identity of a lesser user without
the use of a password. To obtain this behavior under
Linux-PAM
the following pair of lines are needed for the corresponding entry in
the configuration file:
#
# su authentication. Root is granted access by default.
#
su      auth     sufficient     pam_rootok.so
su      auth     required       pam_unix_auth.so
Note. For programs that are run by the superuser (or started when the
system boots) this module should not be used to authenticate users.
6.23 The securetty module
Synopsis
Module Name:
pam_securetty
Author[s]:
Elliot Lee <sopwith@cuc.edu>
Maintainer:
Red Hat Software:
currently
Michael K. Johnson <johnsonm@redhat.com>
(if unavailable, contact Elliot Lee <sopwith@cuc.edu>).
Management groups provided:
authentication
Cryptographically sensitive:
Security rating:
Clean code base:
System dependencies:
/etc/securetty
file
Network aware:
Requires the application to fill in the
PAM_TTY
item
correctly in order to act meaningfully.
Overview of module
Provides standard Unix securetty checking.
Authentication component
Recognized arguments:
Description:
Provides standard Unix securetty checking, which causes authentication
for root to fail unless
PAM_TTY
is set to a string listed in
the
/etc/securetty
file.  For all other users, it succeeds.
Examples/suggested usage:
For canonical usage, should be listed as a
required
authentication method before any
sufficient
authentication
methods.
6.24 The login counter (tallying) module
Synopsis
Module Name:
pam_tally
Author[s]:
Tim Baverstock
Tomas Mraz
Maintainer:
Management groups provided:
auth; account
Cryptographically sensitive:
Security rating:
Clean code base:
System dependencies:
A faillog file (default location /var/log/faillog)
Network aware:
Overview of module
This module maintains a count of attempted accesses, can reset count
on success, can deny access if too many attempts fail.
pam_tally comes in two parts:
pam_tally.so
and
pam_tally
. The former is the PAM module and the latter, a
stand-alone program.
pam_tally
is an (optional) application
which can be used to interrogate and manipulate the counter file. It
can display users' counts, set individual counts, or clear all
counts. Setting artificially high counts may be useful for blocking
users without changing their passwords. For example, one might find it
useful to clear all counts every midnight from a cron job.
The counts file is organized as a binary-word array, indexed by
uid. You can probably make sense of it with
od
, if you don't
want to use the supplied appliction.
Note, there are some outstanding issues with this module:
pam_tally
is very dependant on
getpw*()
- a database
of usernames would be much more flexible
Generic options accepted by both components
onerr=
(
succeed
|
fail
):
if something weird happens, such as unable to open the file, how
should the module react?
file=
/where/to/keep/counts
:
specify the file location for the counts.
The default location is
/var/log/faillog
.
audit
:
display the username typed if the user is not found. It may be
useful for scripts, but you should know users often type their
password instead making your system weaker. Activate it only if you
know what you are doing.
Authentication component
Recognized arguments:
onerr=
(
succeed
|
fail
);
file=
/where/to/keep/counts;
deny=
n
;
lock_time=
n
;
unlock_time=
n
;
magic_root
;
even_deny_root_account
;
per_user
;
no_lock_time
no_reset
;
Description:
The authentication component first checks if the user should be denied
access and if not it increments attempted login counter.
Then on call to
pam_setcred
it resets the attempts counter
if the user is NOT magic root.
Examples/suggested usage:
The
deny=
n
option is used to deny access if tally
for this user exceeds
n
.
The
lock_time=
n
option is used to always deny access
for at least
n
seconds after a failed attempt.
The
unlock_time=
n
option is used to allow access after
n
seconds after the last failed attempt with exceeded tally.
If this option is used the user will be locked out only for the specified
amount of time after he exceeded his maximum allowed attempts. Otherwise
the lock is removed only by a manual intervention of the system administrator.
The
magic_root
option is used to indicate that if
the module is invoked by a user with uid=0, then the counter is not
incremented. The sys-admin should use this for user launched services,
like
su
, otherwise this argument should be omitted.
By way of more explanation, when a process already running as root
tries to access some service, the access is
magic
, and
bypasses
pam_tally
's checks: this is handy for
su
ing
from root into an account otherwise blocked. However, for services
like
telnet
or
login
, which always effectively run
from the root account, root (ie everyone) shouldn't be granted this
magic status, and the flag `magic_root' should not be set in this
situation, as noted in the summary above.
Normally, failed attempts to access root will
NOT
cause the
root account to become blocked, to prevent denial-of-service: if your
users aren't given shell accounts and root may only login via
su
or at the machine console (not
telnet
/
rsh
, etc), this is safe. If you really want
root to be blocked for some given service, use
even_deny_root_account
.
If
/var/log/faillog
contains a non-zero
.fail_max/.fail_locktime
field for this user then the
per_user
module argument will
ensure that the module uses this value and not the global
deny/lock_time=
n
parameter.
The
no_lock_time
option is for ensuring that the module does
not use the
.fail_locktime
field in /var/log/faillog for this
user.
The
no_reset
option is used to instruct the module to not reset
the count on successful entry.
Account component
Recognized arguments:
onerr=
(
succeed
|
fail
);
file=
/where/to/keep/counts;
magic_root
;
no_reset
;
Description:
The account component resets attempts counter if the user is NOT
magic root. This phase can be used optionaly for services which don't call
pam_setcred correctly or if the reset should be done regardless
of the failure of the account phase of other modules.
Examples/suggested usage:
The
magic_root
option is used to indicate that if
the module is invoked by a user with uid=0, then the counter is not
decremented/reset. The sys-admin should use this for user launched services,
like
su
, otherwise this argument should be omitted.
The
no_reset
option is used to instruct the module to not reset
the count on successful entry.
6.25 Time control
Synopsis
Module Name:
pam_time
Author:
Andrew G. Morgan
<morgan@kernel.org>
Maintainer:
Author
Management groups provided:
account
Cryptographically sensitive:
Security rating:
Clean code base:
System dependencies:
Requires a configuration file
/etc/security/time.conf
Network aware:
Through the
PAM_TTY
item only
Overview of module
Running a well regulated system occasionally involves restricting
access to certain services in a selective manner.  This module offers
some time control for access to services offered by a system.  Its
actions are determined with a configuration file.  This module can be
configured to deny access to (individual) users based on their name,
the time of day, the day of week, the service they are applying for
and their terminal from which they are making their request.
Account component
Recognized arguments:
Description:
This module bases its actions on the rules listed in its configuration
file:
/etc/security/time.conf
.  Each rule has the following
form,
services
;
ttys
;
users
;
times
In words, each rule occupies a line, terminated with a newline or the
beginning of a comment; a `
#
'.  It contains four fields separated
with semicolons, `
;
'. The fields are as follows:
services
-
a logic list of service names that are affected by this rule.
ttys
-
a logic list of terminal names indicating those terminals covered by
the rule.
user
-
a logic list of usernames to which this rule applies
By a logic list we mean a sequence of tokens (associated with the
appropriate
PAM_
item), containing no more than one wildcard
character; `
*
', and optionally prefixed with a negation operator;
`
!
'. Such a sequence is concatenated with one of two logical
operators:
&
(logical AND) and
|
(logical OR).  Two
examples are:
!morgan&!root
, indicating that this rule
does not apply to the user
morgan
nor to
root
; and
tty*&!ttyp*
, which indicates that the rule applies only
to console terminals but not pseudoterminals.
times
- a logic list of times at which this rule
applies. The format of each element is a day/time-range. The days are
specified by a sequence of two character entries.  For example,
MoTuSa
, indicates Monday Tuesday and Saturday.  Note that
repeated days are
unset
;
MoTuMo
indicates Tuesday, and
MoWk
means all weekdays bar Monday.  The two character
combinations accepted are,
Mo Tu We Th Fr Sa Su Wk Wd Al
The last two of these being
weekend
days and
all 7 days
of
the week respectively.
The time range part is a pair of 24-hour times,
HHMM
, separated
by a hyphen -- indicating the start and finish time for the rule.  If
the finsish time is smaller than the start time, it is assumed to
apply on the following day. For an example,
Mo1800-0300
indicates
that the permitted times are Monday night from 6pm to 3am the
following morning.
Note, that the given time restriction is only applied when the first
three fields are satisfied by a user's application for service.
For convenience and readability a rule can be extended beyond a single
line with a `
\
newline
'.
Examples/suggested usage:
The use of this module is initiated with an entry in the
Linux-PAM
configuration file of the following type:
#
# apply pam_time accounting to login requests
#
login   account  required       pam_time.so
where, here we are applying the module to the
login
application.
Some examples of rules that can be placed in the
/etc/security/time.conf
configuration file are the following:
login ; tty* & !ttyp* ; !root ; !Al0000-2400
all users except for
root
are denied access to console-login at
all times.
games ; * ; !waster ; Wd0000-2400 | Wk1800-0800
games (configured to use Linux-PAM) are only to be accessed out of
working hours.  This rule does not apply to the user
waster
.
Note, currently there is no daemon enforcing the end of a session.
This needs to be remedied.
Poorly formatted rules are logged as errors using
syslog(3)
.
6.26 The Unix Password module
Synopsis
Module Name:
pam_unix
Author:
Maintainer:
Management groups provided:
account; authentication; password; session
Cryptographically sensitive:
Security rating:
Clean code base:
System dependencies:
Network aware:
Overview of module
This is the standard Unix authentication module. It uses standard calls
from the system's libraries to retrieve and set account information as
well as authentication. Usually this is obtained from the /etc/passwd
and the /etc/shadow file as well if shadow is enabled.
Account component
Recognized arguments:
debug
;
audit
Description:
The
debug
argument makes the accounting functions of this module
syslog(3)
more information on its actions. (Remaining arguments
supported by the other functions of this module are silently ignored,
but others are logged as errors through
syslog(3)
). The
audit
argument causes even more logging.
Based on the following
shadow
elements:
expire
;
last_change
;
max_change
;
min_change
;
warn_change
,
this module performs the task of establishing the status of the user's
account and password. In the case of the latter, it may offer advice
to the user on changing their password or, through the
PAM_AUTHTOKEN_REQD
return, delay giving service to the user until
they have established a new password. The entries listed above are
documented in the
GNU Libc
info documents. Should the user's record
not contain one or more of these entries, the corresponding
shadow
check is not performed.
Examples/suggested usage:
In its accounting mode, this module can be inserted as follows:
#
# Ensure users account and password are still active
#
login   account  required       pam_unix.so
Authentication component
Recognized arguments:
debug
;
audit
;
use_first_pass
;
try_first_pass
;
nullok
;
nodelay
;
noreap
Description:
The
debug
argument makes the authentication functions of this
module
syslog(3)
more information on its actions. The
audit
causes even more information to be logged.
The default action of this module is to not permit the user access to
a service if their
official
password is blank. The
nullok
argument overrides this default.
When given the argument
try_first_pass
, before prompting the user
for their password, the module first tries the previous stacked
auth
-module's password in case that satisfies this module as
well. The argument
use_first_pass
forces the module to use such a
recalled password and will never prompt the user - if no password is
available or the password is not appropriate, the user will be denied
access.
The argument,
nodelay
, can be used to discourage the
authentication component from requesting a delay should the
authentication as a whole fail.  The default action is for the module
to request a delay-on-failure of the order of one second.
A helper binary,
unix_chkpwd
, is provided to check the user's
password when it is stored in a read protected database.  This binary
is very simple and will only check the password of the user invoking
it.  It is called transparently on behalf of the user by the
authenticating component of this module.  In this way it is possible
for applications like
xlock
to work without being
setuid-root. The module, by default, will temporarily turn off
SIGCHLD
handling for the duration of execution of the helper
binary. This is generally the right thing to do, as many applications
are not prepared to handle this signal from a child they didn't know
was
fork()
d. The
noreap
module argument can be used to
suppress this temporary shielding and may be needed for use with
certain applications.
Remaining arguments, supported by the other functions of this module,
are silently ignored. Other arguments are logged as errors through
syslog(3)
.
Examples/suggested usage:
The correct functionality of this module is dictated by having an
appropriate
/etc/nsswitch.conf
file, the user
databases specified there dictate the source of the authenticated
user's record.
In its authentication mode, this module can be inserted as follows:
#
# Authenticate the user
#
login   auth  required       pam_unix.so
Password component
Recognized arguments:
debug
;
audit
;
nullok
;
not_set_pass
;
use_authtok
;
try_first_pass
;
use_first_pass
;
md5
;
bigcrypt
;
shadow
;
nis
;
remember
Description:
This part of the
pam_unix
module performs the task of updating
the user's password.
In the case of conventional unix databases (which store the password
encrypted) the
md5
argument is used to do the encryption with the
MD5 function as opposed to the
conventional
crypt(3)
call.
As an alternative to this, the
bigcrypt
argument can be used to
encrypt more than the first 8 characters of a password with DEC's
(Digital Equipment Cooperation) `C2' extension to the standard UNIX
crypt()
algorithm.
The
nullok
argument is used to permit the changing of a password
from
an empty one. Without this argument, empty passwords are
treated as account-locking ones.
The argument
use_first_pass
is used to lock the choice of old and
new passwords to that dictated by the previously stacked
password
module.  The
try_first_pass
argument is used to avoid the user
having to re-enter an old password when
pam_unix
follows a module
that possibly shared the user's old password - if this old password is
not correct the user will be prompted for the correct one.  The
argument
use_authtok
is used to
force
this module to set the
new password to the one provided by the previously stacked
password
module (this is used in an example of the stacking of
the
Cracklib
module documented above).
The
not_set_pass
argument is used to inform the module that it is
not to pay attention to/make available the old or new passwords from/to
other (stacked) password modules.
The
debug
argument makes the password functions of this module
syslog(3)
more information on its actions. Other arguments may be
logged as erroneous to
syslog(3)
. The
audit
argument causes
even more information to be logged.
With the
nis
argument,
pam_unix
will attempt to use NIS RPC
for setting new passwords.
The
remember
argument takes one value. This is the number of most
recent passwords to save for each user. These are saved in
/etc/security/opasswd
in order to force password change history
and keep the user from alternating between the same password too frequently.
Examples/suggested usage:
Standard usage:
#
# Change the users password
#
passwd   password   required   pam_unix.so
An example of the stacking of this module with respect to the
pluggable password checking module,
pam_cracklib
:
#
# Change the users password
#
passwd   password   required   pam_cracklib.so retry=3 minlen=6 difok=3
passwd   password   required   pam_unix.so use_authtok nullok md5
Session component
Recognized arguments:
Description:
No arguments are recognized by this module component. Its action is
simply to log the username and the service-type to
syslog(3)
. Messages are logged at the beginning and end of the
user's session.
Examples/suggested usage:
The use of the session modules is straightforward:
#
# session opening and closing
#
login   session  required       pam_unix.so
6.27 The userdb module
Synopsis
Module Name:
pam_userdb
Author:
Cristian Gafton <gafton@redhat.com>
Maintainer:
Author.
Management groups provided:
authentication
Cryptographically sensitive:
Security rating:
Clean code base:
System dependencies:
Requires Berkeley DB.
Network aware:
Overview of module
Look up users in a .db database and verify their password against
what is contained in that database.
Authentication component
Recognized arguments:
debug
;
icase
;
dump
;
db=XXXX
;
use_authtok
;
unknown_ok
;
Description:
This module is used to verify a username/password pair against values stored in
a Berkeley DB database. The database is indexed by the username, and the data
fields corresponding to the username keys are the passwords, in unencrypted form,
so caution must be exercised over the access rights to the DB database itself..
The module will read the password from the user using the conversation mechanism. If
you are using this module on top of another authentication module (like
pam_pwdb
;)
then you should tell that module to read the entered password from the PAM_AUTHTOK field, which is set by this module.
The action of the module may be modified from this default by one or
more of the following flags in the
/etc/pam.d/<service>
file.
debug
-
Supply more debugging information to
syslog(3)
.
icase
-
Perform the password comparisons case insensitive.
dump
-
dump all the entries in the database to the log (eek,
don't do this by default!)
db=XXXX
-
use the database found on pathname XXXX. Note that Berkeley DB usually adds the
needed filename extension for you, so you should use something like
/etc/foodata
instead of
/etc/foodata.db
.
use_authtok
-
use the authentication token previously obtained by another module that did the
conversation with the application. If this token can not be obtained then
the module will try to converse again. This option can be used for stacking
different modules that need to deal with the authentication tokens.
unknown_ok
-
do not return error when checking for a user that is not in the database.
This can be used to stack more than one pam_userdb module that will check a
username/password pair in more than a database.
Examples/suggested usage:
This is a normal ftp configuration file (usually placed as
/etc/pam.d/ftp
on most systems) that will accept for login users whose username/password pairs are
provided in the
/tmp/dbtest.db
file:
#%PAM-1.0
auth       required     pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
auth       sufficient   pam_userdb.so icase db=/tmp/dbtest
auth       required     pam_pwdb.so shadow nullok try_first_pass
auth       required     pam_shells.so
account    required     pam_pwdb.so
session    required     pam_pwdb.so
6.28 Warning logger module
Synopsis
Module Name:
pam_warn
Author:
Andrew G. Morgan <morgan@kernel.org>
Maintainer:
Author.
Management groups provided:
authentication; password
Cryptographically sensitive:
Security rating:
Clean code base:
System dependencies:
Network aware:
logs information about the remote user and host (if pam-items are known)
Overview of module
This module is principally for logging information about a
proposed authentication or application to update a password.
Authentication+Password component
Recognized arguments:
Description:
Log the service, terminal, user, remote user and remote host to
syslog(3)
. The items are not probed for, but instead obtained
from the standard pam-items.
Examples/suggested usage:
an example is provided in the configuration file section
pam-4.html#configuration
above
.
6.29 The wheel module
Synopsis
Module Name:
pam_wheel
Author:
Cristian Gafton <gafton@redhat.com>
Maintainer:
Author.
Management groups provided:
authentication; account
Cryptographically sensitive:
Security rating:
Clean code base:
System dependencies:
Network aware:
Overview of module
Only permit root access to members of the wheel (
gid=0
) group.
Authentication and Account components
Recognized arguments:
debug
;
use_uid
;
trust
;
deny
;
group=XXXX
Description:
This module is used to enforce the so-called
wheel
group.  By
default, it permits root access to the system if the applicant user is
a member of the
wheel
group (first, the module checks for the
existence of a '
wheel
' group. Otherwise the module defines the
group with group-id
0
to be the
wheel
group).
The module can be used as either an '
auth
' or an '
account
'
module.
The action of the module may be modified from this default by one or
more of the following flags in the
/etc/pam.conf
file.
debug
-
Supply more debugging information to
syslog(3)
.
use_uid
-
This option modifies the behavior of the module by using the current
uid
of the process and not the
getlogin(3)
name of the user.
This option is useful for being able to jump from one account to
another, for example with 'su'.
trust
-
This option instructs the module to return
PAM_SUCCESS
should it
find the user applying for root privilege is a member of the wheel
group. The default action is to return
PAM_IGNORE
in this
situation. By using the
trust
option it is possible to arrange
for
wheel
-group members to become root without typing a
password.
USE WITH CARE
.
deny
-
This is used to reverse the logic of the module's behavior.  If the
user is trying to get
uid=0
access and is a member of the wheel
group, deny access (for the wheel group, this is perhaps nonsense!):
it is intended for use in conjunction with the
group=
argument...
Conversely, if the user is not in the group, return
PAM_IGNORE
(unless
trust
was also specified, in which case we return
PAM_SUCCESS
).
group=XXXX
-
Instead of checking the
gid=0
group, use the user's
XXXX
group membership for the authentication. Here,
XXXX
is the name
of the group and
not
its numeric identifier.
Examples/suggested usage:
To restrict access to superuser status to the members of the
wheel
group, use the following entries in your configuration
file:
#
# root gains access by default (rootok), only wheel members can
# become root (wheel) but Unix authenticate non-root applicants.
#
su      auth     sufficient     pam_rootok.so
su      auth     required       pam_wheel.so
su      auth     required       pam_unix.so
pam-7.html
Next
pam-5.html
Previous
pam.html#toc6
Contents
