Index: pam.deb/modules/pam_limits/pam_limits.c
===================================================================
--- pam.deb.orig/modules/pam_limits/pam_limits.c
+++ pam.deb/modules/pam_limits/pam_limits.c
@@ -79,6 +79,7 @@
     int flag_numsyslogins; /* whether to limit logins only for a
 			      specific user or to count all logins */
     int priority;	 /* the priority to run user process with */
+    char chroot_dir[8092]; /* directory to chroot into */
     struct user_limits_struct limits[RLIM_NLIMITS];
     const char *conf_file;
     int utmp_after_pam_call;
@@ -89,6 +90,7 @@
 #define LIMIT_NUMSYSLOGINS RLIM_NLIMITS+2
 
 #define LIMIT_PRI RLIM_NLIMITS+3
+#define LIMIT_CHROOT RLIM_NLIMITS+4
 
 #define LIMIT_SOFT  1
 #define LIMIT_HARD  2
@@ -250,6 +252,8 @@
     pl->login_limit = -2;
     pl->login_limit_def = LIMITS_DEF_NONE;
 
+    pl->chroot_dir[0] = '\0';
+    
     return retval;
 }
 
@@ -320,6 +324,8 @@
 	pl->flag_numsyslogins = 1;
     } else if (strcmp(lim_item, "priority") == 0) {
 	limit_item = LIMIT_PRI;
+    } else if (strcmp(lim_item, "chroot") == 0) {
+	limit_item = LIMIT_CHROOT;
     } else {
         pam_syslog(pamh, LOG_DEBUG, "unknown limit item '%s'", lim_item);
         return;
@@ -357,9 +363,9 @@
 			pam_syslog(pamh, LOG_DEBUG,
 				   "wrong limit value '%s' for limit type '%s'",
 				   lim_value, lim_type);
-            return;
+			return;
 		}
-	} else {
+	} else if (limit_item != LIMIT_CHROOT) {
 #ifdef __USE_FILE_OFFSET64
 		rlimit_value = strtoull (lim_value, &endptr, 10);
 #else
@@ -420,7 +426,9 @@
          break;
     }
 
-    if ( (limit_item != LIMIT_LOGIN)
+    if (limit_item == LIMIT_CHROOT)
+	strncpy(pl->chroot_dir, value_orig, sizeof(pl->chroot_dir));
+    else if ( (limit_item != LIMIT_LOGIN)
 	 && (limit_item != LIMIT_NUMSYSLOGINS)
 	 && (limit_item != LIMIT_PRI) ) {
         if (limit_type & LIMIT_SOFT) {
@@ -615,6 +623,13 @@
         retval |= LOGIN_ERR;
     }
 
+    if (!retval && pl->chroot_dir[0]) {
+	i = chdir(pl->chroot_dir);
+	if (i == 0)
+	    i = chroot(pl->chroot_dir);
+	if (i != 0)
+	    retval = LIMIT_ERR;
+    }
     return retval;
 }
 
Index: pam.deb/modules/pam_limits/limits.conf.5.xml
===================================================================
--- pam.deb.orig/modules/pam_limits/limits.conf.5.xml
+++ pam.deb/modules/pam_limits/limits.conf.5.xml
@@ -224,6 +224,12 @@
                   (Linux 2.6.12 and higher)</para>
               </listitem>
             </varlistentry>
+            <varlistentry>
+              <term><option>chroot</option></term>
+              <listitem>
+                <para>the directory to chroot the user to</para>
+              </listitem>
+            </varlistentry>
           </variablelist>
         </listitem>
       </varlistentry>
Index: pam.deb/modules/pam_limits/limits.conf.5
===================================================================
--- pam.deb.orig/modules/pam_limits/limits.conf.5
+++ pam.deb/modules/pam_limits/limits.conf.5
@@ -1,17 +1,17 @@
 .\"     Title: limits.conf
 .\"    Author: 
-.\" Generator: DocBook XSL Stylesheets v1.73.1 <http://docbook.sf.net/>
-.\"      Date: 04/16/2008
+.\" Generator: DocBook XSL Stylesheets v1.73.2 <http://docbook.sf.net/>
+.\"      Date: 07/27/2008
 .\"    Manual: Linux-PAM Manual
 .\"    Source: Linux-PAM Manual
 .\"
-.TH "LIMITS\.CONF" "5" "04/16/2008" "Linux-PAM Manual" "Linux\-PAM Manual"
+.TH "LIMITS\&.CONF" "5" "07/27/2008" "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
+limits.conf \- configuration file for the pam_limits module
 .SH "DESCRIPTION"
 .PP
 The syntax of the lines is as follows:
@@ -34,19 +34,19 @@
 .RS 4
 \h'-04'\(bu\h'+03'a groupname, with
 \fB@group\fR
-syntax\. This should not be confused with netgroups\.
+syntax\&. This should not be confused with netgroups\&.
 .RE
 .sp
 .RS 4
 \h'-04'\(bu\h'+03'the wildcard
-\fB*\fR, for default entry\.
+\fB*\fR, for default entry\&.
 .RE
 .sp
 .RS 4
 \h'-04'\(bu\h'+03'the wildcard
 \fB%\fR, for maxlogins limit only, can also be used with
 \fI%group\fR
-syntax\.
+syntax\&.
 .RE
 .RE
 .PP
@@ -57,18 +57,18 @@
 .RS 4
 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\.
+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\&.
 .RE
 .PP
 \fBsoft\fR
 .RS 4
 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\-existing
+resource limits\&. These limits are ones that the user can move up or down within the permitted range by any pre\-existing
 \fBhard\fR
-limits\. The values specified with this token can be thought of as
+limits\&. The values specified with this token can be thought of as
 \fIdefault\fR
-values, for normal system usage\.
+values, for normal system usage\&.
 .RE
 .PP
 \fB\-\fR
@@ -77,9 +77,9 @@
 \fBsoft\fR
 and
 \fBhard\fR
-resource limits together\.
+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\. \.
+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
 .RE
 .PP
@@ -154,47 +154,52 @@
 .PP
 \fBlocks\fR
 .RS 4
-maximum locked files (Linux 2\.4 and higher)
+maximum locked files (Linux 2\&.4 and higher)
 .RE
 .PP
 \fBsigpending\fR
 .RS 4
-maximum number of pending signals (Linux 2\.6 and higher)
+maximum number of pending signals (Linux 2\&.6 and higher)
 .RE
 .PP
 \fBmsqqueue\fR
 .RS 4
-maximum memory used by POSIX message queues (bytes) (Linux 2\.6 and higher)
+maximum memory used by POSIX message queues (bytes) (Linux 2\&.6 and higher)
 .RE
 .PP
 \fBnice\fR
 .RS 4
-maximum nice priority allowed to raise to (Linux 2\.6\.12 and higher) values: [\-20,19]
+maximum nice priority allowed to raise to (Linux 2\&.6\&.12 and higher) values: [\-20,19]
 .RE
 .PP
 \fBrtprio\fR
 .RS 4
-maximum realtime priority allowed for non\-privileged processes (Linux 2\.6\.12 and higher)
+maximum realtime priority allowed for non\-privileged processes (Linux 2\&.6\&.12 and higher)
+.RE
+.PP
+\fBchroot\fR
+.RS 4
+the directory to chroot the user to
 .RE
 .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\.
+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\.
+\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\.
+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)\.
+\fBsyslog\fR(3)\&.
 .SH "EXAMPLES"
 .PP
 These are some example lines which might be specified in
-\fI/etc/security/limits\.conf\fR\.
+\fI/etc/security/limits\&.conf\fR\&.
 .sp
 .RS 4
 .nf
@@ -216,4 +221,4 @@
 \fBpam\fR(8)
 .SH "AUTHOR"
 .PP
-pam_limits was initially written by Cristian Gafton <gafton@redhat\.com>
+pam_limits was initially written by Cristian Gafton <gafton@redhat\&.com>
Index: pam.deb/modules/pam_limits/limits.conf
===================================================================
--- pam.deb.orig/modules/pam_limits/limits.conf
+++ pam.deb/modules/pam_limits/limits.conf
@@ -35,6 +35,7 @@
 #        - msgqueue - max memory used by POSIX message queues (bytes)
 #        - nice - max nice priority allowed to raise to values: [-20, 19]
 #        - rtprio - max realtime priority
+#        - chroot - change root to directory (Debian-specific)
 #
 #<domain>      <type>  <item>         <value>
 #
@@ -45,6 +46,7 @@
 #@faculty        soft    nproc           20
 #@faculty        hard    nproc           50
 #ftp             hard    nproc           0
+#ftp             -       chroot          /ftp
 #@student        -       maxlogins       4
 
 # End of file
