If Apache does find the wrapper, it reports it in the server error
log like this:
[Thu Dec 30 01:24:43 1999] [notice] suEXEC mechanism enabled
Up until Apache version 1.3.11, there was no way to be sure where a
compiled Apache server is going to be looking for the
binary. As of 1.3.11, though, it’s part of the ‘compiled modules’ report
displayed by the ‘
% /usr/local/web/apache/bin/httpd -l Compiled-in modules: http_core.c mod_so.c suexec: enabled; valid wrapper /usr/local/web/apache/bin/suexec
enabled; valid' notation means that the wrapper is
actually present in the indicated location, and the permissions are correct. If
the wrapper isn't there, or the permissions are wrong, the output will indicate
Because most of
suexec's control parameters are defined at
compile-time, the only way to change them is to recompile. And since the
wrapper works very closely with the Apache Web server--to the point of both
applications having to share some compile-time definitions--the way to
suexecis to recompile all of Apache. If you've never
done this before, you can see a brief treatment of the process in the
"Building Apache at Lightspeed" section of this article.
There are several
suexec-specific options to the
apache-1.3/configurescript. Here they are:
- The presence of this option on the command line simply informs the
configurescript that you want the wrapper to be built as well.
Without this option,
suexecwill not be built, even if there are
suexecoptions on the command line.
- This mustbe the username under which your Apache server runs; that
is, the one specified on the
Userdirective outside all
by any other user, it assumes it’s some sort of probing attempt and fails to
execute (after logging the user mismatch).
The default username is
- This specifies the ancestor directory under which all CGI scripts need to
reside in order to be acceptable to
suexec. (This restriction
doesn’t apply to scripts activated by
~username-style URLs.) If
you have multiple virtual hosts using
suexec, their DocumentRoots
(if you’re using
.cgifiles) must all be located somewhere in the
hierarchy under this directory, or else the wrapper will assume someone is
trying to execute something unexpected and will log it as an intrusion attempt.
ScriptAliased directories must be under this hierarchy as well,
and this is in fact more important for them since they commonly aren’t
under the DocumentRoot.