This file was written by Andrew G. Morgan <email@example.com>
Andrew G. Morgan <tt><firstname.lastname@example.org></tt>
<tag><bf>Management groups provided:</bf></tag>
<tag><bf>Clean code base:</bf></tag>
Requires a configuration file <tt>/etc/security/time.conf</tt>
Through the <tt/PAM_TTY/ item only
<sect2>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.
This module bases its actions on the rules listed in its configuration
file: <tt>/etc/security/pam.conf</tt>. Each rule has the following
In words, each rule occupies a line, terminated with a newline or the
beginning of a comment; a `<tt/#/'. It contains four fields separated
with semicolons, `<tt/;/'. The fields are as follows:
a logic list of service names that are affected by this rule.
a logic list of terminal names indicating those terminals covered by
a logic list of usernames to which this rule applies
By a logic list we mean a sequence of tokens (associated with the
appropriate <tt/PAM_/ item), containing no more than one wildcard
character; `<tt/*/', and optionally prefixed with a negation operator;
`<tt/!/'. Such a sequence is concatenated with one of two logical
operators: <tt/&/ (logical AND) and <tt/|/ (logical OR). Two
examples are: <tt>!morgan&!root</tt>, indicating that this rule
does not apply to the user <tt>morgan</tt> nor to <tt>root</tt>; and
<tt>tty*&!ttyp*</tt>, which indicates that the rule applies only
to console terminals but not pseudoterminals.
<item><em/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,
<tt/MoTuSa/, indicates Monday Tuesday and Saturday. Note that
repeated days are <em/unset/; <tt/MoTuMo/ indicates Tuesday, and
<tt/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 <em/weekend/ days and <em/all 7 days/ of
the week respectively.
The time range part is a pair of 24-hour times, <em/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, <tt/Mo1800-0300/ indicates
that the permitted times are Monday night from 6pm to 3am the
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 `<tt>\</tt><em/newline/'.
The use of this module is initiated with an entry in the
<bf/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 <em/login/ application.
Some examples of rules that can be placed in the
<tt>/etc/security/time.conf</tt> configuration file are the following:
<tag><tt>login ; tty* & !ttyp* ; !root ; !Al0000-2400</tt></tag>
all users except for <tt/root/ are denied access to console-login at
<tag><tt>games ; * ; !waster ; Wd0000-2400 | Wk1800-0800</tt></tag>
games (configured to use Linux-PAM) are only to be accessed out of
working hours. This rule does not apply to the user <tt/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 <tt/syslog(3)/.
End of sgml insert for this module.