]> git.ipfire.org Git - thirdparty/apache/httpd.git/commitdiff
Removal of the Evil TAB Characters.
authorKen Coar <coar@apache.org>
Tue, 24 Jun 1997 18:39:39 +0000 (18:39 +0000)
committerKen Coar <coar@apache.org>
Tue, 24 Jun 1997 18:39:39 +0000 (18:39 +0000)
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@78364 13f79535-47bb-0310-9956-ffa450edef68

13 files changed:
docs/manual/custom-error.html
docs/manual/custom-error.html.en
docs/manual/misc/fin_wait_2.html
docs/manual/misc/index.html
docs/manual/mod/mod_auth_anon.html
docs/manual/mod/mod_include.html
docs/manual/mod/mod_proxy.html
docs/manual/mod/mod_rewrite.html
docs/manual/mod/mod_status.html
docs/manual/platform/perf.html
docs/manual/process-model.html
docs/manual/suexec.html
docs/manual/suexec.html.en

index 3f04af058b01c40bb217f5761182b71371290479..3165ec044e66b98730007fa8aafc10ee53875371 100644 (file)
@@ -29,9 +29,9 @@
       response, then this response can be replaced with either some
       friendlier text or by a redirection to another URL (local or
       external).
-       
+        
       <P>
-       
+        
 <DT>Old behavior
 
   <DD>NCSA httpd 1.3 would return some boring old error/problem message 
index 3f04af058b01c40bb217f5761182b71371290479..3165ec044e66b98730007fa8aafc10ee53875371 100644 (file)
@@ -29,9 +29,9 @@
       response, then this response can be replaced with either some
       friendlier text or by a redirection to another URL (local or
       external).
-       
+        
       <P>
-       
+        
 <DT>Old behavior
 
   <DD>NCSA httpd 1.3 would return some boring old error/problem message 
index 48e10874af727aa300b7cad29a8fb6c36e5d19d7..2d9e946d174429af4f116995e86df5d593358ce8 100644 (file)
@@ -57,13 +57,13 @@ not send back a FIN and ACK to the server.  This means that the
 connection stays in the FIN_WAIT_2 state until one of the following
 happens:<P>
 <UL>
-       <LI>The client opens a new connection to the same or a different
-           site, which causes it to fully close the older connection on
+        <LI>The client opens a new connection to the same or a different
+            site, which causes it to fully close the older connection on
             that socket.
-       <LI>The user exits the client, which on some (most?) clients
-           causes the OS to fully shutdown the connection.
-       <LI>The FIN_WAIT_2 times out, on servers that have a timeout
-           for this state.
+        <LI>The user exits the client, which on some (most?) clients
+            causes the OS to fully shutdown the connection.
+        <LI>The FIN_WAIT_2 times out, on servers that have a timeout
+            for this state.
 </UL><P>
 If you are lucky, this means that the buggy client will fully close the
 connection and release the resources on your server.  However, there
@@ -77,16 +77,16 @@ TCP implementation.</STRONG>  <P>
 
 The clients on which this problem has been verified to exist:<P>
 <UL>
-       <LI>Mozilla/3.01 (X11; I; FreeBSD 2.1.5-RELEASE i386)
-       <LI>Mozilla/2.02 (X11; I; FreeBSD 2.1.5-RELEASE i386)
-       <LI>Mozilla/3.01Gold (X11; I; SunOS 5.5 sun4m)
-       <LI>MSIE 3.01 on the Macintosh
-       <LI>MSIE 3.01 on Windows 95
+        <LI>Mozilla/3.01 (X11; I; FreeBSD 2.1.5-RELEASE i386)
+        <LI>Mozilla/2.02 (X11; I; FreeBSD 2.1.5-RELEASE i386)
+        <LI>Mozilla/3.01Gold (X11; I; SunOS 5.5 sun4m)
+        <LI>MSIE 3.01 on the Macintosh
+        <LI>MSIE 3.01 on Windows 95
 </UL><P>
 
 This does not appear to be a problem on:
 <UL>
-       <LI>Mozilla/3.01 (Win95; I)
+        <LI>Mozilla/3.01 (Win95; I)
 </UL>
 <P>
 
@@ -155,56 +155,56 @@ violation of the RFC, but it is widely recognized as being necessary.
 The following systems are known to have a timeout:
 <P>
 <UL>
-       <LI><A HREF="http://www.freebsd.org/">FreeBSD</A> versions starting at 2.0 or possibly earlier.
-       <LI><A HREF="http://www.netbsd.org/">NetBSD</A> version 1.2(?)
-       <LI><A HREF="http://www.openbsd.org/">OpenBSD</A> all versions(?)
-       <LI><A HREF="http://www.bsdi.com/">BSD/OS</A> 2.1, with the 
-           <A HREF="ftp://ftp.bsdi.com/bsdi/patches/patches-2.1/K210-027">
-           K210-027</A> patch installed.  
-       <LI><A HREF="http://www.sun.com/">Solaris</A> as of around version
-           2.2.  The timeout can be tuned by using <CODE>ndd</CODE> to 
-           modify <CODE>tcp_fin_wait_2_flush_interval</CODE>, but the
-           default should be appropriate for most servers and improper 
-           tuning can have negative impacts.
-       <LI><A HREF="http://www.sco.com/">SCO TCP/IP Release 1.2.1</A>
-           can be modified to have a timeout by following
-           <A HREF="http://www.sco.com/cgi-bin/waisgate?WAISdocID=2242622956+0+0+0&WAISaction=retrieve"> SCO's instructions</A>.
-       <LI><A HREF="http://www.linux.org/">Linux</A> 2.0.x and
-           earlier(?)
-       <LI><A HREF="http://www.hp.com/">HP-UX</A> 10.x defaults to 
-           terminating connections in the FIN_WAIT_2 state after the 
-           normal keepalive timeouts.  This does not
-           refer to the persistent connection or HTTP keepalive
-           timeouts, but the <CODE>SO_LINGER</CODE> socket option 
-           which is enabled by Apache.  This parameter can be adjusted 
-           by using <CODE>nettune</CODE> to modify parameters such as
-           <CODE>tcp_keepstart</CODE> and <CODE>tcp_keepstop</CODE>.
-           In later revisions, there is an explicit timer for
-           connections in FIN_WAIT_2 that can be modified; contact HP
-           support for details.
-       <LI><A HREF="http://www.sgi.com/">SGI IRIX</A> can be patched to
-           support a timeout.  For IRIX 5.3, 6.2, and 6.3, 
-           use patches 1654, 1703 and 1778 respectively.  If you
-           have trouble locating these patches, please contact your
-           SGI support channel for help.
-       <LI><A HREF="http://www.ncr.com/">NCR's MP RAS Unix</A> 2.xx and
-           3.xx both have FIN_WAIT_2 timeouts.  In 2.xx it is non-tunable
-           at 600 seconds, while in 3.xx it defaults to 600 seconds and
-           is calculated based on the tunable "max keep alive probes" 
-           (default of 8) multiplied by the "keep alive interval" (default
-           75 seconds).
-       <LI><A HREF="http://www.sequent.com">Squent's ptx/TCP/IP for
-           DYNIX/ptx</A> has had a FIN_WAIT_2 timeout since around
-           release 4.1 in mid-1994.
+        <LI><A HREF="http://www.freebsd.org/">FreeBSD</A> versions starting at 2.0 or possibly earlier.
+        <LI><A HREF="http://www.netbsd.org/">NetBSD</A> version 1.2(?)
+        <LI><A HREF="http://www.openbsd.org/">OpenBSD</A> all versions(?)
+        <LI><A HREF="http://www.bsdi.com/">BSD/OS</A> 2.1, with the 
+            <A HREF="ftp://ftp.bsdi.com/bsdi/patches/patches-2.1/K210-027">
+            K210-027</A> patch installed.  
+        <LI><A HREF="http://www.sun.com/">Solaris</A> as of around version
+            2.2.  The timeout can be tuned by using <CODE>ndd</CODE> to 
+            modify <CODE>tcp_fin_wait_2_flush_interval</CODE>, but the
+            default should be appropriate for most servers and improper 
+            tuning can have negative impacts.
+        <LI><A HREF="http://www.sco.com/">SCO TCP/IP Release 1.2.1</A>
+            can be modified to have a timeout by following
+            <A HREF="http://www.sco.com/cgi-bin/waisgate?WAISdocID=2242622956+0+0+0&WAISaction=retrieve"> SCO's instructions</A>.
+        <LI><A HREF="http://www.linux.org/">Linux</A> 2.0.x and
+            earlier(?)
+        <LI><A HREF="http://www.hp.com/">HP-UX</A> 10.x defaults to 
+            terminating connections in the FIN_WAIT_2 state after the 
+            normal keepalive timeouts.  This does not
+            refer to the persistent connection or HTTP keepalive
+            timeouts, but the <CODE>SO_LINGER</CODE> socket option 
+            which is enabled by Apache.  This parameter can be adjusted 
+            by using <CODE>nettune</CODE> to modify parameters such as
+            <CODE>tcp_keepstart</CODE> and <CODE>tcp_keepstop</CODE>.
+            In later revisions, there is an explicit timer for
+            connections in FIN_WAIT_2 that can be modified; contact HP
+            support for details.
+        <LI><A HREF="http://www.sgi.com/">SGI IRIX</A> can be patched to
+            support a timeout.  For IRIX 5.3, 6.2, and 6.3, 
+            use patches 1654, 1703 and 1778 respectively.  If you
+            have trouble locating these patches, please contact your
+            SGI support channel for help.
+        <LI><A HREF="http://www.ncr.com/">NCR's MP RAS Unix</A> 2.xx and
+            3.xx both have FIN_WAIT_2 timeouts.  In 2.xx it is non-tunable
+            at 600 seconds, while in 3.xx it defaults to 600 seconds and
+            is calculated based on the tunable "max keep alive probes" 
+            (default of 8) multiplied by the "keep alive interval" (default
+            75 seconds).
+        <LI><A HREF="http://www.sequent.com">Squent's ptx/TCP/IP for
+            DYNIX/ptx</A> has had a FIN_WAIT_2 timeout since around
+            release 4.1 in mid-1994.
 </UL>
 <P>
 The following systems are known to not have a timeout:
 <P>
 <UL>
-       <LI><A HREF="http://www.sun.com/">SunOS 4.x</A> does not and
-           almost certainly never will have one because it as at the
-           very end of its development cycle for Sun.  If you have kernel
-           source should be easy to patch.
+        <LI><A HREF="http://www.sun.com/">SunOS 4.x</A> does not and
+            almost certainly never will have one because it as at the
+            very end of its development cycle for Sun.  If you have kernel
+            source should be easy to patch.
 </UL>
 <P>
 There is a 
index 127b1f2f0d3281aecb57bd936a9886942175ef8f..2b44c6613189222e173833bc19b943837b8a93e1 100644 (file)
   </P>
   <DL>
    <DT><A
-               HREF="API.html"
+        HREF="API.html"
        >API</A>
    </DT>
    <DD>Description of Apache's Application Programming Interface.
    </DD>
    <DT><A
-               HREF="FAQ.html"
+        HREF="FAQ.html"
        >FAQ</A>
    </DT>
    <DD>Frequently-Asked Questions concerning the Apache project and server
    </DD>
    <DT><A
-               HREF="client_block_api.html"
+        HREF="client_block_api.html"
        >Reading Client Input in Apache 1.2</A>
    </DT>
    <DD>Describes differences between Apache 1.1 and 1.2 in how modules
     read information from the client
    </DD>
    <DT><A
-               HREF="compat_notes.html"
+        HREF="compat_notes.html"
        >Compatibility with NCSA</A>
    </DT>
    <DD>Notes about Apache's compatibility with the NCSA server
    </DD>
    <DT><A
-               HREF="fin_wait_2.html"
+        HREF="fin_wait_2.html"
        ><SAMP>FIN_WAIT_2</SAMP></A>
    </DT>
    <DD>A description of the causes of Apache processes going into the
     <SAMP>FIN_WAIT_2</SAMP> state, and what you can do about it
    </DD>
    <DT><A
-               HREF="howto.html"
+        HREF="howto.html"
        >&quot;How-To&quot;</A>
    </DT>
    <DD>Instructions about how to accomplish some commonly-desired server
     functionality changes
    </DD>
    <DT><A
-               HREF="known_bugs.html"
+        HREF="known_bugs.html"
        >Known Bugs</A>
    </DT>
    <DD>Just what it says - a list of known bugs in each of the Apache releases
    </DD>
    <DT><A
-               HREF="nopgp.html"
+        HREF="nopgp.html"
        >No PGP</A>
    </DT>
    <DD>Why we took PEM and PGP support out of the base Apache distribution
    </DD>
    <DT><A
-               HREF="perf-bsd44.html"
+        HREF="perf-bsd44.html"
        >Performance Notes (BSD 4.4)</A>
    </DT>
    <DD>Some notes about ways to improve/optimize Apache performance on
     BSD 4.4 systems
    </DD>
    <DT><A
-               HREF="perf-dec.html"
+        HREF="perf-dec.html"
        >Performance Notes (Digital UNIX)</A>
    </DT>
    <DD>Extracts of USENET postings describing how to optimize Apache
     performance on Digital UNIX systems
    </DD>
    <DT><A
-               HREF="perf.html"
+        HREF="perf.html"
        >Performance Notes (General)</A>
    </DT>
    <DD>Some generic notes about how to improve Apache performance
    </DD>
    <DT><A
-               HREF="security_tips.html"
+        HREF="security_tips.html"
        >Security Tips</A>
    </DT>
    <DD>Some &quot;do&quot;s  - and &quot;don't&quot;s - for keeping your
     Apache web site secure
    </DD>
    <DT><A
-               HREF="vif-info.html"
+        HREF="vif-info.html"
        >Virtual Hosts (IP-based)</A>
    </DT>
    <DD>Excerpts and notes about configuring and using Apache IP-based virtual
     hosts
    </DD>
    <DT><A
-               HREF="windoz_keepalive.html"
+        HREF="windoz_keepalive.html"
        >Windows Bug with Web Keepalive</A>
    </DT>
    <DD>A brief description of a known problem with Microsoft Windows and
index c880c34ee102abca030c0fc6b427501d2784a6c7..c1b6933053ad0043cd45e6e21b134114fbafc328 100644 (file)
@@ -61,23 +61,23 @@ allows users to share URLs.
 <strong>Status:</strong> Extension<br>
 <strong>Module:</strong> mod_auth_anon<p>
 
-       A list of one or more 'magic' userIDs which are allowed access
-       without password verification. The userIDs are space separated.
-       It is possible to use the ' and " quotes to allow a space in
-       a userID as well as the \ escape character.
-       <p>
-       Please note that the comparison is <b>case-IN-sensitive</b>.
-       <br>
-       I strongly suggest that the magic username '<code>anonymous</code>'
-       is always one of the allowed userIDs.
-       <p>
-       Example:<br>
-       <code>
-       Anonymous: anonymous "Not Registered" 'I don\'t know'
-       </code><p>
-       This would allow the user to enter without password verification
-       by using the userId's 'anonymous', 'AnonyMous','Not Registered' and
-       'I Don't Know'.
+        A list of one or more 'magic' userIDs which are allowed access
+        without password verification. The userIDs are space separated.
+        It is possible to use the ' and " quotes to allow a space in
+        a userID as well as the \ escape character.
+        <p>
+        Please note that the comparison is <b>case-IN-sensitive</b>.
+        <br>
+        I strongly suggest that the magic username '<code>anonymous</code>'
+        is always one of the allowed userIDs.
+        <p>
+        Example:<br>
+        <code>
+        Anonymous: anonymous "Not Registered" 'I don\'t know'
+        </code><p>
+        This would allow the user to enter without password verification
+        by using the userId's 'anonymous', 'AnonyMous','Not Registered' and
+        'I Don't Know'.
 <HR>
 
 <A name="Authoritative"><h2>Anonymous_Authoritative</h2></A>
@@ -91,12 +91,12 @@ allows users to share URLs.
         When set 'on', there is no
         fall-through to other authorization methods. So if a
         userID does not match the values specified in the
-       <code>Anonymous</code> directive, access is denied.
-       <p>
-       Be sure you know what you are doing when you decide to switch 
-       it on. And remember that it is the linking order of the modules
-       (in the Configuration / Make file) which details the order
-       in which the Authorization modules are queried.
+        <code>Anonymous</code> directive, access is denied.
+        <p>
+        Be sure you know what you are doing when you decide to switch 
+        it on. And remember that it is the linking order of the modules
+        (in the Configuration / Make file) which details the order
+        in which the Authorization modules are queried.
 <hr>
 
 <A name="LogEmail"><h2>Anonymous_LogEmail</h2></A>
@@ -107,8 +107,8 @@ allows users to share URLs.
 <strong>Status:</strong> Extension<br>
 <strong>Module:</strong> mod_auth_anon<p>
 
-       When set 'on', the default, the 'password' entered (which hopefully
-       contains a sensible email address) is logged in the httpd-log file.
+        When set 'on', the default, the 'password' entered (which hopefully
+        contains a sensible email address) is logged in the httpd-log file.
 <hr>
 
 <A name="MustGiveEmail"><h2>Anonymous_MustGiveEmail</h2></a>
@@ -120,8 +120,8 @@ allows users to share URLs.
 <strong>Status:</strong> Extension<br>
 <strong>Module:</strong> mod_auth_anon<p>
 
-       Specifies whether the user must specify an email
-       address as the password.  This prohibits blank passwords.
+        Specifies whether the user must specify an email
+        address as the password.  This prohibits blank passwords.
 <HR>
 
 <A name="NoUserID"><h2>Anonymous_NoUserID</h2></A>
@@ -132,11 +132,11 @@ allows users to share URLs.
 <strong>Status:</strong> Extension<br>
 <strong>Module:</strong> mod_auth_anon<p>
 
-       When set 'on', users can leave
-       the userID (and perhaps the password field) empty. This
-       can be very convenient for MS-Explorer users who can
-       just hit return or click directly on the OK button; which
-       seems a natural reaction.
+        When set 'on', users can leave
+        the userID (and perhaps the password field) empty. This
+        can be very convenient for MS-Explorer users who can
+        just hit return or click directly on the OK button; which
+        seems a natural reaction.
 
 <hr>
 
@@ -148,9 +148,9 @@ allows users to share URLs.
 <strong>Status:</strong> Extension<br>
 <strong>Module:</strong> mod_auth_anon<p>
 
-       When set 'on' the 'password' entered is
-       checked for at least one '@' and a '.' to encourage users to enter
-       valid email addresses (see the above <code>Auth_LogEmail</code>).
+        When set 'on' the 'password' entered is
+        checked for at least one '@' and a '.' to encourage users to enter
+        valid email addresses (see the above <code>Auth_LogEmail</code>).
 
 <hr><a name="Example"><h2>Example</h2></a>
 
@@ -180,10 +180,10 @@ Excerpt of access.conf:
 <dl>
 <dt><code>
 Anonymous        anonymous guest www test welcome<p>
-Anonymous_MustGiveEmail        on<br>
+Anonymous_MustGiveEmail on<br>
 Anonymous_VerifyEmail    on<br>
-Anonymous_NoUserId     off<br>
-Anonymous_LogEmail     on<br>
+Anonymous_NoUserId      off<br>
+Anonymous_LogEmail      on<br>
 <p>
 AuthName                Use 'anonymous' & Email address for guest entry<br>
 AuthType                basic<p>
@@ -217,8 +217,8 @@ This version: 23 Nov 1995, 24 Feb 1996, 16 May 1996.
     </dd>
 <dt>Version 0.5<br></dt>
     <dd>Added 'VerifyEmail' and 'LogEmail' options. Multiple
-       'anonymous' tokens allowed. more docs. Added Authoritative
-       functionality.
+        'anonymous' tokens allowed. more docs. Added Authoritative
+        functionality.
     </dd>
 </dl>
 
index 6f5113099891d6cf8985b3301145111b4688b0a3..f1576471e63279514c53b4989587db8d9ac99cf4 100644 (file)
@@ -309,15 +309,15 @@ elements are:
     Unix egrep command.
 
 <DT>( <I>test_condition</I> )
-       <DD>true if <I>test_condition</I> is true 
+        <DD>true if <I>test_condition</I> is true 
 <DT>! <I>test_condition</I>
-       <DD>true if <I>test_condition</I> is false
+        <DD>true if <I>test_condition</I> is false
 <DT><I>test_condition1</I> && <I>test_condition2</I>
-       <DD>true if both <I>test_condition1</I> and
-       <I>test_condition2</I> are true 
+        <DD>true if both <I>test_condition1</I> and
+        <I>test_condition2</I> are true 
 <DT><I>test_condition1</I> || <I>test_condition2</I>
-       <DD>true if either <I>test_condition1</I> or
-       <I>test_condition2</I> is true 
+        <DD>true if either <I>test_condition1</I> or
+        <I>test_condition2</I> is true 
 </DL>
 
 <P> "<I>=</I>" and "<I>!=</I>" bind more tightly than "<I>&&</I>" and
index e0aef6884609bba2f05a92c0478bd7426bead45a..30926d4da6a8f1af4e3f8eedf514fcd507cc942f 100644 (file)
@@ -297,7 +297,7 @@ disables caching completely.<p>
 <li><a href="#shortname">Using Netscape hostname shortcuts</a>
 <li><a href="#mimetypes">Why doesn't file type <i>xxx</i> download via FTP?</a>
 <li><a href="#startup">Why does Apache start more slowly when using the
-       proxy module?</a>
+        proxy module?</a>
 <li><a href="#socks">Can I use the Apache proxy module with my SOCKS proxy?</a>
 </ul>
 
@@ -337,7 +337,7 @@ application/octet-stream        bin dms lha lzh exe class tgz taz
 </pre>
 
 <h2><a name="startup">Why does Apache start more slowly when using the
-       proxy module?</a></h2>
+        proxy module?</a></h2>
 
 If you're using the <code>ProxyBlock</code> or <code>NoCache</code>
 directives, hostnames' IP addresses are looked up and cached during
index 03eaa5801f7b53c695b854da4bb4dca23f132d2f..8d432e4c4ef6c0a1a8a4e623169edc1b49413da8 100644 (file)
@@ -988,10 +988,10 @@ comma-separated list of the following flags:
     which will be expanded. You can use this flag more than once to set more
     than one variable. The variables can be later dereferenced at a lot of
     situations, but the usual location will be from within XSSI (via
-       <tt>&lt;!--#echo var="VAR"--&gt;</tt>) or CGI (e.g. <tt>$ENV{'VAR'}</tt>).
-       But additionally you can also dereference it in a following RewriteCond
-       pattern via <tt>%{ENV:VAR}</tt>. Use this to strip but remember
-       information from URLs. 
+        <tt>&lt;!--#echo var="VAR"--&gt;</tt>) or CGI (e.g. <tt>$ENV{'VAR'}</tt>).
+        But additionally you can also dereference it in a following RewriteCond
+        pattern via <tt>%{ENV:VAR}</tt>. Use this to strip but remember
+        information from URLs. 
 </ul>
 
 <p>
index f5a55fa397cbfe187f056b696189ba4414f54d7a..f671ad78367bf2d55850ee54d3eac6e2a621155f 100644 (file)
@@ -90,7 +90,7 @@ mark@ukweb.com</a> and tell me your configuration.
 Do this by adding the following to the AUX_CFLAGS line in the
 "Configuration" file and then recompiling as usual.
 <pre>
-       AUX_CFLAGS= (something) -DSTATUS
+        AUX_CFLAGS= (something) -DSTATUS
 </pre>
 
 <BLOCKQUOTE>
index 450536257a6b1a3ae119b00d960fc8492c0183b2..566cc0f27193b0a0d1c7aa0c37f7b90b5046c1a8 100644 (file)
@@ -61,9 +61,9 @@ Digital UNIX
 
 <UL> 
   <LI><A HREF="http://www.digital.com/info/internet/document/ias/tuning.html">DIGITAL
-       UNIX Tuning Parameters for Web Servers</A> 
+        UNIX Tuning Parameters for Web Servers</A> 
   <LI>We have some <A HREF="perf-dec.html">newsgroup postings</A> on how to tune 
-       Digital UNIX 3.2 and 4.0. 
+        Digital UNIX 3.2 and 4.0. 
 </UL>
 
 <P><HR>
index c130decffa732c010ee3115db9ea6c83524ca504..2c37337b70fb229cdff5c9f7c35f6c45799b5c31 100644 (file)
@@ -39,9 +39,9 @@ as too confusing.
 The defaults for each variable are:
 
 <PRE>
-MinSpareServers                5
-MaxSpareServers                10
-StartServers           5
+MinSpareServers         5
+MaxSpareServers         10
+StartServers            5
 </PRE>
 
 There is an absolute maximum number of simultaneous children defined
index 7806bc8f55c0c0c00f05752f52ddb6981bc71814..0157cd0c1b5564fe5febfe46082e7066e54a3377 100644 (file)
 
 <P ALIGN="LEFT">
 <OL>
-       <LH><BIG><STRONG>CONTENTS</STRONG></BIG></LH>
-       <LI><A HREF="#what">What is suEXEC?</A></LI>
-       <LI><A HREF="#before">Before we begin.</A></LI>
-       <LI><A HREF="#model">suEXEC Security Model.</A></LI>
-       <LI><A HREF="#install">Configuring & Installing suEXEC</A></LI>
-       <LI><A HREF="#enable">Enabling & Disabling suEXEC</A></LI>
-       <LI><A HREF="#debug">Debugging suEXEC</A></LI>
-       <LI><A HREF="#jabberwock">Beware the Jabberwock: Warnings & Examples</A></LI>
+        <LH><BIG><STRONG>CONTENTS</STRONG></BIG></LH>
+        <LI><A HREF="#what">What is suEXEC?</A></LI>
+        <LI><A HREF="#before">Before we begin.</A></LI>
+        <LI><A HREF="#model">suEXEC Security Model.</A></LI>
+        <LI><A HREF="#install">Configuring &amp; Installing suEXEC</A></LI>
+        <LI><A HREF="#enable">Enabling &amp; Disabling suEXEC</A></LI>
+        <LI><A HREF="#debug">Debugging suEXEC</A></LI>
+        <LI><A HREF="#jabberwock">Beware the Jabberwock: Warnings &amp;
+         Examples</A></LI> 
 </OL>
 </P>
 
@@ -119,124 +120,124 @@ user and group IDs under which the program is to execute.
 The wrapper then employs the following process to determine success or
 failure -- if any one of these conditions fail, the program logs the failure
 and exits with an error, otherwise it will continue:
-       <OL>
-       <LI><STRONG>Was the wrapper called with the proper number of arguments?</STRONG>
-       <BLOCKQUOTE>
-       The wrapper will only execute if it is given the proper number of arguments.
-       The proper argument format is known to the Apache web server.  If the wrapper
-       is not receiving the proper number of arguments, it is either being hacked, or
-       there is something wrong with the suEXEC portion of your Apache binary.
-       </BLOCKQUOTE>
-       </LI>
-       <LI><STRONG>Is the user executing this wrapper a valid user of this system?</STRONG>
-       <BLOCKQUOTE>
-       This is to ensure that the user executing the wrapper is truly a user of the system.
-       </BLOCKQUOTE>
-       </LI>
-       <LI><STRONG>Is this valid user allowed to run the wrapper?</STRONG>
-       <BLOCKQUOTE>
-       Is this user the user allowed to run this wrapper?  Only one user (the Apache
-       user) is allowed to execute this program.
-       </BLOCKQUOTE>
-       </LI>
-       <LI><STRONG>Does the target program have an unsafe hierarchical reference?</STRONG>
-       <BLOCKQUOTE>
-       Does the target program contain a leading '/' or have a '..' backreference?  These
-       are not allowed; the target program must reside within the Apache webspace.
-       </BLOCKQUOTE>
-       </LI>
-       <LI><STRONG>Is the target user name valid?</STRONG>
-       <BLOCKQUOTE>
-       Does the target user exist?
-       </BLOCKQUOTE>
-       </LI>
-       <LI><STRONG>Is the target group name valid?</STRONG>
-       <BLOCKQUOTE>
-       Does the target group exist?
-       </BLOCKQUOTE>
-       </LI>
-       <LI><STRONG>Is the target user <EM>NOT</EM> superuser?</STRONG>
-       <BLOCKQUOTE>
-       Presently, suEXEC does not allow 'root' to execute CGI/SSI programs.
-       </BLOCKQUOTE>
-       </LI>
-       <LI><STRONG>Is the target userid <EM>ABOVE</EM> the minimum ID number?</STRONG>
-       <BLOCKQUOTE>
-       The minimum user ID number is specified during configuration.  This allows you
-       to set the lowest possible userid that will be allowed to execute CGI/SSI programs.
-       This is useful to block out "system" accounts.
-       </BLOCKQUOTE>
-       </LI>
-       <LI><STRONG>Is the target group <EM>NOT</EM> the superuser group?</STRONG>
-       <BLOCKQUOTE>
-       Presently, suEXEC does not allow the 'root' group to execute CGI/SSI programs.
-       </BLOCKQUOTE>
-       </LI>
-       <LI><STRONG>Is the target groupid <EM>ABOVE</EM> the minimum ID number?</STRONG>
-       <BLOCKQUOTE>
-       The minimum group ID number is specified during configuration.  This allows you
-       to set the lowest possible groupid that will be allowed to execute CGI/SSI programs.
-       This is useful to block out "system" groups.
-       </BLOCKQUOTE>
-       </LI>
-       <LI><STRONG>Can the wrapper successfully become the target user and group?</STRONG>
-       <BLOCKQUOTE>
-       Here is where the program becomes the target user and group via setuid and setgid
-       calls.  The group access list is also initialized with all of the groups of which
-       the user is a member.
-       </BLOCKQUOTE>
-       </LI>
-       <LI><STRONG>Does the directory in which the program resides exist?</STRONG>
-       <BLOCKQUOTE>
-       If it doesn't exist, it can't very well contain files.
-       </BLOCKQUOTE>
-       </LI>
-       <LI><STRONG>Is the directory within the Apache webspace?</STRONG>
-       <BLOCKQUOTE>
-       If the request is for a regular portion of the server, is the requested directory
-       within the server's document root?  If the request is for a UserDir, is the requested
-       directory within the user's document root?
-       </BLOCKQUOTE>
-       </LI>
-       <LI><STRONG>Is the directory <EM>NOT</EM> writable by anyone else?</STRONG>
-       <BLOCKQUOTE>
-       We don't want to open up the directory to others; only the owner user may be able
-       to alter this directories contents.
-       </BLOCKQUOTE>
-       </LI>
-       <LI><STRONG>Does the target program exist?</STRONG>
-       <BLOCKQUOTE>
-       If it doesn't exists, it can't very well be executed.
-       </BLOCKQUOTE>
-       </LI>
-       <LI><STRONG>Is the target program <EM>NOT</EM> writable by anyone else?</STRONG>
-       <BLOCKQUOTE>
-       We don't want to give anyone other than the owner the ability to change the program.
-       </BLOCKQUOTE>
-       </LI>
-       <LI><STRONG>Is the target program <EM>NOT</EM> setuid or setgid?</STRONG>
-       <BLOCKQUOTE>
-       We do not want to execute programs that will then change our UID/GID again.
-       </BLOCKQUOTE>
-       </LI>
-       <LI><STRONG>Is the target user/group the same as the program's user/group?</STRONG>
-       <BLOCKQUOTE>
-       Is the user the owner of the file?
-       </BLOCKQUOTE>
-       </LI>
-       <LI><STRONG>Can we successfully clean the process environment to ensure safe operations?</STRONG>
-       <BLOCKQUOTE>
-       suEXEC cleans the process' environment by establishing a safe execution PATH (defined
-       during configuration), as well as only passing through those variables whose names
-       are listed in the safe environment list (also created during configuration).
-       </BLOCKQUOTE>
-       </LI>
-       <LI><STRONG>Can we successfully become the target program and execute?</STRONG>
-       <BLOCKQUOTE>
-       Here is where suEXEC ends and the target program begins.
-       </BLOCKQUOTE>
-       </LI>
-       </OL>
+        <OL>
+        <LI><STRONG>Was the wrapper called with the proper number of arguments?</STRONG>
+        <BLOCKQUOTE>
+        The wrapper will only execute if it is given the proper number of arguments.
+        The proper argument format is known to the Apache web server.  If the wrapper
+        is not receiving the proper number of arguments, it is either being hacked, or
+        there is something wrong with the suEXEC portion of your Apache binary.
+        </BLOCKQUOTE>
+        </LI>
+        <LI><STRONG>Is the user executing this wrapper a valid user of this system?</STRONG>
+        <BLOCKQUOTE>
+        This is to ensure that the user executing the wrapper is truly a user of the system.
+        </BLOCKQUOTE>
+        </LI>
+        <LI><STRONG>Is this valid user allowed to run the wrapper?</STRONG>
+        <BLOCKQUOTE>
+        Is this user the user allowed to run this wrapper?  Only one user (the Apache
+        user) is allowed to execute this program.
+        </BLOCKQUOTE>
+        </LI>
+        <LI><STRONG>Does the target program have an unsafe hierarchical reference?</STRONG>
+        <BLOCKQUOTE>
+        Does the target program contain a leading '/' or have a '..' backreference?  These
+        are not allowed; the target program must reside within the Apache webspace.
+        </BLOCKQUOTE>
+        </LI>
+        <LI><STRONG>Is the target user name valid?</STRONG>
+        <BLOCKQUOTE>
+        Does the target user exist?
+        </BLOCKQUOTE>
+        </LI>
+        <LI><STRONG>Is the target group name valid?</STRONG>
+        <BLOCKQUOTE>
+        Does the target group exist?
+        </BLOCKQUOTE>
+        </LI>
+        <LI><STRONG>Is the target user <EM>NOT</EM> superuser?</STRONG>
+        <BLOCKQUOTE>
+        Presently, suEXEC does not allow 'root' to execute CGI/SSI programs.
+        </BLOCKQUOTE>
+        </LI>
+        <LI><STRONG>Is the target userid <EM>ABOVE</EM> the minimum ID number?</STRONG>
+        <BLOCKQUOTE>
+        The minimum user ID number is specified during configuration.  This allows you
+        to set the lowest possible userid that will be allowed to execute CGI/SSI programs.
+        This is useful to block out "system" accounts.
+        </BLOCKQUOTE>
+        </LI>
+        <LI><STRONG>Is the target group <EM>NOT</EM> the superuser group?</STRONG>
+        <BLOCKQUOTE>
+        Presently, suEXEC does not allow the 'root' group to execute CGI/SSI programs.
+        </BLOCKQUOTE>
+        </LI>
+        <LI><STRONG>Is the target groupid <EM>ABOVE</EM> the minimum ID number?</STRONG>
+        <BLOCKQUOTE>
+        The minimum group ID number is specified during configuration.  This allows you
+        to set the lowest possible groupid that will be allowed to execute CGI/SSI programs.
+        This is useful to block out "system" groups.
+        </BLOCKQUOTE>
+        </LI>
+        <LI><STRONG>Can the wrapper successfully become the target user and group?</STRONG>
+        <BLOCKQUOTE>
+        Here is where the program becomes the target user and group via setuid and setgid
+        calls.  The group access list is also initialized with all of the groups of which
+        the user is a member.
+        </BLOCKQUOTE>
+        </LI>
+        <LI><STRONG>Does the directory in which the program resides exist?</STRONG>
+        <BLOCKQUOTE>
+        If it doesn't exist, it can't very well contain files.
+        </BLOCKQUOTE>
+        </LI>
+        <LI><STRONG>Is the directory within the Apache webspace?</STRONG>
+        <BLOCKQUOTE>
+        If the request is for a regular portion of the server, is the requested directory
+        within the server's document root?  If the request is for a UserDir, is the requested
+        directory within the user's document root?
+        </BLOCKQUOTE>
+        </LI>
+        <LI><STRONG>Is the directory <EM>NOT</EM> writable by anyone else?</STRONG>
+        <BLOCKQUOTE>
+        We don't want to open up the directory to others; only the owner user may be able
+        to alter this directories contents.
+        </BLOCKQUOTE>
+        </LI>
+        <LI><STRONG>Does the target program exist?</STRONG>
+        <BLOCKQUOTE>
+        If it doesn't exists, it can't very well be executed.
+        </BLOCKQUOTE>
+        </LI>
+        <LI><STRONG>Is the target program <EM>NOT</EM> writable by anyone else?</STRONG>
+        <BLOCKQUOTE>
+        We don't want to give anyone other than the owner the ability to change the program.
+        </BLOCKQUOTE>
+        </LI>
+        <LI><STRONG>Is the target program <EM>NOT</EM> setuid or setgid?</STRONG>
+        <BLOCKQUOTE>
+        We do not want to execute programs that will then change our UID/GID again.
+        </BLOCKQUOTE>
+        </LI>
+        <LI><STRONG>Is the target user/group the same as the program's user/group?</STRONG>
+        <BLOCKQUOTE>
+        Is the user the owner of the file?
+        </BLOCKQUOTE>
+        </LI>
+        <LI><STRONG>Can we successfully clean the process environment to ensure safe operations?</STRONG>
+        <BLOCKQUOTE>
+        suEXEC cleans the process' environment by establishing a safe execution PATH (defined
+        during configuration), as well as only passing through those variables whose names
+        are listed in the safe environment list (also created during configuration).
+        </BLOCKQUOTE>
+        </LI>
+        <LI><STRONG>Can we successfully become the target program and execute?</STRONG>
+        <BLOCKQUOTE>
+        Here is where suEXEC ends and the target program begins.
+        </BLOCKQUOTE>
+        </LI>
+        </OL>
 </P>
 
 <P ALIGN="LEFT">
@@ -257,7 +258,7 @@ section of this document.
 <STRONG><A HREF="suexec.html">BACK TO CONTENTS</A></STRONG>
 </P>
 
-<H3><A NAME="install">Configuring & Installing suEXEC</A></H3>
+<H3><A NAME="install">Configuring &amp; Installing suEXEC</A></H3>
 <P ALIGN="LEFT">
 Here's where we begin the fun.  The configuration and installation of suEXEC is
 a four step process: edit the suEXEC header file, compile suEXEC, place the
@@ -396,7 +397,7 @@ user shell, do so now and execute the following commands.
 <STRONG><A HREF="suexec.html">BACK TO CONTENTS</A></STRONG>
 </P>
 
-<H3><A NAME="enable">Enabling & Disabling suEXEC</A></H3>
+<H3><A NAME="enable">Enabling &amp; Disabling suEXEC</A></H3>
 <P ALIGN="LEFT">
 After properly installing the <STRONG>suexec</STRONG> wrapper
 executable, you must kill and restart the Apache server.  A simple
@@ -454,7 +455,7 @@ and the error_log for the server to see where you may have gone astray.
 <STRONG><A HREF="suexec.html">BACK TO CONTENTS</A></STRONG>
 </P>
 
-<H3><A NAME="jabberwock">Beware the Jabberwock: Warnings & Examples</A></H3>
+<H3><A NAME="jabberwock">Beware the Jabberwock: Warnings &amp; Examples</A></H3>
 <P ALIGN="LEFT">
 <STRONG>NOTE!</STRONG>  This section may not be complete.  For the latest
 revision of this section of the documentation, see the Apache Group's
@@ -467,33 +468,33 @@ There are a few points of interest regarding the wrapper that can cause
 limitations on server setup.  Please review these before submitting any
 "bugs" regarding suEXEC.
 <UL>
-       <LH><STRONG>suEXEC Points Of Interest</STRONG></LH>
-       <LI>Hierarchy limitations
-       <BLOCKQUOTE>
-       For security and efficiency reasons, all suexec requests must
-       remain within either a top-level document root for virtual
-       host requests, or one top-level personal document root for
-       userdir requests.  For example, if you have four VirtualHosts
-       configured, you would need to structure all of your VHosts'
-       document roots off of one main Apache document hierarchy to
-       take advantage of suEXEC for VirtualHosts. (Example forthcoming.)
-       </BLOCKQUOTE>
-       </LI>
-       <LI>suEXEC's PATH environment variable
-       <BLOCKQUOTE>
-       This can be a dangerous thing to change.  Make certain every
-       path you include in this define is a <STRONG>trusted</STRONG>
-       directory.  You don't want to open people up to having someone
-       from across the world running a trojan horse on them.
-       </BLOCKQUOTE>
-       </LI>
-       <LI>Altering the suEXEC code
-       <BLOCKQUOTE>
-       Again, this can cause <STRONG>Big Trouble</STRONG> if you try
-       this without knowing what you are doing.  Stay away from it
-       if at all possible.
-       </BLOCKQUOTE>
-       </LI>
+        <LH><STRONG>suEXEC Points Of Interest</STRONG></LH>
+        <LI>Hierarchy limitations
+        <BLOCKQUOTE>
+        For security and efficiency reasons, all suexec requests must
+        remain within either a top-level document root for virtual
+        host requests, or one top-level personal document root for
+        userdir requests.  For example, if you have four VirtualHosts
+        configured, you would need to structure all of your VHosts'
+        document roots off of one main Apache document hierarchy to
+        take advantage of suEXEC for VirtualHosts. (Example forthcoming.)
+        </BLOCKQUOTE>
+        </LI>
+        <LI>suEXEC's PATH environment variable
+        <BLOCKQUOTE>
+        This can be a dangerous thing to change.  Make certain every
+        path you include in this define is a <STRONG>trusted</STRONG>
+        directory.  You don't want to open people up to having someone
+        from across the world running a trojan horse on them.
+        </BLOCKQUOTE>
+        </LI>
+        <LI>Altering the suEXEC code
+        <BLOCKQUOTE>
+        Again, this can cause <STRONG>Big Trouble</STRONG> if you try
+        this without knowing what you are doing.  Stay away from it
+        if at all possible.
+        </BLOCKQUOTE>
+        </LI>
 </UL>
 
 <P ALIGN="CENTER">
index 7806bc8f55c0c0c00f05752f52ddb6981bc71814..0157cd0c1b5564fe5febfe46082e7066e54a3377 100644 (file)
 
 <P ALIGN="LEFT">
 <OL>
-       <LH><BIG><STRONG>CONTENTS</STRONG></BIG></LH>
-       <LI><A HREF="#what">What is suEXEC?</A></LI>
-       <LI><A HREF="#before">Before we begin.</A></LI>
-       <LI><A HREF="#model">suEXEC Security Model.</A></LI>
-       <LI><A HREF="#install">Configuring & Installing suEXEC</A></LI>
-       <LI><A HREF="#enable">Enabling & Disabling suEXEC</A></LI>
-       <LI><A HREF="#debug">Debugging suEXEC</A></LI>
-       <LI><A HREF="#jabberwock">Beware the Jabberwock: Warnings & Examples</A></LI>
+        <LH><BIG><STRONG>CONTENTS</STRONG></BIG></LH>
+        <LI><A HREF="#what">What is suEXEC?</A></LI>
+        <LI><A HREF="#before">Before we begin.</A></LI>
+        <LI><A HREF="#model">suEXEC Security Model.</A></LI>
+        <LI><A HREF="#install">Configuring &amp; Installing suEXEC</A></LI>
+        <LI><A HREF="#enable">Enabling &amp; Disabling suEXEC</A></LI>
+        <LI><A HREF="#debug">Debugging suEXEC</A></LI>
+        <LI><A HREF="#jabberwock">Beware the Jabberwock: Warnings &amp;
+         Examples</A></LI> 
 </OL>
 </P>
 
@@ -119,124 +120,124 @@ user and group IDs under which the program is to execute.
 The wrapper then employs the following process to determine success or
 failure -- if any one of these conditions fail, the program logs the failure
 and exits with an error, otherwise it will continue:
-       <OL>
-       <LI><STRONG>Was the wrapper called with the proper number of arguments?</STRONG>
-       <BLOCKQUOTE>
-       The wrapper will only execute if it is given the proper number of arguments.
-       The proper argument format is known to the Apache web server.  If the wrapper
-       is not receiving the proper number of arguments, it is either being hacked, or
-       there is something wrong with the suEXEC portion of your Apache binary.
-       </BLOCKQUOTE>
-       </LI>
-       <LI><STRONG>Is the user executing this wrapper a valid user of this system?</STRONG>
-       <BLOCKQUOTE>
-       This is to ensure that the user executing the wrapper is truly a user of the system.
-       </BLOCKQUOTE>
-       </LI>
-       <LI><STRONG>Is this valid user allowed to run the wrapper?</STRONG>
-       <BLOCKQUOTE>
-       Is this user the user allowed to run this wrapper?  Only one user (the Apache
-       user) is allowed to execute this program.
-       </BLOCKQUOTE>
-       </LI>
-       <LI><STRONG>Does the target program have an unsafe hierarchical reference?</STRONG>
-       <BLOCKQUOTE>
-       Does the target program contain a leading '/' or have a '..' backreference?  These
-       are not allowed; the target program must reside within the Apache webspace.
-       </BLOCKQUOTE>
-       </LI>
-       <LI><STRONG>Is the target user name valid?</STRONG>
-       <BLOCKQUOTE>
-       Does the target user exist?
-       </BLOCKQUOTE>
-       </LI>
-       <LI><STRONG>Is the target group name valid?</STRONG>
-       <BLOCKQUOTE>
-       Does the target group exist?
-       </BLOCKQUOTE>
-       </LI>
-       <LI><STRONG>Is the target user <EM>NOT</EM> superuser?</STRONG>
-       <BLOCKQUOTE>
-       Presently, suEXEC does not allow 'root' to execute CGI/SSI programs.
-       </BLOCKQUOTE>
-       </LI>
-       <LI><STRONG>Is the target userid <EM>ABOVE</EM> the minimum ID number?</STRONG>
-       <BLOCKQUOTE>
-       The minimum user ID number is specified during configuration.  This allows you
-       to set the lowest possible userid that will be allowed to execute CGI/SSI programs.
-       This is useful to block out "system" accounts.
-       </BLOCKQUOTE>
-       </LI>
-       <LI><STRONG>Is the target group <EM>NOT</EM> the superuser group?</STRONG>
-       <BLOCKQUOTE>
-       Presently, suEXEC does not allow the 'root' group to execute CGI/SSI programs.
-       </BLOCKQUOTE>
-       </LI>
-       <LI><STRONG>Is the target groupid <EM>ABOVE</EM> the minimum ID number?</STRONG>
-       <BLOCKQUOTE>
-       The minimum group ID number is specified during configuration.  This allows you
-       to set the lowest possible groupid that will be allowed to execute CGI/SSI programs.
-       This is useful to block out "system" groups.
-       </BLOCKQUOTE>
-       </LI>
-       <LI><STRONG>Can the wrapper successfully become the target user and group?</STRONG>
-       <BLOCKQUOTE>
-       Here is where the program becomes the target user and group via setuid and setgid
-       calls.  The group access list is also initialized with all of the groups of which
-       the user is a member.
-       </BLOCKQUOTE>
-       </LI>
-       <LI><STRONG>Does the directory in which the program resides exist?</STRONG>
-       <BLOCKQUOTE>
-       If it doesn't exist, it can't very well contain files.
-       </BLOCKQUOTE>
-       </LI>
-       <LI><STRONG>Is the directory within the Apache webspace?</STRONG>
-       <BLOCKQUOTE>
-       If the request is for a regular portion of the server, is the requested directory
-       within the server's document root?  If the request is for a UserDir, is the requested
-       directory within the user's document root?
-       </BLOCKQUOTE>
-       </LI>
-       <LI><STRONG>Is the directory <EM>NOT</EM> writable by anyone else?</STRONG>
-       <BLOCKQUOTE>
-       We don't want to open up the directory to others; only the owner user may be able
-       to alter this directories contents.
-       </BLOCKQUOTE>
-       </LI>
-       <LI><STRONG>Does the target program exist?</STRONG>
-       <BLOCKQUOTE>
-       If it doesn't exists, it can't very well be executed.
-       </BLOCKQUOTE>
-       </LI>
-       <LI><STRONG>Is the target program <EM>NOT</EM> writable by anyone else?</STRONG>
-       <BLOCKQUOTE>
-       We don't want to give anyone other than the owner the ability to change the program.
-       </BLOCKQUOTE>
-       </LI>
-       <LI><STRONG>Is the target program <EM>NOT</EM> setuid or setgid?</STRONG>
-       <BLOCKQUOTE>
-       We do not want to execute programs that will then change our UID/GID again.
-       </BLOCKQUOTE>
-       </LI>
-       <LI><STRONG>Is the target user/group the same as the program's user/group?</STRONG>
-       <BLOCKQUOTE>
-       Is the user the owner of the file?
-       </BLOCKQUOTE>
-       </LI>
-       <LI><STRONG>Can we successfully clean the process environment to ensure safe operations?</STRONG>
-       <BLOCKQUOTE>
-       suEXEC cleans the process' environment by establishing a safe execution PATH (defined
-       during configuration), as well as only passing through those variables whose names
-       are listed in the safe environment list (also created during configuration).
-       </BLOCKQUOTE>
-       </LI>
-       <LI><STRONG>Can we successfully become the target program and execute?</STRONG>
-       <BLOCKQUOTE>
-       Here is where suEXEC ends and the target program begins.
-       </BLOCKQUOTE>
-       </LI>
-       </OL>
+        <OL>
+        <LI><STRONG>Was the wrapper called with the proper number of arguments?</STRONG>
+        <BLOCKQUOTE>
+        The wrapper will only execute if it is given the proper number of arguments.
+        The proper argument format is known to the Apache web server.  If the wrapper
+        is not receiving the proper number of arguments, it is either being hacked, or
+        there is something wrong with the suEXEC portion of your Apache binary.
+        </BLOCKQUOTE>
+        </LI>
+        <LI><STRONG>Is the user executing this wrapper a valid user of this system?</STRONG>
+        <BLOCKQUOTE>
+        This is to ensure that the user executing the wrapper is truly a user of the system.
+        </BLOCKQUOTE>
+        </LI>
+        <LI><STRONG>Is this valid user allowed to run the wrapper?</STRONG>
+        <BLOCKQUOTE>
+        Is this user the user allowed to run this wrapper?  Only one user (the Apache
+        user) is allowed to execute this program.
+        </BLOCKQUOTE>
+        </LI>
+        <LI><STRONG>Does the target program have an unsafe hierarchical reference?</STRONG>
+        <BLOCKQUOTE>
+        Does the target program contain a leading '/' or have a '..' backreference?  These
+        are not allowed; the target program must reside within the Apache webspace.
+        </BLOCKQUOTE>
+        </LI>
+        <LI><STRONG>Is the target user name valid?</STRONG>
+        <BLOCKQUOTE>
+        Does the target user exist?
+        </BLOCKQUOTE>
+        </LI>
+        <LI><STRONG>Is the target group name valid?</STRONG>
+        <BLOCKQUOTE>
+        Does the target group exist?
+        </BLOCKQUOTE>
+        </LI>
+        <LI><STRONG>Is the target user <EM>NOT</EM> superuser?</STRONG>
+        <BLOCKQUOTE>
+        Presently, suEXEC does not allow 'root' to execute CGI/SSI programs.
+        </BLOCKQUOTE>
+        </LI>
+        <LI><STRONG>Is the target userid <EM>ABOVE</EM> the minimum ID number?</STRONG>
+        <BLOCKQUOTE>
+        The minimum user ID number is specified during configuration.  This allows you
+        to set the lowest possible userid that will be allowed to execute CGI/SSI programs.
+        This is useful to block out "system" accounts.
+        </BLOCKQUOTE>
+        </LI>
+        <LI><STRONG>Is the target group <EM>NOT</EM> the superuser group?</STRONG>
+        <BLOCKQUOTE>
+        Presently, suEXEC does not allow the 'root' group to execute CGI/SSI programs.
+        </BLOCKQUOTE>
+        </LI>
+        <LI><STRONG>Is the target groupid <EM>ABOVE</EM> the minimum ID number?</STRONG>
+        <BLOCKQUOTE>
+        The minimum group ID number is specified during configuration.  This allows you
+        to set the lowest possible groupid that will be allowed to execute CGI/SSI programs.
+        This is useful to block out "system" groups.
+        </BLOCKQUOTE>
+        </LI>
+        <LI><STRONG>Can the wrapper successfully become the target user and group?</STRONG>
+        <BLOCKQUOTE>
+        Here is where the program becomes the target user and group via setuid and setgid
+        calls.  The group access list is also initialized with all of the groups of which
+        the user is a member.
+        </BLOCKQUOTE>
+        </LI>
+        <LI><STRONG>Does the directory in which the program resides exist?</STRONG>
+        <BLOCKQUOTE>
+        If it doesn't exist, it can't very well contain files.
+        </BLOCKQUOTE>
+        </LI>
+        <LI><STRONG>Is the directory within the Apache webspace?</STRONG>
+        <BLOCKQUOTE>
+        If the request is for a regular portion of the server, is the requested directory
+        within the server's document root?  If the request is for a UserDir, is the requested
+        directory within the user's document root?
+        </BLOCKQUOTE>
+        </LI>
+        <LI><STRONG>Is the directory <EM>NOT</EM> writable by anyone else?</STRONG>
+        <BLOCKQUOTE>
+        We don't want to open up the directory to others; only the owner user may be able
+        to alter this directories contents.
+        </BLOCKQUOTE>
+        </LI>
+        <LI><STRONG>Does the target program exist?</STRONG>
+        <BLOCKQUOTE>
+        If it doesn't exists, it can't very well be executed.
+        </BLOCKQUOTE>
+        </LI>
+        <LI><STRONG>Is the target program <EM>NOT</EM> writable by anyone else?</STRONG>
+        <BLOCKQUOTE>
+        We don't want to give anyone other than the owner the ability to change the program.
+        </BLOCKQUOTE>
+        </LI>
+        <LI><STRONG>Is the target program <EM>NOT</EM> setuid or setgid?</STRONG>
+        <BLOCKQUOTE>
+        We do not want to execute programs that will then change our UID/GID again.
+        </BLOCKQUOTE>
+        </LI>
+        <LI><STRONG>Is the target user/group the same as the program's user/group?</STRONG>
+        <BLOCKQUOTE>
+        Is the user the owner of the file?
+        </BLOCKQUOTE>
+        </LI>
+        <LI><STRONG>Can we successfully clean the process environment to ensure safe operations?</STRONG>
+        <BLOCKQUOTE>
+        suEXEC cleans the process' environment by establishing a safe execution PATH (defined
+        during configuration), as well as only passing through those variables whose names
+        are listed in the safe environment list (also created during configuration).
+        </BLOCKQUOTE>
+        </LI>
+        <LI><STRONG>Can we successfully become the target program and execute?</STRONG>
+        <BLOCKQUOTE>
+        Here is where suEXEC ends and the target program begins.
+        </BLOCKQUOTE>
+        </LI>
+        </OL>
 </P>
 
 <P ALIGN="LEFT">
@@ -257,7 +258,7 @@ section of this document.
 <STRONG><A HREF="suexec.html">BACK TO CONTENTS</A></STRONG>
 </P>
 
-<H3><A NAME="install">Configuring & Installing suEXEC</A></H3>
+<H3><A NAME="install">Configuring &amp; Installing suEXEC</A></H3>
 <P ALIGN="LEFT">
 Here's where we begin the fun.  The configuration and installation of suEXEC is
 a four step process: edit the suEXEC header file, compile suEXEC, place the
@@ -396,7 +397,7 @@ user shell, do so now and execute the following commands.
 <STRONG><A HREF="suexec.html">BACK TO CONTENTS</A></STRONG>
 </P>
 
-<H3><A NAME="enable">Enabling & Disabling suEXEC</A></H3>
+<H3><A NAME="enable">Enabling &amp; Disabling suEXEC</A></H3>
 <P ALIGN="LEFT">
 After properly installing the <STRONG>suexec</STRONG> wrapper
 executable, you must kill and restart the Apache server.  A simple
@@ -454,7 +455,7 @@ and the error_log for the server to see where you may have gone astray.
 <STRONG><A HREF="suexec.html">BACK TO CONTENTS</A></STRONG>
 </P>
 
-<H3><A NAME="jabberwock">Beware the Jabberwock: Warnings & Examples</A></H3>
+<H3><A NAME="jabberwock">Beware the Jabberwock: Warnings &amp; Examples</A></H3>
 <P ALIGN="LEFT">
 <STRONG>NOTE!</STRONG>  This section may not be complete.  For the latest
 revision of this section of the documentation, see the Apache Group's
@@ -467,33 +468,33 @@ There are a few points of interest regarding the wrapper that can cause
 limitations on server setup.  Please review these before submitting any
 "bugs" regarding suEXEC.
 <UL>
-       <LH><STRONG>suEXEC Points Of Interest</STRONG></LH>
-       <LI>Hierarchy limitations
-       <BLOCKQUOTE>
-       For security and efficiency reasons, all suexec requests must
-       remain within either a top-level document root for virtual
-       host requests, or one top-level personal document root for
-       userdir requests.  For example, if you have four VirtualHosts
-       configured, you would need to structure all of your VHosts'
-       document roots off of one main Apache document hierarchy to
-       take advantage of suEXEC for VirtualHosts. (Example forthcoming.)
-       </BLOCKQUOTE>
-       </LI>
-       <LI>suEXEC's PATH environment variable
-       <BLOCKQUOTE>
-       This can be a dangerous thing to change.  Make certain every
-       path you include in this define is a <STRONG>trusted</STRONG>
-       directory.  You don't want to open people up to having someone
-       from across the world running a trojan horse on them.
-       </BLOCKQUOTE>
-       </LI>
-       <LI>Altering the suEXEC code
-       <BLOCKQUOTE>
-       Again, this can cause <STRONG>Big Trouble</STRONG> if you try
-       this without knowing what you are doing.  Stay away from it
-       if at all possible.
-       </BLOCKQUOTE>
-       </LI>
+        <LH><STRONG>suEXEC Points Of Interest</STRONG></LH>
+        <LI>Hierarchy limitations
+        <BLOCKQUOTE>
+        For security and efficiency reasons, all suexec requests must
+        remain within either a top-level document root for virtual
+        host requests, or one top-level personal document root for
+        userdir requests.  For example, if you have four VirtualHosts
+        configured, you would need to structure all of your VHosts'
+        document roots off of one main Apache document hierarchy to
+        take advantage of suEXEC for VirtualHosts. (Example forthcoming.)
+        </BLOCKQUOTE>
+        </LI>
+        <LI>suEXEC's PATH environment variable
+        <BLOCKQUOTE>
+        This can be a dangerous thing to change.  Make certain every
+        path you include in this define is a <STRONG>trusted</STRONG>
+        directory.  You don't want to open people up to having someone
+        from across the world running a trojan horse on them.
+        </BLOCKQUOTE>
+        </LI>
+        <LI>Altering the suEXEC code
+        <BLOCKQUOTE>
+        Again, this can cause <STRONG>Big Trouble</STRONG> if you try
+        this without knowing what you are doing.  Stay away from it
+        if at all possible.
+        </BLOCKQUOTE>
+        </LI>
 </UL>
 
 <P ALIGN="CENTER">