]> granicus.if.org Git - linux-pam/commitdiff
Relevant BUGIDs:
authorThorsten Kukuk <kukuk@thkukuk.de>
Sat, 17 Jun 2006 10:29:10 +0000 (10:29 +0000)
committerThorsten Kukuk <kukuk@thkukuk.de>
Sat, 17 Jun 2006 10:29:10 +0000 (10:29 +0000)
Purpose of commit: new feature

Commit summary:
---------------

2006-06-17  Thorsten Kukuk  <kukuk@thkukuk.de>

        * modules/pam_limits/Makefile.am: Include Make.xml.rules.
        * modules/pam_limits/limits.conf.5: New, generated from xml file.
        * modules/pam_limits/limits.conf.5.xml: New.
        * modules/pam_limits/pam_limits.8: New, generated from xml file.
        * modules/pam_limits/pam_limits.8.xml: New.
        * modules/pam_limits/README.xml: New.
        * modules/pam_limits/README: Regenerated from README.xml.

ChangeLog
NEWS
modules/pam_limits/Makefile.am
modules/pam_limits/README
modules/pam_limits/README.xml [new file with mode: 0644]
modules/pam_limits/limits.conf.5 [new file with mode: 0644]
modules/pam_limits/limits.conf.5.xml [new file with mode: 0644]
modules/pam_limits/pam_limits.8 [new file with mode: 0644]
modules/pam_limits/pam_limits.8.xml [new file with mode: 0644]
modules/pam_limits/pam_limits.c

index b6da386cfca8f9748bf0029efac18b229ede59e4..0b7fb981802af451073a2d41495acaf52b6d7ac2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2006-06-17  Thorsten Kukuk  <kukuk@thkukuk.de>
+
+       * modules/pam_limits/Makefile.am: Include Make.xml.rules.
+       * modules/pam_limits/limits.conf.5: New, generated from xml file.
+       * modules/pam_limits/limits.conf.5.xml: New.
+       * modules/pam_limits/pam_limits.8: New, generated from xml file.
+       * modules/pam_limits/pam_limits.8.xml: New.
+       * modules/pam_limits/README.xml: New.
+       * modules/pam_limits/README: Regenerated from README.xml.
+
 2006-06-16  Thorsten Kukuk  <kukuk@thkukuk.de>
 
        * modules/pam_unix/pam_unix_passwd.c (save_old_password): UIDs
diff --git a/NEWS b/NEWS
index 9bb648cb04b7c768a5c1200b7b3c0a218c1b38be..e84e80626a6136edf5a422b4d9e8f4e3d360662c 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -3,11 +3,12 @@ Linux-PAM NEWS -- history of user-visible changes.
 
 * pam_tally: Fix support for large UIDs
 * Fixed all problems found by Coverity
+* Add support for Intel C Compiler
 * Add manual page for pam_mkhomedir, pam_umask, pam_filter,
   pam_issue, pam_ftp, pam_group, pam_lastlog, pam_listfile,
   pam_localuser, pam_mail, pam_motd, pam_nologin, pam_permit,
   pam_rootok, pam_securetty, pam_shells, pam_userdb, pam_warn,
-  pam_time
+  pam_time, pam_limits
 * The libpam memory debug code was removed
 
 Release 0.99.4.0
index 8f7efaa4c5b88142419997c75e847045a17525fa..be2852a98a402c52a02b4a5ee5c931f81cdbc573 100644 (file)
@@ -4,7 +4,10 @@
 
 CLEANFILES = *~
 
-EXTRA_DIST = README limits.conf tst-pam_limits
+EXTRA_DIST = README $(MANS) $(XMLS) limits.conf tst-pam_limits
+
+man_MANS = limits.conf.5 pam_limits.8
+XMLS = README.xml limits.conf.5.xml pam_limits.8.xml
 
 TESTS = tst-pam_limits
 
@@ -22,3 +25,10 @@ endif
 securelib_LTLIBRARIES = pam_limits.la
 
 secureconf_DATA = limits.conf
+
+if ENABLE_REGENERATE_MAN
+noinst_DATA = README
+README: pam_limits.8.xml limits.conf.5.xml
+-include $(top_srcdir)/Make.xml.rules
+endif
+
index a4f07e32e5d3be1eb20a0b2c390a70514b1d0c3b..adab19df7b289c78678b10e4c694de9aeac2bc6e 100644 (file)
+pam_limits — PAM module to limit resources
 
-pam_limits module:
-       Imposing user limits on login.
-
-THEORY OF OPERATION:
-
-First, make a root-only-readable file (/etc/security/limits.conf by
-default or INSTALLED_CONFILE defined Makefile) that describes the
-resource limits you wish to impose. No priority changes and login 
-limit checks are done on UID 0 accounts.
-
-Each line describes a limit for a user in the form:
-
-<domain>       <type>  <item>  <value>
-
-Where:
-<domain> can be:
-       - an user name
-       - a group name, with @group syntax
-       - the wildcard *, for default entry
-
-<type> can have the three values:
-       - "soft" for enforcing the soft limits
-       - "hard" for enforcing hard limits
-        - "-" for enforcing both soft and hard limits
-
-<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 the system
-       - priority - lower the priority by given value (value can be -ve)
-       - locks - max locked files (Linux 2.4 and higher)
-       - sigpending - max number of pending signals (Linux 2.6 and higher)
-       - msgqueue - max memory used by POSIX message queues (bytes) 
-         (Linux 2.6 and higher)
-       - nice - max nice priority allowed to raise to (Linux 2.6.12 and higher)
-       - rtprio - max realtime priority allowed for non-priviledged
-          processes (Linux 2.6.12 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
-specified user/group etc. .
-
-Please remember that individual limits have priority over group
-limits, so if you impose no limits for admin group, but one of the
-members in this group has 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 (they apply for the session only).
-
-In the LIMITS_FILE, the # character introduces a comment - the rest of the
-line is ignored.
-
-The pam_limits module does its best to report configuration problems found
-in LIMITS_FILE via syslog.
-
-EXAMPLE configuration file:
-===========================
-*               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
+━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+
+DESCRIPTION
+
+The pam_limits PAM module sets limits on the system resources that can be
+obtained in a user-session. Users of uid=0 are affected by this limits, too.
+
+By default limits are taken from the /etc/security/limits.conf config file.
+
+OPTIONS
 
+change_uid
 
-ARGUMENTS RECOGNIZED:
-    debug              verbose logging
+    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.
 
-    conf=/path/to/file the limits configuration file if different from the
-                       one set at compile time.
+conf=/path/to/limits.conf
 
-    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.
+    Indicate an alternative limits.conf style configuration file to override
+    the default.
 
-    utmp_early         some broken applications actually allocate a
-                       utmp entry for the user before the user is
-                       admitted to the system. If the service you are
-                       configuring PAM for does this, you can use
-                       this module argument to compensate for this
-                       brokenness.
+debug
 
-MODULE SERVICES PROVIDED:
-       session            _open_session and _close_session (blank)
+    Print debug information.
 
-USAGE:
-       For the services you need resources limits (login for example) put a
-       the following line in /etc/pam.conf as the last line for that
-       service (usually after the pam_unix session line:
+utmp_early
 
-       login   session    required     /lib/security/pam_limits.so
+    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
+
+These are some example lines which might be specified in /etc/security/
+limits.conf.
+
+*               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
 
-       Replace "login" for each service you are using this module, replace
-       "/lib/security" path with your real modules path.
 
-AUTHOR:
-        Cristian Gafton <gafton@redhat.com>
-       Thanks to Elliot Lee <sopwith@redhat.com> for his comments on
-       improving this module, and Jens Sorensen for Linux 2.4 updates.
diff --git a/modules/pam_limits/README.xml b/modules/pam_limits/README.xml
new file mode 100644 (file)
index 0000000..964a5a2
--- /dev/null
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+"http://www.docbook.org/xml/4.3/docbookx.dtd"
+[
+<!--
+<!ENTITY pamlimits SYSTEM "pam_limits.8.xml">
+-->
+<!--
+<!ENTITY limitsconf SYSTEM "limits.conf.5.xml">
+-->
+]>
+
+<article>
+
+  <articleinfo>
+
+    <title>
+      <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+      href="pam_limits.8.xml" xpointer='xpointer(//refnamediv[@id = "pam_limits-name"]/*)'/>
+    </title>
+
+  </articleinfo>
+
+  <section>
+    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+      href="pam_limits.8.xml" xpointer='xpointer(//refsect1[@id = "pam_limits-description"]/*)'/>
+  </section>
+
+  <section>
+    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+      href="pam_limits.8.xml" xpointer='xpointer(//refsect1[@id = "pam_limits-options"]/*)'/>
+  </section>
+
+  <section>
+    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+      href="limits.conf.5.xml" xpointer='xpointer(//refsect1[@id = "limits.conf-examples"]/*)'/>
+  </section>
+
+</article>
diff --git a/modules/pam_limits/limits.conf.5 b/modules/pam_limits/limits.conf.5
new file mode 100644 (file)
index 0000000..a8a5821
--- /dev/null
@@ -0,0 +1,174 @@
+.\"     Title: limits.conf
+.\"    Author: 
+.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
+.\"      Date: 06/17/2006
+.\"    Manual: Linux\-PAM Manual
+.\"    Source: Linux\-PAM Manual
+.\"
+.TH "LIMITS.CONF" "5" "06/17/2006" "Linux\-PAM Manual" "Linux\-PAM Manual"
+.\" disable hyphenation
+.nh
+.\" disable justification (adjust text to left margin only)
+.ad l
+.SH "NAME"
+limits.conf \- configuration file for the pam_limits module
+.SH "DESCRIPTION"
+.PP
+The pam_limits PAM module sets limits on the system resources that can be obtained in a user\-session.
+.PP
+The syntax of the lines is as follows:
+.PP
+
+\fI<domain>\fR
+\fI<type>\fR
+\fI<item>\fR
+\fI<value>\fR
+.PP
+The fields listed above should be filled as follows:
+.TP 3n
+\fB<domain>\fR
+.RS 3n
+.TP 3n
+\(bu
+a username
+.TP 3n
+\(bu
+a groupname, with
+\fB@group\fR
+syntax. This should not be confused with netgroups.
+.TP 3n
+\(bu
+the wildcard
+\fB*\fR, for default entry.
+.TP 3n
+\(bu
+the wildcard
+\fB%\fR, for maxlogins limit only, can also be used with
+\fI%group\fR
+syntax.
+.RE
+.TP 3n
+\fB<type>\fR
+.RS 3n
+.TP 3n
+\fBhard\fR
+for enforcing
+\fBhard\fR
+resource limits. These limits are set by the superuser and enforced by the Kernel. The user cannot raise his requirement of system resources above such values.
+.TP 3n
+\fBsoft\fR
+for enforcing
+\fBsoft\fR
+resource limits. These limits are ones that the user can move up or down within the permitted range by any pre\-exisiting
+\fBhard\fR
+limits. The values specified with this token can be thought of as
+\fIdefault\fR
+values, for normal system usage.
+.TP 3n
+\fB\-\fR
+for enforcing both
+\fBsoft\fR
+and
+\fBhard\fR
+resource limits together.
+.sp
+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 specified user/group etc. .
+.RE
+.TP 3n
+\fB<item>\fR
+.RS 3n
+.TP 3n
+\fBcore\fR
+limits the core file size (KB)
+.TP 3n
+\fBdata\fR
+maximum data size (KB)
+.TP 3n
+\fBfsize\fR
+maximum filesize (KB)
+.TP 3n
+\fBmemlock\fR
+maximum locked\-in\-memory address space (KB)
+.TP 3n
+\fBnofile\fR
+maximum number of open files
+.TP 3n
+\fBrss\fR
+maximum resident set size (KB)
+.TP 3n
+\fBstack\fR
+maximum stack size (KB)
+.TP 3n
+\fBcpu\fR
+maximum CPU time (minutes)
+.TP 3n
+\fBnproc\fR
+maximum number of processes
+.TP 3n
+\fBas\fR
+address space limit
+.TP 3n
+\fBmaxlogins\fR
+maximum number of logins for this user
+.TP 3n
+\fBmaxsyslogins\fR
+maximum number of logins on system
+.TP 3n
+\fBpriority\fR
+the priority to run user process with (negative values boost process priority)
+.TP 3n
+\fBlocks\fR
+maximum locked files (Linux 2.4 and higher)
+.TP 3n
+\fBsigpending\fR
+maximum number of pending signals (Linux 2.6 and higher)
+.TP 3n
+\fBmsqqueue\fR
+maximum memory used by POSIX message queues (bytes) (Linux 2.6 and higher)
+.TP 3n
+\fBnice\fR
+maximum nice priority allowed to raise to (Linux 2.6.12 and higher)
+.TP 3n
+\fBrtprio\fR
+maximum realtime priority allowed for non\-privileged processes (Linux 2.6.12 and higher)
+.RE
+.PP
+In general, individual limits have priority over group limits, so if you impose no limits for
+\fIadmin\fR
+group, but one of the members in this group have a limits line, the user will have its limits set according to this line.
+.PP
+Also, please note that all limit settings are set
+\fIper login\fR. They are not global, nor are they permanent; existing only for the duration of the session.
+.PP
+In the
+\fIlimits\fR
+configuration file, the '\fB#\fR' character introduces a comment \- after which the rest of the line is ignored.
+.PP
+The pam_limits module does its best to report configuration problems found in its configuration file via
+\fBsyslog\fR(3).
+.SH "EXAMPLES"
+.PP
+These are some example lines which might be specified in
+\fI/etc/security/limits.conf\fR.
+.sp
+.RS 3n
+.nf
+*               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
+    
+.fi
+.RE
+.SH "SEE ALSO"
+.PP
+
+\fBpam_limits\fR(8),
+\fBpam.d\fR(5),
+\fBpam\fR(8)
+.SH "AUTHORS"
+.PP
+pam_limits was initially written by Cristian Gafton <gafton@redhat.com>
diff --git a/modules/pam_limits/limits.conf.5.xml b/modules/pam_limits/limits.conf.5.xml
new file mode 100644 (file)
index 0000000..2f255ea
--- /dev/null
@@ -0,0 +1,293 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+        "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
+
+<refentry id="limits.conf">
+
+  <refmeta>
+    <refentrytitle>limits.conf</refentrytitle>
+    <manvolnum>5</manvolnum>
+    <refmiscinfo class="sectdesc">Linux-PAM Manual</refmiscinfo>
+  </refmeta>
+
+  <refnamediv>
+    <refname>limits.conf</refname>
+    <refpurpose>configuration file for the pam_limits module</refpurpose>
+  </refnamediv>
+
+  <refsect1 id='limits.conf-description'>
+    <title>DESCRIPTION</title>
+
+    <para>
+      The pam_limits PAM module sets limits on the system resources that can be
+      obtained in a user-session.
+   </para>
+
+    <para>
+      The syntax of the lines is as follows:
+    </para>
+
+    <para>
+      <replaceable>&lt;domain&gt;</replaceable> <replaceable>&lt;type&gt;</replaceable>
+      <replaceable>&lt;item&gt;</replaceable> <replaceable>&lt;value&gt;</replaceable>
+    </para>
+    <para>
+      The fields listed above should be filled as follows:
+    </para>
+    <variablelist>
+      <varlistentry>
+        <term>
+          <option>&lt;domain&gt;</option>
+        </term>
+        <listitem>
+          <itemizedlist>
+            <listitem>
+              <para>
+                a username
+              </para>
+            </listitem>
+            <listitem>
+              <para>
+                a groupname, with <emphasis remap='B'>@group</emphasis> syntax.
+                This should not be confused with netgroups.
+              </para>
+            </listitem>
+            <listitem>
+              <para>
+                the wildcard <emphasis remap='B'>*</emphasis>, for default entry.
+              </para>
+            </listitem>
+            <listitem>
+              <para>
+                the wildcard <emphasis remap='B'>%</emphasis>, for maxlogins limit only,
+                can also be used with <emphasis remap='b'>%group</emphasis> syntax.
+              </para>
+            </listitem>
+          </itemizedlist>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term>
+          <option>&lt;type&gt;</option>
+        </term>
+        <listitem>
+          <variablelist>
+            <varlistentry>
+              <term><option>hard</option></term>
+              <listitem>
+                <para>
+                  for enforcing <emphasis remap='B'>hard</emphasis> resource limits.
+                  These limits are set by the superuser and enforced by the Kernel.
+                  The user cannot raise his requirement of system resources above such values.
+                </para>
+              </listitem>
+            </varlistentry>
+            <varlistentry>
+              <term><option>soft</option></term>
+              <listitem>
+                <para>
+                  for enforcing <emphasis remap='B'>soft</emphasis> resource limits.
+                  These limits are ones that the user can move up or down within the
+                  permitted range by any pre-exisiting <emphasis remap='B'>hard</emphasis>
+                  limits. The values specified with this token can be thought of as
+                  <emphasis>default</emphasis> values, for normal system usage.
+                </para>
+              </listitem>
+            </varlistentry>
+            <varlistentry>
+              <term><option>-</option></term>
+              <listitem>
+                <para>
+                  for enforcing both <emphasis remap='B'>soft</emphasis> and
+                  <emphasis remap='B'>hard</emphasis> resource limits together.
+                </para>
+                <para>
+                  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 specified user/group etc. .
+                </para>
+              </listitem>
+            </varlistentry>
+          </variablelist>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term>
+          <option>&lt;item&gt;</option>
+        </term>
+        <listitem>
+          <variablelist>
+            <varlistentry>
+              <term><option>core</option></term>
+              <listitem>
+                <para>limits the core file size (KB)</para>
+              </listitem>
+            </varlistentry>
+            <varlistentry>
+              <term><option>data</option></term>
+              <listitem>
+                <para>maximum data size (KB)</para>
+              </listitem>
+            </varlistentry>
+            <varlistentry>
+              <term><option>fsize</option></term>
+              <listitem>
+                <para>maximum filesize (KB)</para>
+              </listitem>
+            </varlistentry>
+            <varlistentry>
+              <term><option>memlock</option></term>
+              <listitem>
+                <para>maximum locked-in-memory address space (KB)</para>
+              </listitem>
+            </varlistentry>
+            <varlistentry>
+              <term><option>nofile</option></term>
+              <listitem>
+                <para>maximum number of open files</para>
+              </listitem>
+            </varlistentry>
+            <varlistentry>
+              <term><option>rss</option></term>
+              <listitem>
+                <para>maximum resident set size (KB)</para>
+              </listitem>
+            </varlistentry>
+            <varlistentry>
+              <term><option>stack</option></term>
+              <listitem>
+                <para>maximum stack size (KB)</para>
+              </listitem>
+            </varlistentry>
+            <varlistentry>
+              <term><option>cpu</option></term>
+              <listitem>
+                <para>maximum CPU time (minutes)</para>
+              </listitem>
+            </varlistentry>
+            <varlistentry>
+              <term><option>nproc</option></term>
+              <listitem>
+                <para>maximum number of processes</para>
+              </listitem>
+            </varlistentry>
+            <varlistentry>
+              <term><option>as</option></term>
+              <listitem>
+                <para>address space limit</para>
+              </listitem>
+            </varlistentry>
+            <varlistentry>
+              <term><option>maxlogins</option></term>
+              <listitem>
+                <para>maximum number of logins for this user</para>
+              </listitem>
+            </varlistentry>
+            <varlistentry>
+              <term><option>maxsyslogins</option></term>
+              <listitem>
+                <para>maximum number of logins on system</para>
+              </listitem>
+            </varlistentry>
+            <varlistentry>
+              <term><option>priority</option></term>
+              <listitem>
+                <para>the priority to run user process with (negative
+                  values boost process priority)</para>
+              </listitem>
+            </varlistentry>
+            <varlistentry>
+              <term><option>locks</option></term>
+              <listitem>
+                <para>maximum locked files (Linux 2.4 and higher)</para>
+              </listitem>
+            </varlistentry>
+            <varlistentry>
+              <term><option>sigpending</option></term>
+              <listitem>
+                <para>maximum number of pending signals (Linux 2.6 and higher)</para>
+              </listitem>
+            </varlistentry>
+            <varlistentry>
+              <term><option>msqqueue</option></term>
+              <listitem>
+                <para>maximum memory used by POSIX message queues (bytes)
+                  (Linux 2.6 and higher)</para>
+              </listitem>
+            </varlistentry>
+            <varlistentry>
+              <term><option>nice</option></term>
+              <listitem>
+                <para>maximum nice priority allowed to raise to (Linux 2.6.12 and higher)</para>
+              </listitem>
+            </varlistentry>
+            <varlistentry>
+              <term><option>rtprio</option></term>
+              <listitem>
+                <para>maximum realtime priority allowed for non-privileged processes
+                  (Linux 2.6.12 and higher)</para>
+              </listitem>
+            </varlistentry>
+          </variablelist>
+        </listitem>
+      </varlistentry>
+
+    </variablelist>
+    <para>
+      In general, individual limits have priority over group limits, so if
+      you impose no limits for <emphasis>admin</emphasis> group, but one of
+      the members in this group have a limits line, the user will have its
+      limits set according to this line.
+    </para>
+    <para>
+      Also, please note that all limit settings are set
+      <emphasis>per login</emphasis>. They are not global, nor are they
+      permanent; existing only for the duration of the session.
+    </para>
+    <para>
+      In the <emphasis>limits</emphasis> configuration file, the
+      '<emphasis remap='B'>#</emphasis>' character introduces a comment
+      - after which the rest of the line is ignored.
+    </para>
+    <para>
+      The pam_limits module does its best to report configuration problems
+      found in its configuration file via <citerefentry>
+      <refentrytitle>syslog</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
+    </para>
+  </refsect1>
+
+  <refsect1 id="limits.conf-examples">
+    <title>EXAMPLES</title>
+    <para>
+      These are some example lines which might be specified in
+      <filename>/etc/security/limits.conf</filename>.
+    </para>
+    <programlisting>
+*               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
+    </programlisting>
+  </refsect1>
+
+  <refsect1 id="limits.conf-see_also">
+    <title>SEE ALSO</title>
+    <para>
+      <citerefentry><refentrytitle>pam_limits</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+      <citerefentry><refentrytitle>pam.d</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+      <citerefentry><refentrytitle>pam</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+    </para>
+  </refsect1>
+
+  <refsect1 id="limits.conf-author">
+    <title>AUTHORS</title>
+    <para>
+      pam_limits was initially written by Cristian Gafton &lt;gafton@redhat.com&gt;
+    </para>
+  </refsect1>
+</refentry>
diff --git a/modules/pam_limits/pam_limits.8 b/modules/pam_limits/pam_limits.8
new file mode 100644 (file)
index 0000000..9083e14
--- /dev/null
@@ -0,0 +1,97 @@
+.\"     Title: pam_limits
+.\"    Author: 
+.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
+.\"      Date: 06/17/2006
+.\"    Manual: Linux\-PAM Manual
+.\"    Source: Linux\-PAM Manual
+.\"
+.TH "PAM_LIMITS" "8" "06/17/2006" "Linux\-PAM Manual" "Linux\-PAM Manual"
+.\" disable hyphenation
+.nh
+.\" disable justification (adjust text to left margin only)
+.ad l
+.SH "NAME"
+pam_limits \- PAM module to limit resources
+.SH "SYNOPSIS"
+.HP 14
+\fBpam_limits.so\fR [change_uid] [conf=\fI/path/to/limits.conf\fR] [debug] [utmp_early]
+.SH "DESCRIPTION"
+.PP
+The pam_limits PAM module sets limits on the system resources that can be obtained in a user\-session. Users of
+\fIuid=0\fR
+are affected by this limits, too.
+.PP
+By default limits are taken from the
+\fI/etc/security/limits.conf\fR
+config file.
+.SH "OPTIONS"
+.TP 3n
+\fBchange_uid\fR
+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.
+.TP 3n
+\fBconf=\fR\fB\fI/path/to/limits.conf\fR\fR
+Indicate an alternative limits.conf style configuration file to override the default.
+.TP 3n
+\fBdebug\fR
+Print debug information.
+.TP 3n
+\fButmp_early\fR
+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.
+.SH "MODULE SERVICES PROVIDED"
+.PP
+Only the
+\fBsession\fR
+service is supported.
+.SH "RETURN VALUES"
+.TP 3n
+PAM_ABORT
+Cannot get current limits.
+.TP 3n
+PAM_IGNORE
+No limits found for this user.
+.TP 3n
+PAM_PERM_DENIED
+New limits could not be set.
+.TP 3n
+PAM_SERVICE_ERR
+Cannot read config file.
+.TP 3n
+PAM_SESSEION_ERR
+Error recovering account name.
+.TP 3n
+PAM_SUCCESS
+Limits were changed.
+.TP 3n
+PAM_USER_UNKNOWN
+The user is not known to the system.
+.SH "FILES"
+.TP 3n
+\fI/etc/security/limits.conf\fR
+Default configuration file
+.SH "EXAMPLES"
+.PP
+For the services you need resources limits (login for example) put a the following line in
+\fI/etc/pam.d/login\fR
+as the last line for that service (usually after the pam_unix session line):
+.sp
+.RS 3n
+.nf
+#%PAM\-1.0
+#
+# Resource limits imposed on login sessions via pam_limits
+#
+session  required  pam_limits.so
+    
+.fi
+.RE
+.PP
+Replace "login" for each service you are using this module.
+.SH "SEE ALSO"
+.PP
+
+\fBlimits.conf\fR(5),
+\fBpam.d\fR(8),
+\fBpam\fR(8).
+.SH "AUTHORS"
+.PP
+pam_limits was initially written by Cristian Gafton <gafton@redhat.com>
diff --git a/modules/pam_limits/pam_limits.8.xml b/modules/pam_limits/pam_limits.8.xml
new file mode 100644 (file)
index 0000000..78060a2
--- /dev/null
@@ -0,0 +1,230 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+                   "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
+
+<refentry id='pam_limits'>
+
+  <refmeta>
+    <refentrytitle>pam_limits</refentrytitle>
+    <manvolnum>8</manvolnum>
+    <refmiscinfo class='setdesc'>Linux-PAM Manual</refmiscinfo>
+  </refmeta>
+
+  <refnamediv id='pam_limits-name'>
+    <refname>pam_limits</refname>
+    <refpurpose>
+      PAM module to limit resources
+    </refpurpose>
+  </refnamediv>
+
+<!-- body begins here -->
+
+  <refsynopsisdiv>
+    <cmdsynopsis id="pam_limits-cmdsynopsis">
+      <command>pam_limits.so</command>
+      <arg choice="opt">
+        change_uid
+      </arg>
+      <arg choice="opt">
+        conf=<replaceable>/path/to/limits.conf</replaceable>
+      </arg>
+      <arg choice="opt">
+        debug
+      </arg>
+      <arg choice="opt">
+        utmp_early
+      </arg>
+    </cmdsynopsis>
+  </refsynopsisdiv>
+
+
+  <refsect1 id="pam_limits-description">
+    <title>DESCRIPTION</title>
+    <para>
+      The pam_limits PAM module sets limits on the system resources that can be
+      obtained in a user-session. Users of <emphasis>uid=0</emphasis> are affected
+      by this limits, too.
+    </para>
+    <para>
+      By default limits are taken from the <filename>/etc/security/limits.conf</filename>
+      config file.
+    </para>
+  </refsect1>
+
+  <refsect1 id="pam_limits-options">
+    <title>OPTIONS</title>
+    <variablelist>
+      <varlistentry>
+        <term>
+          <option>change_uid</option>
+        </term>
+        <listitem>
+          <para>
+            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.
+          </para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term>
+          <option>conf=<replaceable>/path/to/limits.conf</replaceable></option>
+        </term>
+        <listitem>
+          <para>
+            Indicate an alternative limits.conf style configuration file to
+            override the default.
+          </para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term>
+          <option>debug</option>
+        </term>
+        <listitem>
+          <para>
+            Print debug information.
+          </para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term>
+          <option>utmp_early</option>
+        </term>
+        <listitem>
+          <para>
+            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.
+          </para>
+        </listitem>
+      </varlistentry>
+    </variablelist>
+  </refsect1>
+
+  <refsect1 id="pam_limits-services">
+    <title>MODULE SERVICES PROVIDED</title>
+    <para>
+      Only the <option>session</option> service is supported.
+    </para>
+  </refsect1>
+
+  <refsect1 id="pam_limits-return_values">
+    <title>RETURN VALUES</title>
+    <variablelist>
+      <varlistentry>
+        <term>PAM_ABORT</term>
+        <listitem>
+           <para>
+             Cannot get current limits.
+          </para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term>PAM_IGNORE</term>
+        <listitem>
+           <para>
+             No limits found for this user.
+          </para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term>PAM_PERM_DENIED</term>
+        <listitem>
+          <para>
+            New limits could not be set.
+          </para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term>PAM_SERVICE_ERR</term>
+        <listitem>
+           <para>
+             Cannot read config file.
+          </para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term>PAM_SESSEION_ERR</term>
+        <listitem>
+           <para>
+             Error recovering account name.
+          </para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term>PAM_SUCCESS</term>
+        <listitem>
+           <para>
+             Limits were changed.
+          </para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term>PAM_USER_UNKNOWN</term>
+        <listitem>
+           <para>
+             The user is not known to the system.
+          </para>
+        </listitem>
+      </varlistentry>
+    </variablelist>
+  </refsect1>
+
+  <refsect1 id="pam_limits-files">
+    <title>FILES</title>
+    <variablelist>
+      <varlistentry>
+        <term><filename>/etc/security/limits.conf</filename></term>
+        <listitem>
+          <para>Default configuration file</para>
+        </listitem>
+      </varlistentry>
+    </variablelist>
+  </refsect1>
+
+  <refsect1 id='pam_limits-examples'>
+    <title>EXAMPLES</title>
+    <para>
+      For the services you need resources limits (login for example) put a
+      the following line in <filename>/etc/pam.d/login</filename> as the last
+      line for that service (usually after the pam_unix session line):
+    </para>
+    <programlisting>
+#%PAM-1.0
+#
+# Resource limits imposed on login sessions via pam_limits
+#
+session  required  pam_limits.so
+    </programlisting>
+    <para>
+      Replace "login" for each service you are using this module.
+    </para>
+  </refsect1>
+
+  <refsect1 id="pam_limits-see_also">
+    <title>SEE ALSO</title>
+    <para>
+      <citerefentry>
+        <refentrytitle>limits.conf</refentrytitle><manvolnum>5</manvolnum>
+      </citerefentry>,
+      <citerefentry>
+        <refentrytitle>pam.d</refentrytitle><manvolnum>8</manvolnum>
+      </citerefentry>,
+      <citerefentry>
+        <refentrytitle>pam</refentrytitle><manvolnum>8</manvolnum>
+      </citerefentry>.
+    </para>
+  </refsect1>
+
+  <refsect1 id="pam_limits-authors">
+    <title>AUTHORS</title>
+    <para>
+      pam_limits was initially written by Cristian Gafton &lt;gafton@redhat.com&gt;
+    </para>
+  </refsect1>
+</refentry>
index db0fcdba56e6e9fe47ca0d296ab80899caed38b6..4cda284e2fec3d57f086f6a4dd75aae9d8b2c8c0 100644 (file)
@@ -631,7 +631,7 @@ pam_sm_open_session (pam_handle_t *pamh, int flags UNUSED,
         if (ctrl & PAM_DEBUG_ARG)
             pam_syslog(pamh, LOG_WARNING,
                       "open_session username '%s' does not exist", user_name);
-        return PAM_SESSION_ERR;
+        return PAM_USER_UNKNOWN;
     }
 
     retval = init_limits(&pl);