.\" Title: pam_listfile
.\" Author:
.\" Generator: DocBook XSL Stylesheets v1.70.1
.\" Date: 06/22/2006
.\" Manual: Linux\-PAM Manual
.\" Source: Linux\-PAM Manual
.\"
.TH "PAM_LISTFILE" "8" "06/22/2006" "Linux\-PAM Manual" "Linux\-PAM Manual"
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.SH "NAME"
pam_listfile \- deny or allow services based on an arbitrary file
.SH "SYNOPSIS"
.HP 16
\fBpam_listfile.so\fR item=[tty|user|rhost|ruser|group|shell] sense=[allow|deny] file=\fI/path/filename\fR onerr=[succeed|fail] [apply=[\fIuser\fR|\fI@group\fR]]
.SH "DESCRIPTION"
.PP
pam_listfile is a PAM module which provides a way to deny or allow services based on an arbitrary file.
.PP
The module gets the
\fBitem\fR
of the type specified \-\-
\fIuser\fR
specifies the username,
\fIPAM_USER\fR; tty specifies the name of the terminal over which the request has been made,
\fIPAM_TTY\fR; rhost specifies the name of the remote host (if any) from which the request was made,
\fIPAM_RHOST\fR; and ruser specifies the name of the remote user (if available) who made the request,
\fIPAM_RUSER\fR
\-\- and looks for an instance of that item in the
\fBfile=\fR\fB\fIfilename\fR\fR.
\fIfilename\fR
contains one line per item listed. If the item is found, then if
\fBsense=\fR\fB\fIallow\fR\fR,
\fIPAM_SUCCESS\fR
is returned, causing the authorization request to succeed; else if
\fBsense=\fR\fB\fIdeny\fR\fR,
\fIPAM_AUTH_ERR\fR
is returned, causing the authorization request to fail.
.PP
If an error is encountered (for instance, if
\fIfilename\fR
does not exist, or a poorly\-constructed argument is encountered), then if
\fIonerr=succeed\fR,
\fIPAM_SUCCESS\fR
is returned, otherwise if
\fIonerr=fail\fR,
\fIPAM_AUTH_ERR\fR
or
\fIPAM_SERVICE_ERR\fR
(as appropriate) will be returned.
.PP
An additional argument,
\fBapply=\fR, can be used to restrict the application of the above to a specific user (\fBapply=\fR\fB\fIusername\fR\fR) or a given group (\fBapply=\fR\fB\fI@groupname\fR\fR). This added restriction is only meaningful when used with the
\fItty\fR,
\fIrhost\fR
and
\fIshell\fR
items.
.PP
Besides this last one, all arguments should be specified; do not count on any default behavior.
.PP
No credentials are awarded by this module.
.SH "OPTIONS"
.PP
.TP 3n
\fBitem=[tty|user|rhost|ruser|group|shell]\fR
What is listed in the file and should be checked for.
.TP 3n
\fBsense=[allow|deny]\fR
Action to take if found in file, if the item is NOT found in the file, then the opposite action is requested.
.TP 3n
\fBfile=\fR\fB\fI/path/filename\fR\fR
File containing one item per line. The file needs to be a plain file and not world writeable.
.TP 3n
\fBonerr=[succeed|fail]\fR
What to do if something weird happens like being unable to open the file.
.TP 3n
\fBapply=[\fR\fB\fIuser\fR\fR\fB|\fR\fB\fI@group\fR\fR\fB]\fR
Restrict the user class for which the restriction apply. Note that with
\fBitem=[user|ruser|group]\fR
this oes not make sense, but for
\fBitem=[tty|rhost|shell]\fR
it have a meaning.
.SH "MODULE SERVICES PROVIDED"
.PP
The services
\fBauth\fR,
\fBaccount\fR,
\fBpassword\fR
and
\fBsession\fR
are supported.
.SH "RETURN VALUES"
.PP
.TP 3n
PAM_AUTH_ERR
Authentication failure.
.TP 3n
PAM_BUF_ERR
Memory buffer error.
.TP 3n
PAM_IGNORE
The rule does not apply to the
\fBapply\fR
option.
.TP 3n
PAM_SERVICE_ERR
Error in service module.
.TP 3n
PAM_SUCCESS
Success.
.SH "EXAMPLES"
.PP
Classic 'ftpusers' authentication can be implemented with this entry in
\fI/etc/pam.d/ftpd\fR:
.sp
.RS 3n
.nf
#
# deny ftp\-access to users listed in the /etc/ftpusers file
#
auth required pam_listfile.so \\
onerr=succeed item=user sense=deny file=/etc/ftpusers
.fi
.RE
.sp
Note, users listed in
\fI/etc/ftpusers\fR
file are (counterintuitively)
\fInot\fR
allowed access to the ftp service.
.PP
To allow login access only for certain users, you can use a
\fI/etc/pam.d/login\fR
entry like this:
.sp
.RS 3n
.nf
#
# permit login to users listed in /etc/loginusers
#
auth required pam_listfile.so \\
onerr=fail item=user sense=allow file=/etc/loginusers
.fi
.RE
.sp
For this example to work, all users who are allowed to use the login service should be listed in the file
\fI/etc/loginusers\fR. 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
\fI/etc/loginusers\fR, or by listing a user who is able to
\fIsu\fR
to the root account.
.SH "SEE ALSO"
.PP
\fBpam.conf\fR(5),
\fBpam.d\fR(8),
\fBpam\fR(8)
.SH "AUTHOR"
.PP
pam_listfile was written by Michael K. Johnson and Elliot Lee .