(root)/suexec-custom.patch - Rev 3
Rev 2 |
Blame |
Compare with Previous |
Last modification |
View Log
| RSS feed
--- suexec.8.orig 2011-07-12 10:38:14.000000000 +0200
+++ suexec.8 2011-07-12 11:33:24.000000000 +0200
@@ -43,8 +43,12 @@ If suexec is called by a user with name
suexec will abort. By creating several config files, you can allow several
different apache run users to use suexec.
.PP
-The first line in the file is used as the document root (/var/www in the
-standard suexec) and the second line in the file is used as the suffix that is
+The first line in the file is used as the start (the root) of the chroot
+jail environment. If you don't want to use a chroot jail you must put
+"nochroot" on the first line: the chroot command will be ignored.
+.PP
+The second line in the file is used as the document root (/var/www in the
+standard suexec) and the third line in the file is used as the suffix that is
appended to users' home directories (public_html in standard suexec).
.PP
If any of the lines is commented out (with #), suexec will refuse the
--- suexec-custom.config.orig 2013-03-12 17:22:25.835049038 +0100
+++ suexec-custom.config 2013-03-12 17:29:10.583054086 +0100
@@ -1,7 +1,12 @@
+nochroot
/var/www
public_html/cgi-bin
-# The first two lines contain the suexec document root and the suexec userdir
-# suffix. If one of them is disabled by prepending a # character, suexec will
-# refuse the corresponding type of request.
+# The first line contains the path of the chroot jail environment. Use the
+# special word nochroot if you don't want to use a chroot jail.
+# The second line contains the suexec document root and the third line the
+# suexec userdir suffix. If one of them is disabled by prepending a #
+# character, suexec will refuse the corresponding type of request.
+# You cannot comment out the first line: use a path for the chroot jail or
+# the nochroot parameter.
# This config file is only used by the apache2-suexec-custom package. See the
# suexec man page included in the package for more details.
--- suexec-custom.c.orig 2011-07-12 10:38:14.000000000 +0200
+++ suexec-custom.c 2011-07-12 11:32:59.000000000 +0200
@@ -288,6 +288,7 @@ int main(int argc, char *argv[])
struct stat dir_info; /* directory info holder */
struct stat prg_info; /* program info holder */
int cwdh; /* handle to cwd */
+ char *suexec_chroot = NULL;
char *suexec_docroot = NULL;
char *suexec_userdir_suffix = NULL;
char *filename = NULL;
@@ -382,9 +383,10 @@ int main(int argc, char *argv[])
* If not, error out.
*/
filename = malloc(AP_MAXPATH+1);
+ suexec_chroot = malloc(AP_MAXPATH+1);
suexec_docroot = malloc(AP_MAXPATH+1);
suexec_userdir_suffix = malloc(AP_MAXPATH+1);
- if (!filename || !suexec_docroot || !suexec_userdir_suffix) {
+ if (!filename || !suexec_chroot || !suexec_docroot || !suexec_userdir_suffix) {
log_err("malloc failed\n");
exit(120);
}
@@ -399,6 +401,11 @@ int main(int argc, char *argv[])
exit(123);
}
+ if (!read_line(suexec_chroot, configfile)) {
+ log_err("Could not read chroot from %s\n", filename);
+ exit(300);
+ }
+
if (!read_line(suexec_docroot, configfile)) {
log_err("Could not read docroot from %s\n", filename);
exit(124);
@@ -527,6 +534,15 @@ int main(int argc, char *argv[])
exit(108);
}
+ getcwd(cwd, AP_MAXPATH);
+ if (strcmp(suexec_chroot, "nochroot")) {
+ if (chroot(suexec_chroot)!=0) {
+ log_err("chroot on %s failed!\n", suexec_chroot);
+ exit(301);
+ };
+ };
+ chdir(cwd);
+
/*
* Change UID/GID here so that the following tests work over NFS.
*