+ -*- coding: utf-8 -*-
Changes with Apache 2.0.55
*) Added new module mod_version, which provides version dependent
accompanying ap_version_t structure (minor MMN bump).
[André Malo]
+ *) Fix cases where the byterange filter would buffer responses
+ into memory. PR 29962. [Joe Orton]
+
+ *) mod_proxy: Fix over-eager handling of '%' for reverse proxies.
+ PR 15207. [Jim Jagielski]
+
+ *) mod_ldap: Fix various shared memory cache handling bugs.
+ PR 34209. [Joe Orton]
+
+ *) Fix a file descriptor leak when starting piped loggers. PR 33748.
+ [Joe Orton]
+
+ *) mod_ldap: Avoid segfaults when opening connections if using a version
+ of OpenLDAP older than 2.2.21. PR 34618. [Brad Nicholes]
+
+ *) mod_ssl: Fix build with OpenSSL 0.9.8. PR 35757. [William Rowe]
+
*) SECURITY: CAN-2005-2088
core: If a request contains both Transfer-Encoding and Content-Length
headers, remove the Content-Length, mitigating some HTTP Request
Changes with Apache 2.0.54
*) mod_cache: Add CacheIgnoreHeaders directive. PR 30399.
- [Rüiger Plü <r.pluem t-online.de>]
+ [Rüdiger Plüm <r.pluem t-online.de>]
*) mod_ldap: Added the directive LDAPConnectionTimeout to configure
the ldap socket connection timeout value.
[Brad Nicholes]
*) Correctly export all mod_dav public functions.
- [Branko Èibej <brane xbc.nu>]
+ [Branko Čibej <brane xbc.nu>]
*) Add a build script to create a solaris package. [Graham Leggett]
mod_status if ExtendedStatus is enabled. [Jim Jagielski]
*) mod_proxy: Handle client-aborted connections correctly. PR 32443.
- [Janne Hietamäki, Joe Orton]
+ [Janne Hietamäki, Joe Orton]
*) Fix handling of files >2Gb on all platforms (or builds) where
apr_off_t is larger than apr_size_t. PR 28898. [Joe Orton]
depending on the platform. [Jeff Trawick]
*) mod_rewrite: Fix 0 bytes write into random memory position.
- PR 31036. [André Malo]
+ PR 31036. [André Malo]
*) mod_disk_cache: Do not store aborted content. PR 21492.
- [Rüiger Plü <r.pluem t-online.de>]
+ [Rüdiger Plüm <r.pluem t-online.de>]
*) mod_disk_cache: Correctly store cached content type. PR 30278.
- [Rüiger Plü <r.pluem t-online.de>]
+ [Rüdiger Plüm <r.pluem t-online.de>]
*) mod_ldap: prevent the possiblity of an infinite loop in the LDAP
statistics display. PR 29216. [Graham Leggett]
Changes with Apache 2.0.52
- *) Use HTML 2.0 <hr> for error pages. PR 30732 [André Malo]
+ *) Use HTML 2.0 <hr> for error pages. PR 30732 [André Malo]
*) Fix the global mutex crash when the global mutex is never allocated
due to disabled/empty caches. [Jess Holle <jessh ptc.com>]
*) SECURITY: CAN-2004-0747 (cve.mitre.org)
Fix buffer overflow in expansion of environment variables in
- configuration file parsing. [André Malo]
+ configuration file parsing. [André Malo]
*) SECURITY: CAN-2004-0809 (cve.mitre.org)
mod_dav_fs: Fix a segfault in the handling of an indirect lock
*) mod_include no longer checks for recursion, because that's done
in the core. This allows for careful usage of recursive SSI.
- [André Malo]
+ [André Malo]
*) Fix memory leak in the cache handling of mod_rewrite. PR 27862.
- [chunyan sheng <shengperson yahoo.com>, André Malo]
+ [chunyan sheng <shengperson yahoo.com>, André Malo]
*) Include directives no longer refuse to process symlinks on
directories. Instead there's now a maximum nesting level
of included directories (128 as distributed). This is configurable
at compile time using the -DAP_MAX_INCLUDE_DIR_DEPTH switch.
- PR 28492. [André Malo]
+ PR 28492. [André Malo]
*) Win32: apache -k start|restart|install|config can leave stranded
piped logger processes (eg, rotatelogs.exe) due to improper
from being passed through the byterange filter. [Joe Orton]
*) Satisfy directives now can be influenced by a surrounding <Limit>
- container. PR 14726. [André Malo]
+ container. PR 14726. [André Malo]
*) mod_rewrite now officially supports RewriteRules in <Proxy> sections.
- PR 27985. [André Malo]
+ PR 27985. [André Malo]
*) mod_disk_cache: Implement binary format for on-disk header files.
[Brian Akins <bakins web.turner.com>, Justin Erenkrantz]
*) mod_rewrite no longer confuses the RewriteMap caches if
different maps defined in different virtual hosts use the
- same map name. PR 26462. [André Malo]
+ same map name. PR 26462. [André Malo]
*) mod_setenvif: Remove "support" for Remote_User variable which
- never worked at all. PR 25725. [André Malo]
+ never worked at all. PR 25725. [André Malo]
*) Backport from 2.1 / Regression from 1.3: mod_headers now knows
again the functionality of the ErrorHeader directive. But instead
using this misnomer additional flags to the Header directive were
introduced ("always" and "onsuccess", defaulting to the latter).
- PR 28657. [André Malo]
+ PR 28657. [André Malo]
*) Use the higher performing 'httpready' Accept Filter on all platforms
except FreeBSD < 4.1.1. [Paul Querna]
*) mod_usertrack: Escape the cookie name before pasting into the
- regexp. [André Malo]
+ regexp. [André Malo]
*) Extend the SetEnvIf directive to capture subexpressions of the
- matched value. [André Malo]
+ matched value. [André Malo]
*) Recursive Include directives no longer crash. The server stops
including configuration files after a certain nesting level (128
as distributed). This is configurable at compile time using the
- -DAP_MAX_INCLUDE_DEPTH switch. PR 28370. [André Malo]
+ -DAP_MAX_INCLUDE_DEPTH switch. PR 28370. [André Malo]
*) mod_dir: the trailing-slash behaviour is now configurable using the
- DirectorySlash directive. [André Malo]
+ DirectorySlash directive. [André Malo]
*) Allow proxying of resources that are invoked via DirectoryIndex.
- PR 14648, 15112, 29961. [André Malo]
+ PR 14648, 15112, 29961. [André Malo]
*) util_ldap: Switched the lock types on the shared memory cache
from thread reader/writer locks to global mutexes in order to
*) Enable special ErrorDocument value 'default' which restores the
canned server response for the scope of the directive.
- [Geoffrey Young, André Malo]
+ [Geoffrey Young, André Malo]
*) work around MSIE Digest auth bug - if AuthDigestEnableQueryStringHack
is set in r->subprocess_env allow mismatched query strings to pass.
*) Accept URLs for the ServerAdmin directive. If the supplied
argument is not recognized as an URL, assume it's a mail address.
- PR 28174. [André Malo, Paul Querna]
+ PR 28174. [André Malo, Paul Querna]
*) initialize server arrays prior to calling ap_setup_prelinked_modules
so that static modules can push Defines values when registering
PR 22030, 18348. [Joe Orton, Jeff Trawick]
*) mod_alias now emits a warning if it detects overlapping *Alias*
- directives. [André Malo]
+ directives. [André Malo]
*) mod_rewrite no longer turns forward proxy requests into reverse proxy
- requests. PR 28125 [ast domdv.de, André Malo]
+ requests. PR 28125 [ast domdv.de, André Malo]
*) ap_set_sub_req_protocol and ap_finalize_sub_req_protocol are now
exported on Win32 and Netware as well (minor MMN bump). PR 28523.
- [Edward Rudd <eddie omegaware.com>, André Malo]
+ [Edward Rudd <eddie omegaware.com>, André Malo]
*) Restore the ability to disable the use of AcceptEx on Win9x systems
- automatically (broken in 2.0.49). PR 28529. [André Malo]
+ automatically (broken in 2.0.49). PR 28529. [André Malo]
*) <VirtualHost myhost> now applies to all IP addresses for myhost
instead of just the first one reported by the resolver. This
a crypto accelerator engine. [Joe Orton]
*) Allow RequestHeader directives to be conditional. PR 27951.
- [Vincent Deffontaines <vincent gryzor.com>, André Malo]
+ [Vincent Deffontaines <vincent gryzor.com>, André Malo]
*) Allow LimitRequestBody to be reset to unlimited. PR 29106
- [André Malo]
+ [André Malo]
*) Fix a bunch of cases where the return code of the regex compiler
was not checked properly. This affects: mod_setenvif, mod_usertrack,
- mod_proxy, mod_proxy_ftp and core. PR 28218. [André Malo]
+ mod_proxy, mod_proxy_ftp and core. PR 28218. [André Malo]
*) mod_ssl: Fix a potential segfault in the 'shmcb' session cache for
small cache sizes. PR 27751. [Geoff Thorpe <geoff geoffthorpe.net>]
[Bojan Smojver <bojan rexursive.com>]
*) htpasswd no longer refuses to process files that contain empty
- lines. [André Malo]
+ lines. [André Malo]
*) Regression from 1.3: At startup, suexec now will be checked for
availability, the setuid bit and user root. The works only if
httpd is compiled with the shipped APR version (0.9.5).
- PR 28287. [André Malo]
+ PR 28287. [André Malo]
*) Unix MPMs: Stop dropping connections when the file descriptor
is at least FD_SETSIZE. [Jeff Trawick]
locks on some platforms. [Jeff Trawick]
*) mod_headers no longer crashes if an empty header value should
- be added. [André Malo]
+ be added. [André Malo]
*) Fix segfault in mod_expires, which occured under certain
- circumstances. PR 28047. [André Malo]
+ circumstances. PR 28047. [André Malo]
*) htpasswd: use apr_temp_dir_get() and general cleanup
[Guenter Knauf <eflash gmx.net>, Thom May]
MPMs. PR 25520. [Jeff Trawick]
*) Fix mod_include's expression parser to recognize strings correctly
- even if they start with an escaped token. [André Malo]
+ even if they start with an escaped token. [André Malo]
*) Add fatal exception hook for use by diagnostic modules. The hook
is only available if the --enable-exception-hook configure parm
*) mod_setenvif: Fix the regex optimizer, which under circumstances
treated the supplied regex as literal string. PR 24219.
- [André Malo]
+ [André Malo]
*) ap_mpm.h: Fix include guard of ap_mpm.h to reference mpm
- instead of mmn. [André Malo]
+ instead of mmn. [André Malo]
*) mod_rewrite: Catch an edge case, where strange subsequent RewriteRules
- could lead to a 400 (Bad Request) response. [André Malo]
+ could lead to a 400 (Bad Request) response. [André Malo]
*) Keep focus of ITERATE and ITERATE2 on the current module when
the module chooses to return DECLINE_CMD for the directive.
[Allan Edwards, Bill Rowe, Bill Stoddard, Jeff Trawick]
*) Make REMOTE_PORT variable available in mod_rewrite.
- PR 25772. [André Malo]
+ PR 25772. [André Malo]
*) Fix a long delay with CGI requests and keepalive connections on
AIX. [Jeff Trawick]
*) mod_autoindex: Add 'XHTML' option in order to allow switching between
- HTML 3.2 and XHTML 1.0 output. PR 23747. [André Malo]
+ HTML 3.2 and XHTML 1.0 output. PR 23747. [André Malo]
*) Add XHTML Document Type Definitions to httpd.h (minor MMN bump).
- [André Malo]
+ [André Malo]
*) mod_ssl: Advertise SSL library version as determined at run-time rather
than at compile-time. PR 23956. [Eric Seidel <seidel apple.com>]
*) mod_rewrite: In external rewrite maps lookup keys containing
a newline now cause a lookup failure. PR 14453.
- [Cedric Gavage <cedric.gavage unixtech.be>, André Malo]
+ [Cedric Gavage <cedric.gavage unixtech.be>, André Malo]
*) Backport major overhaul of mod_include's filter parser from 2.1.
The new parser code is expected to be more robust and should
catch all of the edge cases that were not handled by the previous one.
The 2.1 external API changes were hidden by a wrapper which is
- expected to keep the API backwards compatible. [André Malo]
+ expected to keep the API backwards compatible. [André Malo]
*) Add a hook (insert_error_filter) to allow filters to re-insert
themselves during processing of error responses. Enable mod_expires
*) mod_dav: Use bucket brigades when reading PUT data. This avoids
problems if the data stream is modified by an input filter. PR 22104.
- [Tim Robbins <tim robbins.dropbear.id.au>, André Malo]
+ [Tim Robbins <tim robbins.dropbear.id.au>, André Malo]
- *) Fix RewriteBase directive to not add double slashes. [André Malo]
+ *) Fix RewriteBase directive to not add double slashes. [André Malo]
- *) Improve 'configure --help' output for some modules. [Astrid Keßler]
+ *) Improve 'configure --help' output for some modules. [Astrid Keßler]
*) Correct UseCanonicalName Off to properly check incoming port number.
[Jim Jagielski]
*) SECURITY: CVE-2003-0020 (cve.mitre.org)
Escape arbitrary data before writing into the errorlog. Unescaped
errorlogs are still possible using the compile time switch
- "-DAP_UNSAFE_ERROR_LOG_UNESCAPED". [Geoffrey Young, André Malo]
+ "-DAP_UNSAFE_ERROR_LOG_UNESCAPED". [Geoffrey Young, André Malo]
*) mod_autoindex / core: Don't fail to show filenames containing
- special characters like '%'. PR 13598. [André Malo]
+ special characters like '%'. PR 13598. [André Malo]
*) mod_status: Report total CPU time accurately when using a threaded
MPM. PR 23795. [Jeff Trawick]
correctly. PR 24232. [Thom May]
*) Restore the ability to add a description for directories that
- don't contain an index file. (Broken in 2.0.48) [André Malo]
+ don't contain an index file. (Broken in 2.0.48) [André Malo]
*) Fix a problem with the display of empty variables ("SetEnv foo") in
mod_include. PR 24734 [Markus Julen <mj zermatt.net>]
*) mod_expires: Initialize ExpiresDefault to NULL instead of "" to
avoid reporting an Internal Server error if it is used without
having been set in the httpd.conf file. PR: 23748, 24459
- [Andre Malo, Liam Quinn <liam htmlhelp.com>]
+ [André Malo, Liam Quinn <liam htmlhelp.com>]
*) mod_autoindex: Don't omit the <tr> start tag if the SuppressIcon
option is set. PR 21668. [Jesse Tie-Ten-Quee <highos highos.com>]
*) mod_include no longer allows an ETag header on 304 responses.
- PR 19355. [Geoffrey Young <geoff apache.org>, André Malo]
+ PR 19355. [Geoffrey Young <geoff apache.org>, André Malo]
*) EBCDIC: Convert header fields to ASCII before sending (broken
since 2.0.44). [Martin Kraemer]
*) SECURITY: CAN-2003-0542 (cve.mitre.org)
Fix buffer overflows in mod_alias and mod_rewrite which occurred
if one configured a regular expression with more than 9 captures.
- [André Malo]
+ [André Malo]
*) mod_include: fix segfault which occured if the filename was not
set, for example, when processing some error conditions.
- PR 23836. [Brian Akins <bakins web.turner.com>, André Malo]
+ PR 23836. [Brian Akins <bakins web.turner.com>, André Malo]
*) fix the config parser to support <Foo>..</Foo> containers (no
arguments in the opening tag) supported by httpd 1.3. Without
compressed file extensions. [Roy Fielding]
*) mod_rewrite: Don't die silently when failing to open RewriteLogs.
- PR 23416. [André Malo]
+ PR 23416. [André Malo]
*) mod_rewrite: Fix mod_rewrite's support of the [P] option to send
rewritten request using "proxy:". The code was adding multiple "proxy:"
[<bjorn exoweb.net>]
*) mod_log_config: Fix %b log format to write really "-" when 0 bytes
- were sent (e.g. with 304 or 204 response codes). [Astrid Keßler]
+ were sent (e.g. with 304 or 204 response codes). [Astrid Keßler]
*) Modify ap_get_client_block() to note if it has seen EOS.
[Justin Erenkrantz]
*) Fix a bug, where mod_deflate sometimes unconditionally compressed the
content if the Accept-Encoding header contained only other tokens than
- "gzip" (such as "deflate"). PR 21523. [Joe Orton, André Malo]
+ "gzip" (such as "deflate"). PR 21523. [Joe Orton, André Malo]
*) Avoid an infinite recursion, which occured if the name of an included
config file or directory contained a wildcard character. PR 22194.
- [André Malo]
+ [André Malo]
*) mod_ssl: Fix a problem setting variables that represent the
client certificate chain. PR 21371 [Jeff Trawick]
*) mod_rewrite: Ignore RewriteRules in .htaccess files if the directory
containing the .htaccess file is requested without a trailing slash.
- PR 20195. [André Malo]
+ PR 20195. [André Malo]
*) ab: Overlong credentials given via command line no longer clobber
- the buffer. [André Malo]
+ the buffer. [André Malo]
*) mod_deflate: Don't attempt to hold all of the response until we're
done. [Justin Erenkrantz]
*) Remember an authenticated user during internal redirects if the
redirection target is not access protected and pass it
to scripts using the REDIRECT_REMOTE_USER environment variable.
- PR 10678, 11602. [André Malo]
+ PR 10678, 11602. [André Malo]
*) mod_include: Fix a trio of bugs that would cause various unusual
sequences of parsed bytes to omit portions of the output stream.
- PR 21095. [Ron Park <ronald.park cnet.com>, André Malo, Cliff Woolley]
+ PR 21095. [Ron Park <ronald.park cnet.com>, André Malo, Cliff Woolley]
*) Update the header token parsing code to allow LWS between the
token word and the ':' seperator. [PR 16520]
[Joe Schaefer <joe+gmane sunstarsys.com>]
*) Added FreeBSD directory layout. PR 21100.
- [Sander Holthaus <info orangexl.com>, André Malo]
+ [Sander Holthaus <info orangexl.com>, André Malo]
*) Fix NULL-pointer issue in ab when parsing an incomplete or non-HTTP
- response. PR 21085. [Glenn Nielsen <glenn apache.org>, André Malo]
+ response. PR 21085. [Glenn Nielsen <glenn apache.org>, André Malo]
*) mod_rewrite: Perform child initialization on the rewrite log lock.
This fixes a log corruption issue when flock-based serialization
infinite loops. The new LimitInternalRecursion directive configures
limits of subsequent internal redirects and nested subrequests, after
which the request will be aborted. PR 19753 (and probably others).
- [William Rowe, Jeff Trawick, André Malo]
+ [William Rowe, Jeff Trawick, André Malo]
*) core_output_filter: don't split the brigade after a FLUSH bucket if
it's the last bucket. This prevents creating unneccessary empty
*) mod_negotiation: Introduce "prefer-language" environment variable,
which allows to influence the negotiation process on request basis
- to prefer a certain language. [André Malo]
+ to prefer a certain language. [André Malo]
*) Make mod_expires' ExpiresByType work properly, including for
dynamically-generated documents. [Ken Coar, Bill Stoddard]
*) Fix mod_rewrite's handling of absolute URIs. The escaping routines
now work scheme dependent and the query string will only be
- appended if supported by the particular scheme. [André Malo]
+ appended if supported by the particular scheme. [André Malo]
*) Add another check for already compressed content in mod_deflate.
PR 19913. [Tsuyoshi SASAMOTO <nazonazo super.win.ne.jp>]
processing the request via new %P formats. [Jeff Trawick]
*) Use appropriate language codes for Czech (cs) and Traditional Chinese
- (zh-tw) in default config files. PR 9427. [André Malo]
+ (zh-tw) in default config files. PR 9427. [André Malo]
*) mod_auth_ldap: Use generic whitespace character class when parsing
"require" directives, instead of literal spaces only. PR 17135.
- [André Malo]
+ [André Malo]
*) Hook mod_rewrite's type checker before mod_mime's one. That way the
RewriteRule [T=...] Flag should work as expected now. PR 19626.
- [André Malo]
+ [André Malo]
*) htpasswd: Check the processed file on validity. If a line is not empty
and not a comment, it must contain at least one colon. Otherwise exit
*) When using Redirect in directory context, append requested query
string if there's no one supplied by configuration. PR 10961.
- [André Malo]
+ [André Malo]
*) Unescape the supplied wildcard pattern in mod_autoindex. Otherwise
the pattern will not always match as desired. PR 12596.
- [André Malo]
+ [André Malo]
*) mod_autoindex now emits and accepts modern query string parameter
delimiters (;). Thus column headers no longer contain unescaped
- ampersands. PR 10880 [André Malo]
+ ampersands. PR 10880 [André Malo]
*) Enable ap_sock_disable_nagle for Windows. This along with the
addition of APR_TCP_NODELAY_INHERITED to apr.hw will cause Nagle
characters) in mod_log_config to make a clear distinction between
client-supplied strings (with special characters) and server-side
strings. This was already introduced in version 1.3.25.
- [André Malo]
+ [André Malo]
*) mod_deflate: Check also err_headers_out for an already set
Content-Encoding: gzip header. This prevents gzip compressed content
from a CGI script from being compressed once more. PR 17797.
- [André Malo]
+ [André Malo]
Changes with Apache 2.0.45
*) Fix path handling of mod_rewrite, especially on non-unix systems.
There was some confusion between local paths and URL paths.
- PR 12902. [André Malo]
+ PR 12902. [André Malo]
*) Prevent endless loops of internal redirects in mod_rewrite by
aborting after exceeding a limit of internal redirects. The
limit defaults to 10 and can be changed using the RewriteOptions
- directive. PR 17462. [André Malo]
+ directive. PR 17462. [André Malo]
*) Win32: Avoid busy wait (consuming all the CPU idle cycles) when
all worker threads are busy.
*) mod_deflate: Extend the DeflateFilterNote directive to
allow accurate logging of the filter's in- and outstream.
- [André Malo]
+ [André Malo]
*) Allow SSLMutex to select/use the full range of APR locking
mechanisms available to it. Also, fix the bug that SSLMutex uses
Martin Kutschker <martin.t.kutschker blackbox.net>]
*) Restore the ability of htdigest.exe to create files that contain
- more than one user. PR 12910. [André Malo]
+ more than one user. PR 12910. [André Malo]
*) Improve binary compatibility of the core between debug (aka
maintainer-mode) and a non-debug compile.
*) mod_usertrack: don't set the cookie in subrequests. This works
around the problem that cookies were set twice during fast internal
- redirects. PR 13211. [André Malo]
+ redirects. PR 13211. [André Malo]
*) mod_autoindex no longer forgets output format and enabled version
- sort in linked column headers. [André Malo]
+ sort in linked column headers. [André Malo]
*) Use .sv instead of .se as extension for Swedish documents in the
- default configuration. PR 12877. [André Malo]
+ default configuration. PR 12877. [André Malo]
*) Updated mod_ldap and mod_auth_ldap to support the Novell LDAP SDK SSL
and standardized the LDAP SSL support across the various LDAP SDKs.
[Justin Erenkrantz]
*) Fix segfault which occurred when a section in an included
- configuration file was not closed. PR 17093. [André Malo]
+ configuration file was not closed. PR 17093. [André Malo]
*) Enhance the behavior of mod_isapi's WriteClient() callback to
provide better emulation for isapi modules that presume that the
*) Hook mod_proxy's fixup before mod_rewrite's fixup, so that by
mod_rewrite proxied URLs will not be escaped accidentally by
- mod_proxy's fixup. PR 16368 [André Malo]
+ mod_proxy's fixup. PR 16368 [André Malo]
*) While processing filters on internal redirects, remember seen EOS
buckets also in the request structure of the redirect issuer(s). This
prevents filters (such as mod_deflate) from adding garbage to the
- response. PR 14451. [André Malo]
+ response. PR 14451. [André Malo]
*) suexec: Be more pedantic when cleaning environment. Clean it
immediately after startup. PR 2790, 10449.
- [Jeff Stewart <jws purdue.edu>, André Malo]
+ [Jeff Stewart <jws purdue.edu>, André Malo]
*) Fix apxs to insert LoadModule directives only outside of sections.
- PR 8712, 9012. [André Malo]
+ PR 8712, 9012. [André Malo]
*) Fix suexec compile error under SUNOS4, where strerror() doesn't
exist. PR 5913, 9977.
*) mod_auth_digest no longer tries to guess AuthDigestDomain, if it's
not specified. Now it assumes "/" as already documented. PR 16937.
- [André Malo]
+ [André Malo]
*) Try to log an error if a piped log program fails. Try to
restart a piped log program in more failure situations. Fix an
[Allen Edwards, William Rowe]
*) Fix bug where 'Satisfy Any' without an AuthType lost all MIME
- information (and more). Related to PR 9076. [André Malo]
+ information (and more). Related to PR 9076. [André Malo]
*) mod_file_cache: fix segfault serving mmaped cached files.
[Bill Stoddard]
[Thom May <thom planetarytramp.net>]
*) mod_rewrite: Allow "RewriteEngine Off" even if no "Options FollowSymlinks"
- (or SymlinksIfOwnermatch) is set. PR 12395. [André Malo]
+ (or SymlinksIfOwnermatch) is set. PR 12395. [André Malo]
*) apxs: Include any special APR ld flags when linking the DSO.
This resolves problems on AIX when building a DSO with apxs+gcc.
PR 14256 [Graham Leggett]
*) Fix the building of cgi command lines when the query string
- contains '='. PR 13914 [Ville Skyttä <ville.skytta iki.fi>,
+ contains '='. PR 13914 [Ville Skyttä <ville.skytta iki.fi>,
Jeff Trawick]
*) Rename CacheMaxStreamingBuffer to MCacheMaxStreamingBuffer. Move
*) Replace APU_HAS_LDAPSSL_CLIENT_INIT with APU_HAS_LDAP_NETSCAPE_SSL
as set by apr-util in util_ldap.c. This should allow mod_ldap
- to work with the Netscape/Mozilla LDAP library. [Øyvin Sømme
+ to work with the Netscape/Mozilla LDAP library. [Øyvin Sømme
<somme oslo.westerngeco.slb.com>, Graham Leggett]
*) Fix critical bug in new --enable-v4-mapped configure option
systems. [hiroyuki hanai <hanai imgsrc.co.jp>]
*) mod_setenvif: Fix BrowserMatchNoCase support for non-regex
- patterns [André Malo <nd perlig.de>]
+ patterns [André Malo <nd perlig.de>]
*) Add version string to provider API. [Justin Erenkrantz]
*) mod_negotiation: Set the appropriate mime response headers
(Content-Type, charset, Content-Language and Content-Encoding)
for negotated type-map "Body:" responses (such as the error
- pages.) [André Malo <nd perlig.de>]
+ pages.) [André Malo <nd perlig.de>]
*) mod_log_config: Allow '%%' escaping in CustomLog format
strings to insert a literal, single '%'.
- [André Malo <nd perlig.de>]
+ [André Malo <nd perlig.de>]
*) mod_autoindex: AddDescription directives for directories
now work as in Apache 1.3, where no trailing '/' is
[Frederic DONNAT <frederic.donnat zencod.com>]
*) Always emit Vary header if mod_deflate is involved in the
- request. [Andre Malo <nd perlig.de>]
+ request. [André Malo <nd perlig.de>]
*) mod_isapi: Stop unsetting the 'empty' query string result with
a NULL argument in ecb->lpszQueryString, eliminating segfaults
*) Update the xslt and css to give the documentation a more
modern style.
- [André Malo <nd perlig.de>, Gernot Winkler <greh o3media.de>]
+ [André Malo <nd perlig.de>, Gernot Winkler <greh o3media.de>]
*) Fix some bucket memory leaks in the chunking code
[Joe Schaefer <joe+apache sunstarsys.com>]
log file [Ian Holsman]
*) Correct ISAPIReadAheadBuffer to default to 49152, per mod_isapi docs.
- [André Malo, Astrid Keßler <kess kess-net.de>]
+ [André Malo, Astrid Keßler <kess kess-net.de>]
*) Fix Segfault in mod_cache. [Kris Verbeeck <Kris.Verbeeck ubizen.com>]
*) Make apxs look in the correct directory for envvars. It was
broken when sbindir != bindir. PR 8869
- [Andreas Sundström <sunkan zappa.cx>]
+ [Andreas Sundström <sunkan zappa.cx>]
*) Fix mod_deflate corruption when using multiple buckets. PR 9014.
[Asada Kazuhisa <kaz asada.sytes.net>]
*) Fix a cosmetic problem with mod_include. Non-existant SSI vars
used to appear as '(none', without the closing paren.
- [Günter Knauf <eflash gmx.net>]
+ [Günter Knauf <eflash gmx.net>]
*) Improve the exports generating awk script. In the past, we had
work around problems in the awk script by avoiding some #if and
but APR needs the check too, and I suspect other applications will
as well. APR now defines APR_INADDR_NONE, which is always a valid
value on all platforms.
- [Branko Èibej <brane xbc.nu>]
+ [Branko Čibej <brane xbc.nu>]
*) Destroy the pthread mutex in lock_intra_cleanup() for PR#6824.
[Shuichi Kitaguchi <ki hh.iij4u.or.jp>]
[Ryan Bloom]
*) apr_psprintf doesn't understand %lld as a format. Make it %ld.
- [Tomas "Ögren" <stric ing.umu.se>]
+ [Tomas Ögren <stric ing.umu.se>]
*) APR pipes on Unix and Win32 are now cleaned up automatically when the
associated pool goes away. (APR pipes on OS/2 were already had this
-cache result for "struct rlimit"
-compile all helper programs with native and cross compiler
and use the native version to generate header file
- ["Rüdiger" Kuhlmann <Tadu gmx.de>]
+ [Rüdiger Kuhlmann <Tadu gmx.de>]
*) Prepare our autoconf setup for autoconf 2.14a and for cross-
compiling.
- ["Rüdiger" Kuhlmann <Tadu gmx.de>]
+ [Rüdiger Kuhlmann <Tadu gmx.de>]
*) Fix a bug where a client which only sends \n to delimit header
lines (netcat) gets a strange looking HTTP_NOT_IMPLEMENTED
*) Brought mod_auth_digest up to synch with 1.3, fixed ap_time_t-
related bugs, and changed shmem/locking to use apr API. Shared-mem
is currently disabled, however, because of problems with graceful
- restarts. [Ronald Tschalär]
+ restarts. [Ronald Tschalär]
*) Fix corruption of IFS variable in --with-module= handling.
Depending on the user's shell or customization thereof, there
*) Print out pointer to Rule DEV_RANDOM when truerand lib not found.
Fix test-compile check to check for randbyte instead of trand32.
Use ap_base64encode_binary/decode instead of copy in mod_auth_digest.c
- and tweak to make Amaya happier. [Ronald Tschalär]
+ and tweak to make Amaya happier. [Ronald Tschalär]
*) Ensure that the installed expat include files are world readable,
just like the other header files. [Martin Kraemer]
name on DYNIX -- changed to mmap_rec. [Roy Fielding] PR#4735
*) Added updated mod_digest as modules/experimental/mod_auth_digest.
- [Ronald Tschalär <ronald innovation.ch>]
+ [Ronald Tschalär <ronald innovation.ch>]
*) Fix a memory leak where the module counts were getting messed
up across restarts. [David Harris <dharris drh.net>]
*) Fix buffer overflows in ap_uuencode and ap_uudecode pointed out
by "Peter 'Luna' Altberg <peter altberg.nu>" and PR#3422
- [Peter 'Luna' Altberg <peter altberg.nu>, Ronald Tschalär]
+ [Peter 'Luna' Altberg <peter altberg.nu>, Ronald Tschalär]
*) Make {Set,Unset,Pass}Env per-directory instead of per-server.
[Ben Laurie]
8 bit characters on a machine with signed char may produced
incorrect results. Additionally ap_uuencode() should now
work correctly on EBCDIC platforms.
- [Ronald Tschalär <ronald innovation.ch>] PR#3411
+ [Ronald Tschalär <ronald innovation.ch>] PR#3411
*) WIN32: Binary installer now runs the configuration DLL before
the reboot prompt (which is only given if MSVCRT.DLL system
*) ap_md5_binary() was using sprintf() rather than a table lookup
to convert binary bytes to hex digits.
- [Ronald Tschalär <ronald innovation.ch>] PR#3409
+ [Ronald Tschalär <ronald innovation.ch>] PR#3409
*) Fix SEGV in TCN negotiation if no variants are acceptable.
[Martin Plechsmid <plechsmi karlin.mff.cuni.cz>] PR#1987
*) After a SIGHUP the listening sockets in the parent weren't
properly marked for closure on fork().
- [Jürgen Keil <jk tools.de>] PR#2000
+ [Jürgen Keil <jk tools.de>] PR#2000
*) Allow %2F in two situations: 1) it is in the query part of the URI,
therefore not exposed to %2F -> '/' translations and 2) the request
handle multiple Listen directives. [Marc Slemko] PR#872
*) Inherit a bugfix to fnmatch.c from FreeBSD sources.
- ["[KOI8-R] áÎÄÒÅÊ þÅÒÎÏ×" <ache nagual.pp.ru>] PR#1311
+ [Андрей Чернов <ache nagual.pp.ru>] PR#1311
*) When a configuration parse complained about a bad directive,
the logger would use whatever (unrelated) value was in errno.
RELEASE SHOWSTOPPERS:
- * Various fixes to T-E and C-L processing from trunk
-
- Refactor mod_proxy_http.c's Transfer-Encoding/Content-Length elections
- since they didn't follow RFC 2616, in fact didn't seem to make much
- sense at all. Patch to migrate request-body-handling from trunk/ based
- on 2.1-dev request body handling behavior (although just a bit more
- conservative on the side of C-L spooling)...
- http://people.apache.org/~wrowe/httpd-2.0-proxy-request-3.patch
- Revert r219061 to properly test this patch, as r219061 masks the
- underlying bug (although it is a -good- patch in and of itself).
+ * Copy the backport branch of all of the mod_proxy_http.c's request body
+ handling security, protocol and bug fixes; by svn copy'ing the file
+ httpd/httpd/branches/proxy-reqbody-2.0.x/modules/proxy/proxy_http.c back to
+ httpd/branches/2.0.x/... preserving the detail of all of the individually
+ backported changes.
+1: wrowe, jim
- -1: jorton: this is a massive patch and extremely hard to review
- for actual interesting content; it is mixed in with all sorts
- of unrelated stuff. It needs to at least be split up or
- the unrelated stuff removed.
-
- unrelated change: s/apr_strnatcasecmp/strcasecmp/
- unrelated change: s/b/bb/ on variable+parameter names a few times
- unrelated change: whitespaces changes all over the shop
- spurious change:? send_request_body() appears to have been inlined
- unrelated change: Via header handling
-
- trawick noted on list: we elected C-L not for efficiency, but because
- it's the most widely supported [paraphrasing]
- wrowe notes: I agree - this new patch always chooses C-L for any
- C-L body received. If the origin kicks out LENGTH_REQUIRED
- for a T-E body it's always up to the client to react.
- Note proxy-sendchunks can override this behavior.
- roy Notes on list: we must always prefer C-L if it's going to fit
- in our brigade.
- wrowe good point; the revised patch prereads MAX_MEM_SPOOL and will
- try reading that before choosing C-L or T-E.
- wrowe adds; After testing, I've determined one brigade isn't enough,
- so I've extended this to a loop up to MAX_MEM_SPOOL, we will
- fetch up enough body to fill MAX_MEM_SPOOL and hopefully
- hit the C-L code path most of the time.
-
- trawick We are counting bytes in stream_reqbody_cl but filters can
- change the size? [p]
- wrowe Yes - which is why the patch prefers spool_reqbody_cl unless
- the filter stack is unchanged from proto_input_filters. The
- protocol filters shouldn't be changing content size. And when
- it happens, we have to barf or we have a split request.
- The old behavior was worse; we would stream the request body
- in additional cases without looking to see if the byte count
- matched Content-Length. Easy opportunity for split requests.
-
- trawick What specifically was done for conformance to RFC 2616? [p]
- wrowe Elect the appropriate body handling, and ensure that body
- request contains the required *single* T-E or C-L header,
- and there are far few code paths to stream_reqbody_cl which
- was most likely to create split requests by reporting the
- wrong C-L.
-
- trawick Please split philosophy from rfc violations from security
- fixes in the CHANGES log? [p]
- wrowe The others are all a bit to intertwined, the Watchfire report
- spelled out that it's different behavior and RFC 2616 deviations
- that cause the vulnerability, so I don't see how we can divide
- the issues of correctly sending the body and choosing the
- transport flavor.
+ -1:
+ For a complete history of individual unit changes, see r230703 - r230744 in
+ http://svn.apache.org/viewcvs.cgi/httpd/httpd/branches/proxy-reqbody-2.0.x/
+ [...] modules/proxy/proxy_http.c?&view=log
+ Cite the specific patch with justification for each specific objection.
-PATCHES ACCEPTED TO BACKPORT FROM TRUNK:
- [ please append new backports at the end of this list not the top. ]
+ Suggested; revert r219061 to thoroughly test this patch, as r219061 masks
+ some underlying bugs (although it is a -good- patch in and of itself and
+ provides additional protection to other content-handling modules).
- *) ap_proxy_canonenc() is over-eager in handling '%' for reverse
- proxies (PR: 29554).
- Index: modules/proxy/proxy_util.c
- - if (isenc && ch == '%') {
- + if (isenc && (isenc != PROXYREQ_REVERSE) && ch == '%') {
+ * TRACE must not have a request body per RFC2616; see the -trace.patch
+ below for one of two alternatives. The other alternative; simply
+ hack mod_proxy.c to reject TRACE when a body is seen, again see that
+ -trace.patch for an illustration.
- +1: jim, pquerna, wrowe
- *) Fix fd leak in piped logging code, fix error handling, and remove
- dead errno handling.
- http://svn.apache.org/viewcvs?rev=170441&view=rev
- http://svn.apache.org/viewcvs?rev=170537&view=rev
- http://svn.apache.org/viewcvs?rev=170719&view=rev
- all-in-one patch incremental to the PR 26467 fix:
- http://people.apache.org/~jorton/ap_pipedlog2.diff
- +1: jorton, trawick, wrowe
- [yes, I will write a CHANGES entry too]
+PATCHES ACCEPTED TO BACKPORT FROM TRUNK:
+ [ please append new backports at the end of this list not the top. ]
*) several changes to improve logging of connection-oriented errors, including
ap_log_cerror() API (needs minor bump in addition to changes below)
Votes from before the integration branch:
+1: jerenkrantz, wrowe (trivial, would even be cool in 1.3)
+ *) proxy FTP: Fix confusion about globbing characters which could lead
+ to getting a directory listing when a file was requested. PR 34512.
+ 2.1 patch was http://svn.apache.org/viewcvs?rev=179704&view=rev
+ 2.0 version: http://people.apache.org/~trawick/179704-20.txt
+ +1: trawick, jorton, wrowe
+
+ *) Prevent bad dereferencing of non-existent req struct in
+ mod_auth_ldap's mod_auth_ldap_auth_checker() if
+ mod_auth_ldap_check_user_id() was never (fully) called.
+ Similar behavior to that in 2.1/2.2.
+ http://people.apache.org/~jim/mod_auth_ldap-2.0.patch
+ +1: jim, minfrin, bnicholes
+
+ *) Add httxt2dbm for creating RewriteMap DBM Files.
+ http://svn.apache.org/viewcvs.cgi?rev=209539&view=rev
+ +1: pquerna, jorton, trawick
PATCHES PROPOSED TO BACKPORT FROM TRUNK:
[ please place SVN revisions from trunk here, so it is easy to
identify exactly what the proposed changes are! ]
+ *) Fix CAN-2005-2491, integer overflow in pcre.
+ http://svn.apache.org/viewcvs?rev=233493&view=rev
+ rediff for 2.0: http://people.apache.org/~jorton/CAN-2005-2491.patch
+ test case: perl-framework/t/security/CAN-2005-2491.t
+ +1: jorton, nd
+
+ *) Remove the base href tag from mod_proxy_ftp, as it breaks relative
+ links for clients not using an Authorization header.
+ modules/proxy/mod_proxy_ftp.c: r231044
+ +1: minfrin, jim, nd
+
*) Correct RFC 2616 non-compliance by refusing to proxy a request body
in a TRACE request, unless TraceEnable extended is configured.
Introduces TraceEnable [on|off|extended] to give the administrator
http://svn.apache.org/viewcvs?rev=178262&view=rev
(With 2.0.x it is the same code in the same function, but in
a different source file.)
- +1: trawick
+ +1: trawick, wrowe, nd
*) Support the suppress-error-charset setting, as with Apache 1.3.x.
PR 31274. (current docs say it works with Apache from 2.0.40 ;) )
http://svn.apache.org/viewcvs?rev=170354&view=rev
- +1: trawick, jorton
-
- *) proxy FTP: Fix confusion about globbing characters which could lead
- to getting a directory listing when a file was requested. PR 34512.
- 2.1 patch was http://svn.apache.org/viewcvs?rev=179704&view=rev
- 2.0 version: http://people.apache.org/~trawick/179704-20.txt
- +1: trawick, jorton
+ +1: trawick, jorton, nd
*) mod_mime_magic: Handle CRLF-format magic files so that it works with
the default installation on Windows.
http://svn.apache.org/viewcvs?rev=179622&view=rev
- +1: trawick
+ +1: trawick, wrowe
+ wrowe asks: is it possible to simply strip trailing whitespace instead
+ of special handling for the end of line characters?
+ Seems more portable.
+ trawick says: makes sense; searching for bandwidth
*) mod_cache: Fix handling of 'Vary: *". PR 16125.
Trunk: r180341
includes.
http://svn.apache.org/viewcvs?rev=179763&view=rev
2.0.x patch: http://people.apache.org/~jorton/ap_pr12655.patch
+ test case in perl-framework/t/modules/include.t
PR: 12655
- +1: jorton
+ +1: jorton, nd
*) mod_auth_digest: Fix hostinfo validation for CONNECT requests.
http://svn.apache.org/viewcvs.cgi?rev=193127&view=rev
- +1: jorton
+ +1: jorton, nd
- *) Add httxt2dbm for creating RewriteMap DBM Files.
- http://svn.apache.org/viewcvs.cgi?rev=209539&view=rev
- +1: pquerna
+ *) Reverse Proxy fixes: <Location> bug and Cookie support
+ Patch is at
+ http://marc.theaimsgroup.com/?l=apache-httpd-dev&m=112365629308138&q=p4
+ and is in production with Clients.
+ +1: niq, nd
+ niq: I'm seeing *a lot* of demand for this.
PATCHES TO BACKPORT THAT ARE ON HOLD OR NOT GOING ANYWHERE SOON:
CURRENT VOTES:
- * Reverse proxy cookie patch from PR#10722 (c.f. comment 16)
- +1: niq
-
* Promote mod_ldap and mod_auth_ldap from experimental to
non experimental status.
+1: bnicholes, wrowe
<div class="example"><p><code>
- <VirtualHost www.abc.com> <br />
- ServerAdmin webgirl@abc.com <br />
+ <VirtualHost www.abc.dom> <br />
+ ServerAdmin webgirl@abc.dom <br />
DocumentRoot /www/abc <br />
</VirtualHost>
</code></p></div>
responderá a las peticiones que se produzcan. El ejemplo
mostrado arriba no incluye la direccion IP, de manera que Apache
tiene que usar una resolución DNS para encontrar la
- dirección IP correspondiente a <code>www.abc.com</code>. Si
+ dirección IP correspondiente a <code>www.abc.dom</code>. Si
por alguna razón la resolución DNS no está
disponible en el momento en que su servidor está analizando
sintánticamente su fichero de configuración, entonces
hagan a ese host virtual (en las versiones de Apache anteriores a
la 1.2 el servidor ni siquiera se iniciaba).</p>
- <p>Suponga que <code>www.abc.com</code> tiene como dirección
+ <p>Suponga que <code>www.abc.dom</code> tiene como dirección
IP la 10.0.0.1. Considere la siguiente configuración:</p>
<div class="example"><p><code>
<VirtualHost 10.0.0.1> <br />
- ServerAdmin webgirl@abc.com <br />
+ ServerAdmin webgirl@abc.dom <br />
DocumentRoot /www/abc <br />
</VirtualHost>
</code></p></div>
<div class="example"><p><code>
<VirtualHost 10.0.0.1> <br />
- ServerName www.abc.com <br />
- ServerAdmin webgirl@abc.com <br />
+ ServerName www.abc.dom <br />
+ ServerAdmin webgirl@abc.dom <br />
DocumentRoot /www/abc <br />
</VirtualHost>
</code></p></div>
de las dos búsquedas de DNS mencionadas arriba falla para
cualquiera de sus hosts virtuales. En algunos casos estas
búsquedas DNS puede que no estén bajo su control; por
- ejemplo, si <code>abc.com</code> es uno de sus clientes y ellos
+ ejemplo, si <code>abc.dom</code> es uno de sus clientes y ellos
controlan su propia DNS, pueden forzar a su servidor (pre-1.2) a
fallar al iniciarse simplemente borrando el registro
- <code>www.abc.com</code>.</p>
+ <code>www.abc.dom</code>.</p>
<p>Otra formas pueden ser bastante más complicadas. Fíjese
en esta configuración:</p>
<div class="example"><p><code>
- <VirtualHost www.abc.com> <br />
- ServerAdmin webgirl@abc.com <br />
+ <VirtualHost www.abc.dom> <br />
+ ServerAdmin webgirl@abc.dom <br />
DocumentRoot /www/abc <br />
</VirtualHost> <br />
<br />
</code></p></div>
<p>Suponga que ha asignado la dirección 10.0.0.1 a
- <code>www.abc.com</code> y 10.0.0.2 a
+ <code>www.abc.dom</code> y 10.0.0.2 a
<code>www.def.com</code>. Todavía más, suponga que
<code>def.com</code> tiene el control de sus propias DNS. Con esta
configuración ha puesto <code>def.com</code> en una
posición en la que puede robar todo el trafico destinado a
- <code>abc.com</code>. Para conseguirlo, todo lo que tiene que
+ <code>abc.dom</code>. Para conseguirlo, todo lo que tiene que
hacer es asignarle a <code>www.def.com</code> la dirección
10.0.0.1. Como ellos controlan sus propias DNS no puede evitar que
apunten el registro <code>www.def.com</code> a donde quieran.</p>
<p>Las peticiones dirigidas a la dirección 10.0.0.1
(incluídas aquellas en las los usuarios escriben URLs de tipo
- <code>http://www.abc.com/whatever</code>) serán todas
+ <code>http://www.abc.dom/whatever</code>) serán todas
servidas por el host virtual <code>def.com</code>. Comprender por
qué ocurre esto requiere una discusión más profunda
acerca de como Apache asigna las peticiones que recibe a los hosts
<title>Un ejemplo sencillo</title>
<example>
- <VirtualHost www.abc.com> <br />
- ServerAdmin webgirl@abc.com <br />
+ <VirtualHost www.abc.dom> <br />
+ ServerAdmin webgirl@abc.dom <br />
DocumentRoot /www/abc <br />
</VirtualHost>
</example>
responderá a las peticiones que se produzcan. El ejemplo
mostrado arriba no incluye la direccion IP, de manera que Apache
tiene que usar una resolución DNS para encontrar la
- dirección IP correspondiente a <code>www.abc.com</code>. Si
+ dirección IP correspondiente a <code>www.abc.dom</code>. Si
por alguna razón la resolución DNS no está
disponible en el momento en que su servidor está analizando
sintánticamente su fichero de configuración, entonces
hagan a ese host virtual (en las versiones de Apache anteriores a
la 1.2 el servidor ni siquiera se iniciaba).</p>
- <p>Suponga que <code>www.abc.com</code> tiene como dirección
+ <p>Suponga que <code>www.abc.dom</code> tiene como dirección
IP la 10.0.0.1. Considere la siguiente configuración:</p>
<example>
<VirtualHost 10.0.0.1> <br />
- ServerAdmin webgirl@abc.com <br />
+ ServerAdmin webgirl@abc.dom <br />
DocumentRoot /www/abc <br />
</VirtualHost>
</example>
<example>
<VirtualHost 10.0.0.1> <br />
- ServerName www.abc.com <br />
- ServerAdmin webgirl@abc.com <br />
+ ServerName www.abc.dom <br />
+ ServerAdmin webgirl@abc.dom <br />
DocumentRoot /www/abc <br />
</VirtualHost>
</example>
de las dos búsquedas de DNS mencionadas arriba falla para
cualquiera de sus hosts virtuales. En algunos casos estas
búsquedas DNS puede que no estén bajo su control; por
- ejemplo, si <code>abc.com</code> es uno de sus clientes y ellos
+ ejemplo, si <code>abc.dom</code> es uno de sus clientes y ellos
controlan su propia DNS, pueden forzar a su servidor (pre-1.2) a
fallar al iniciarse simplemente borrando el registro
- <code>www.abc.com</code>.</p>
+ <code>www.abc.dom</code>.</p>
<p>Otra formas pueden ser bastante más complicadas. Fíjese
en esta configuración:</p>
<example>
- <VirtualHost www.abc.com> <br />
-   ServerAdmin webgirl@abc.com <br />
+ <VirtualHost www.abc.dom> <br />
+   ServerAdmin webgirl@abc.dom <br />
  DocumentRoot /www/abc <br />
</VirtualHost> <br />
<br />
</example>
<p>Suponga que ha asignado la dirección 10.0.0.1 a
- <code>www.abc.com</code> y 10.0.0.2 a
+ <code>www.abc.dom</code> y 10.0.0.2 a
<code>www.def.com</code>. Todavía más, suponga que
<code>def.com</code> tiene el control de sus propias DNS. Con esta
configuración ha puesto <code>def.com</code> en una
posición en la que puede robar todo el trafico destinado a
- <code>abc.com</code>. Para conseguirlo, todo lo que tiene que
+ <code>abc.dom</code>. Para conseguirlo, todo lo que tiene que
hacer es asignarle a <code>www.def.com</code> la dirección
10.0.0.1. Como ellos controlan sus propias DNS no puede evitar que
apunten el registro <code>www.def.com</code> a donde quieran.</p>
<p>Las peticiones dirigidas a la dirección 10.0.0.1
(incluídas aquellas en las los usuarios escriben URLs de tipo
- <code>http://www.abc.com/whatever</code>) serán todas
+ <code>http://www.abc.dom/whatever</code>) serán todas
servidas por el host virtual <code>def.com</code>. Comprender por
qué ocurre esto requiere una discusión más profunda
acerca de como Apache asigna las peticiones que recibe a los hosts
Content-Language: en
Content-type: text/html; charset=ISO-8859-1
+URI: auth.html.es
+Content-Language: es
+Content-type: text/html; charset=ISO-8859-1
+
URI: auth.html.ja.euc-jp
Content-Language: ja
Content-type: text/html; charset=EUC-JP
<a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">HTTP Server</a> > <a href="http://httpd.apache.org/docs-project/">Documentation</a> > <a href="../">Version 2.0</a> > <a href="./">How-To / Tutorials</a></div><div id="page-content"><div id="preamble"><h1>Authentication, Authorization and Access Control</h1>
<div class="toplang">
<p><span>Available Languages: </span><a href="../en/howto/auth.html" title="English"> en </a> |
+<a href="../es/howto/auth.html" hreflang="es" rel="alternate" title="Español"> es </a> |
<a href="../ja/howto/auth.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
<a href="../ko/howto/auth.html" hreflang="ko" rel="alternate" title="Korean"> ko </a></p>
</div>
</div></div>
<div class="bottomlang">
<p><span>Available Languages: </span><a href="../en/howto/auth.html" title="English"> en </a> |
+<a href="../es/howto/auth.html" hreflang="es" rel="alternate" title="Español"> es </a> |
<a href="../ja/howto/auth.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
<a href="../ko/howto/auth.html" hreflang="ko" rel="alternate" title="Korean"> ko </a></p>
</div><div id="footer">
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="es" xml:lang="es"><head><!--
+ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+ This file is generated from xml source: DO NOT EDIT
+ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+ -->
+<title>Autentificación, Autorización y Control de Acceso - Servidor HTTP Apache</title>
+<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
+<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
+<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />
+<link href="../images/favicon.ico" rel="shortcut icon" /></head>
+<body id="manual-page"><div id="page-header">
+<p class="menu"><a href="../mod/">Módulos</a> | <a href="../mod/directives.html">Directivas</a> | <a href="../faq/">Preguntas Frecuentes</a> | <a href="../glossary.html">Glosario</a> | <a href="../sitemap.html">Mapa de este sitio web</a></p>
+<p class="apache">Versión 2.0 del Servidor HTTP Apache</p>
+<img alt="" src="../images/feather.gif" /></div>
+<div class="up"><a href="./"><img title="<-" alt="<-" src="../images/left.gif" /></a></div>
+<div id="path">
+<a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">Servidor HTTP</a> > <a href="http://httpd.apache.org/docs-project/">Documentación</a> > <a href="../">Versión 2.0</a> > <a href="./">How-To / Tutoriales</a></div><div id="page-content"><div id="preamble"><h1>Autentificación, Autorización y Control de Acceso</h1>
+<div class="toplang">
+<p><span>Idiomas disponibles: </span><a href="../en/howto/auth.html" hreflang="en" rel="alternate" title="English"> en </a> |
+<a href="../es/howto/auth.html" title="Español"> es </a> |
+<a href="../ja/howto/auth.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
+<a href="../ko/howto/auth.html" hreflang="ko" rel="alternate" title="Korean"> ko </a></p>
+</div>
+
+ <p>La autentificación es cualquier proceso mediante el cual se
+ verifica que alguien es quien dice ser. La autorización es
+ cualquier proceso por el cual a alguien se le permite estar donde
+ quiere ir, o tener la información que quiere tener.</p>
+</div>
+<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#related">Módulos y Directivas relacionadas</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#introduction">Introducción</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#theprerequisites">Los Prerrequisitos</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#gettingitworking">Puesta en funcionamiento</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#lettingmorethanonepersonin">Permitir el acceso a más
+de una persona</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#possibleproblems">Posibles Problemas</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#whatotherneatstuffcanido">¿Qué otra cosa
+sencilla y efectiva puedo hacer?</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#moreinformation">Más información</a></li>
+</ul></div>
+<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="related" id="related">Módulos y Directivas relacionadas</a></h2>
+ <table class="related"><tr><th>Módulos Relacionados</th><th>Directivas Relacionadas</th></tr><tr><td><ul><li><code class="module"><a href="../mod/mod_auth.html">mod_auth</a></code></li><li><code class="module"><a href="../mod/mod_access.html">mod_access</a></code></li></ul></td><td><ul><li><code class="directive"><a href="../mod/mod_access.html#allow">Allow</a></code></li><li><code class="directive"><a href="../mod/mod_auth.html#authgroupfile">AuthGroupFile</a></code></li><li><code class="directive"><a href="../mod/core.html#authname">AuthName</a></code></li><li><code class="directive"><a href="../mod/core.html#authtype">AuthType</a></code></li><li><code class="directive"><a href="../mod/mod_auth.html#authuserfile">AuthUserFile</a></code></li><li><code class="directive"><a href="../mod/mod_access.html#deny">Deny</a></code></li><li><code class="directive"><a href="../mod/core.html#options">Options</a></code></li><li><code class="directive"><a href="../mod/core.html#require">Require</a></code></li></ul></td></tr></table>
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="introduction" id="introduction">Introducción</a></h2>
+ <p>Si en su sitio web tiene información sensible o dirigida
+ sólo a un pequeño grupo de personas, las técnicas
+ explicadas en éste artículo le ayudarán a
+ asegurarse de que las personas que ven esas páginas son las
+ personas que usted quiere que las vean.</p>
+
+ <p>Este artículo cubre la manera "estándar" de proteger
+ partes de su sitio web que la mayoría de ustedes van a usar.</p>
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="theprerequisites" id="theprerequisites">Los Prerrequisitos</a></h2>
+ <p>Las directivas tratadas en éste artículo necesitarán
+ ir en el archivo de configuración principal de su servidor
+ (típicamente en una sección del tipo
+ <code class="directive"><a href="../mod/core.html#directory"><Directory></a></code>),
+ o en archivos de configuración por directorios (archivos
+ <code>.htaccess</code>).</p>
+
+ <p>Si planea usar archivos <code>.htaccess</code>, necesitará
+ tener una configuración en el servidor que permita poner directivas
+ de autentificación en estos archivos. Esto se logra con la
+ directiva <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code>,
+ la cual especifica cuáles directivas, en caso de existir, pueden
+ ser colocadas en los archivos de configuración por directorios.</p>
+
+ <p>Ya que se está hablando de autentificación, necesitará
+ una directiva <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> como
+ la siguiente:</p>
+
+ <div class="example"><p><code>
+ AllowOverride AuthConfig
+ </code></p></div>
+
+ <p>O, si sólo va a colocar directivas directamente en el principal
+ archivo de configuración del servidor, por supuesto necesitará
+ tener permiso de escritura a ese archivo.</p>
+
+ <p>Y necesitará saber un poco acerca de la estructura de
+ directorios de su servidor, con la finalidad de que sepa dónde
+ están algunos archivos. Esto no debería ser muy
+ difícil, y trataré de hacerlo sencillo cuando lleguemos a
+ ese punto.</p>
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="gettingitworking" id="gettingitworking">Puesta en funcionamiento</a></h2>
+ <p>Aquí está lo esencial en cuanto a proteger con
+ contraseña un directorio de su servidor.</p>
+
+ <p>Necesitará crear un archivo de contraseñas. Éste
+ archivo debería colocarlo en algún sitio no accesible
+ mediante la Web. Por ejemplo, si sus documentos son servidos desde
+ <code>/usr/local/apache/htdocs</code> usted podría querer colocar
+ el(los) archivo(s) de contraseñas en
+ <code>/usr/local/apache/passwd</code>.</p>
+
+ <p>Para crear un archivo de contraseñas, use la utilidad
+ <code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code> que viene con Apache.
+ Ésta utilidad puede encontrarla en el directorio <code>bin</code>
+ de cualquier sitio en que haya instalado Apache. Para crear el
+ archivo, escriba:</p>
+
+ <div class="example"><p><code>
+ htpasswd -c /usr/local/apache/passwd/passwords rbowen
+ </code></p></div>
+
+ <p><code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code> le pedirá la contraseña, y luego se
+ la volverá a pedir para confirmarla:</p>
+
+ <div class="example"><p><code>
+ # htpasswd -c /usr/local/apache/passwd/passwords rbowen<br />
+ New password: mypassword<br />
+ Re-type new password: mypassword<br />
+ Adding password for user rbowen
+ </code></p></div>
+
+ <p>Si <code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code> no está en su ruta, por supuesto
+ tendrá que escribir la ruta completa al archivo para ejecutarlo.
+ En mi servidor, éste archivo está en
+ <code>/usr/local/apache/bin/htpasswd</code></p>
+
+ <p>El siguiente paso es configurar el servidor para que solicite una
+ contraseña y decirle al servidor a qué usuarios se les
+ permite el acceso. Puede hacer esto editando el archivo
+ <code>httpd.conf</code> o usando un archivo <code>.htaccess</code>.
+ Por ejemplo, si desea proteger el directorio
+ <code>/usr/local/apache/htdocs/secret</code>, puede usar las siguientes
+ directivas, ya sea colocándolas en el archivo
+ <code>/usr/local/apache/htdocs/secret/.htaccess</code>,
+ o en <code>httpd.conf</code> dentro de una sección <Directory
+ /usr/local/apache/apache/htdocs/secret>.</p>
+
+ <div class="example"><p><code>
+ AuthType Basic<br />
+ AuthName "Restricted Files"<br />
+ AuthUserFile /usr/local/apache/passwd/passwords<br />
+ Require user rbowen
+ </code></p></div>
+
+ <p>Vamos a examinar cada una de estas directivas por separado. La
+ directiva <code class="directive"><a href="../mod/core.html#authtype">AuthType</a></code> selecciona
+ el método que se va a usar para autentificar al usuario. El
+ método más común es <code>Basic</code>, y éste
+ método está implementado en <code class="module"><a href="../mod/mod_auth.html">mod_auth</a></code>. Es importante
+ ser consciente, sin embargo, de que la autentificación Básica
+ envía la contraseña desde el cliente hasta el navegador sin
+ encriptar. Por lo tanto, este método no debería ser usado
+ para información altamente sensible. Apache soporta otro método
+ de autentificación: <code>AuthType Digest</code>. Este método
+ está implementado en <code class="module"><a href="../mod/mod_auth_digest.html">mod_auth_digest</a></code> y es mucho más
+ seguro. Sólo las versiones más recientes de clientes soportan
+ la autentificación del tipo Digest.</p>
+
+ <p>La directiva <code class="directive"><a href="../mod/core.html#authname">AuthName</a></code> establece
+ el <dfn>Dominio (Realm)</dfn> a usar en la
+ autentificación. El dominio (realm) cumple
+ dos funciones importantes. Primero, el cliente frecuentemente presenta
+ esta información al usuario como parte del cuatro de diálogo
+ para la contraseña. Segundo, es usado por el cliente para determinar
+ qué contraseña enviar para un área autentificada dada.</p>
+
+ <p>Así, por ejemplo, una vez que el cliente se haya autentificado en
+ el área <code>"Restricted Files"</code>,
+ automáticamente se volverá a tratar de usar la misma
+ contraseña en cualquier área del mismo servidor que esté
+ marcado con el Dominio (Realm) <code>"Restricted Files"</code>. Por lo tanto,
+ puede evitar que se le pida al usuario la contraseña
+ más de una vez permitiendo compartir el mismo dominio (realm)
+ para múltiples áreas restringidas. Por supuesto, por
+ razones de seguridad, el cliente siempre necesitará pedir de
+ nuevo la contraseña cuando cambie el nombre de la
+ máquina del servidor.</p>
+
+ <p>La directiva <code class="directive"><a href="../mod/mod_auth.html#authuserfile">AuthUserFile</a></code>
+ establece la ruta al archivo de contraseña que acabamos de crear
+ con <code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code>. Si tiene un gran número de usuarios,
+ sería bastante lento buscar por medio de un archivo en texto plano
+ para autentificar al usuario en cada solicitud. Apache también tiene
+ la capacidad de almacenar la información del usuario en
+ archivos rápidos de bases de datos. El módulo <code class="module"><a href="../mod/mod_auth_dbm.html">mod_auth_dbm</a></code>
+ proporciona la directiva <code class="directive"><a href="../mod/mod_auth_dbm.html#authdbmuserfile">AuthDBMUserFile</a></code>. Estos archivos pueden
+ ser creados y manipulados con el programa
+ <code class="program"><a href="../programs/dbmmanage.html">dbmmanage</a></code>. Muchos otros tipos
+ de opciones de autentificación están disponibles en módulos
+ de terceras partes en la <a href="http://modules.apache.org/">Base de
+ datos de Módulos de Apache</a>.</p>
+
+ <p>Finalmente, la directiva <code class="directive"><a href="../mod/core.html#require">Require</a></code>
+ proporciona la parte de la autorización del proceso estableciendo
+ el usuario al que se le permite acceder a ese área del servidor.
+ En la próxima sección, discutimos varias formas de usar la
+ directiva <code class="directive"><a href="../mod/core.html#require">Require</a></code>.</p>
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="lettingmorethanonepersonin" id="lettingmorethanonepersonin">Permitir el acceso a más
+de una persona</a></h2>
+ <p>Las directivas anteriores sólo permiten que una persona
+ (específicamente alguien con un nombre de usuario de
+ <code>rbowen</code>) acceda al directorio. En la mayoría de los
+ casos, usted querrá permitir el acceso a más de una persona.
+ Aquí es donde entra la directiva <code class="directive"><a href="../mod/mod_auth.html#authgroupfile">AuthGroupFile</a></code>.</p>
+
+ <p>Si desea permitir la entrada a más de una persona, necesitará
+ crear un archivo de grupo que asocie nombres de grupo con una lista
+ de usuarios perteneciente a ese grupo. El formato de este archivo es muy sencillo,
+ y puede crearlo con su editor favorito. El contenido del archivo
+ será parecido a este:</p>
+
+ <div class="example"><p><code>
+ GroupName: rbowen dpitts sungo rshersey
+ </code></p></div>
+
+ <p>Esto es solo una lista de miembros del grupo escritos en una
+ línea separados por espacios.</p>
+
+ <p>Para agregar un usuario a un archivo de contraseñas ya existente,
+ escriba:</p>
+
+ <div class="example"><p><code>
+ htpasswd /usr/local/apache/passwd/passwords dpitts
+ </code></p></div>
+
+ <p>Obtendrá la misma respuesta que antes, pero el nuevo usuario será agregado
+ al archivo existente, en lugar de crear un nuevo archivo.
+ (Es la opción <code>-c</code> la que se cree un nuevo archivo
+ de contraseñas).</p>
+
+ <p>Ahora, necesita modificar su archivo <code>.htaccess</code> para que
+ sea como el siguiente:</p>
+
+ <div class="example"><p><code>
+ AuthType Basic<br />
+ AuthName "By Invitation Only"<br />
+ AuthUserFile /usr/local/apache/passwd/passwords<br />
+ AuthGroupFile /usr/local/apache/passwd/groups<br />
+ Require group GroupName
+ </code></p></div>
+
+ <p>Ahora, cualquiera que esté listado en el grupo <code>GroupName</code>,
+ y figure en el archivo <code>password</code>, se le permitirá
+ el acceso, si escribe la contraseña correcta.</p>
+
+ <p>Existe otra manera de permitir entrar a múltiples usuarios que
+ es menos específica. En lugar de crear un archivo de grupo, puede
+ usar sólo la siguiente directiva:</p>
+
+ <div class="example"><p><code>
+ Require valid-user
+ </code></p></div>
+
+ <p>Usando eso en vez de la línea <code>Require user rbowen</code>,
+ le permitirá el acceso a cualquiera que esté listado en el
+ archivo de contraseñas y que haya introducido correctamente su
+ contraseña. Incluso puede emular el comportamiento del grupo
+ aquí, sólo manteniendo un archivo de contraseña para
+ cada grupo. La ventaja de esta técnica es que Apache sólo
+ tiene que verificar un archivo, en vez de dos. La desventaja es que
+ usted tiene que mantener un grupo de archivos de contraseña, y
+ recordar referirse al correcto en la directiva <code class="directive"><a href="../mod/mod_auth.html#authuserfile">AuthUserFile</a></code>.</p>
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="possibleproblems" id="possibleproblems">Posibles Problemas</a></h2>
+ <p>Por la manera en la que la autentificación básica está
+ especificada, su nombre de usuario y contraseña debe ser verificado
+ cada vez que se solicita un documento del servidor. Incluso si está
+ recargando la misma página, y por cada imagen de la página
+ (si vienen de un directorio protegido). Como se puede imaginar, esto
+ retrasa un poco las cosas. El retraso es proporcional al
+ tamaño del archivo de contraseña, porque se tiene que abrir ese
+ archivo, y recorrer la lista de usuarios hasta que encuentre su nombre.
+ Y eso se tiene que hacer cada vez que se cargue la página.</p>
+
+ <p>Una consecuencia de esto es que hay un límite práctico
+ de cuántos usuarios puede colocar en un archivo de contraseñas.
+ Este límite variará dependiendo del rendimiento de su equipo
+ servidor en particular, pero puede esperar observar una disminución
+ una vez que inserte unos cientos de entradas, y puede que entonces considere
+ un método distinto de autentificaciên.</p>
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="whatotherneatstuffcanido" id="whatotherneatstuffcanido">¿Qué otra cosa
+sencilla y efectiva puedo hacer?</a></h2>
+ <p>La autentificación por nombre de usuario y contraseña es
+ sólo parte del cuento. Frecuentemente se desea permitir el acceso
+ a los usuarios basandose en algo más que quiénes son. Algo como de
+ dónde vienen.</p>
+
+ <p>Las directivas <code class="directive"><a href="../mod/mod_access.html#allow">Allow</a></code> y
+ <code class="directive"><a href="../mod/mod_access.html#deny">Deny</a></code> posibilitan permitir
+ y rechazar el acceso dependiendo del nombre o la dirección de la
+ máquina que solicita un documento. La directiva <code class="directive"><a href="../mod/mod_access.html#order">Order</a></code> va de la mano con estas dos, y le
+ dice a Apache en qué orden aplicar los filtros.</p>
+
+ <p>El uso de estas directivas es:</p>
+
+ <div class="example"><p><code>
+ Allow from <var>address</var>
+ </code></p></div>
+
+ <p>donde <var>address</var> es una dirección IP (o una
+ dirección IP parcial) o un nombre de dominio completamente
+ cualificado (o un nombre de dominio parcial); puede proporcionar
+ múltiples direcciones o nombres de dominio, si lo desea.</p>
+
+ <p>Por ejemplo, si usted tiene a alguien que manda mensajes no deseados
+ a su foro, y quiere que no vuelva a acceder, podría hacer lo
+ siguiente:</p>
+
+ <div class="example"><p><code>
+ Deny from 205.252.46.165
+ </code></p></div>
+
+ <p>Los visitantes que vengan de esa dirección no podrán
+ ver el contenido afectado por esta directiva. Si, por el
+ contrario, usted tiene un nombre de máquina pero no una
+ dirección IP, también puede usarlo.</p>
+
+ <div class="example"><p><code>
+ Deny from <var>host.example.com</var>
+ </code></p></div>
+
+ <p>Y, si le gustaría bloquear el acceso de un dominio entero,
+ puede especificar sólo parte de una dirección o nombre de
+ dominio:</p>
+
+ <div class="example"><p><code>
+ Deny from <var>192.101.205</var><br />
+ Deny from <var>cyberthugs.com</var> <var>moreidiots.com</var><br />
+ Deny from ke
+ </code></p></div>
+
+ <p>Usar <code class="directive"><a href="../mod/mod_access.html#order">Order</a></code> le permitirá
+ estar seguro de que efectivamente está restringiendo el acceso
+ al grupo al que quiere permitir el acceso, combinando una directiva
+ <code class="directive"><a href="../mod/mod_access.html#deny">Deny</a></code> y una <code class="directive"><a href="../mod/mod_access.html#allow">Allow</a></code>:</p>
+
+ <div class="example"><p><code>
+ Order deny,allow<br />
+ Deny from all<br />
+ Allow from <var>dev.example.com</var>
+ </code></p></div>
+
+ <p>Usando sólo la directiva <code class="directive"><a href="../mod/mod_access.html#allow">Allow</a></code> no haría lo que desea, porque
+ le permitiría entrar a la gente proveniente de esa máquina, y
+ adicionalmente a cualquier persona. Lo que usted quiere es dejar entrar
+ <em>sólo</em> aquellos.</p>
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="moreinformation" id="moreinformation">Más información</a></h2>
+ <p>También debería leer la documentación de
+ <code class="module"><a href="../mod/mod_auth.html">mod_auth</a></code> y <code class="module"><a href="../mod/mod_access.html">mod_access</a></code> que
+ contiene más información acerca de cómo funciona todo esto.</p>
+</div></div>
+<div class="bottomlang">
+<p><span>Idiomas disponibles: </span><a href="../en/howto/auth.html" hreflang="en" rel="alternate" title="English"> en </a> |
+<a href="../es/howto/auth.html" title="Español"> es </a> |
+<a href="../ja/howto/auth.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
+<a href="../ko/howto/auth.html" hreflang="ko" rel="alternate" title="Korean"> ko </a></p>
+</div><div id="footer">
+<p class="apache">Copyright 1995-2005 The Apache Software Foundation or its licensors, as applicable.<br />Licencia bajo los términos de la <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
+<p class="menu"><a href="../mod/">Módulos</a> | <a href="../mod/directives.html">Directivas</a> | <a href="../faq/">Preguntas Frecuentes</a> | <a href="../glossary.html">Glosario</a> | <a href="../sitemap.html">Mapa de este sitio web</a></p></div>
+</body></html>
\ No newline at end of file
<a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">HTTP ¥µ¡¼¥Ð</a> > <a href="http://httpd.apache.org/docs-project/">¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó</a> > <a href="../">¥Ð¡¼¥¸¥ç¥ó 2.0</a> > <a href="./">How-To / ¥Á¥å¡¼¥È¥ê¥¢¥ë</a></div><div id="page-content"><div id="preamble"><h1>ǧ¾Ú¡¢¾µÇ§¡¢¥¢¥¯¥»¥¹À©¸æ</h1>
<div class="toplang">
<p><span>Available Languages: </span><a href="../en/howto/auth.html" hreflang="en" rel="alternate" title="English"> en </a> |
+<a href="../es/howto/auth.html" hreflang="es" rel="alternate" title="Espa\8f«Ðol"> es </a> |
<a href="../ja/howto/auth.html" title="Japanese"> ja </a> |
<a href="../ko/howto/auth.html" hreflang="ko" rel="alternate" title="Korean"> ko </a></p>
</div>
</div></div>
<div class="bottomlang">
<p><span>Available Languages: </span><a href="../en/howto/auth.html" hreflang="en" rel="alternate" title="English"> en </a> |
+<a href="../es/howto/auth.html" hreflang="es" rel="alternate" title="Espa\8f«Ðol"> es </a> |
<a href="../ja/howto/auth.html" title="Japanese"> ja </a> |
<a href="../ko/howto/auth.html" hreflang="ko" rel="alternate" title="Korean"> ko </a></p>
</div><div id="footer">
Á¢±ÙÁ¦¾î(Access Control)</h1>
<div class="toplang">
<p><span>°¡´ÉÇÑ ¾ð¾î: </span><a href="../en/howto/auth.html" hreflang="en" rel="alternate" title="English"> en </a> |
+<a href="../es/howto/auth.html" hreflang="es" rel="alternate" title="Español"> es </a> |
<a href="../ja/howto/auth.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
<a href="../ko/howto/auth.html" title="Korean"> ko </a></p>
</div>
</div></div>
<div class="bottomlang">
<p><span>°¡´ÉÇÑ ¾ð¾î: </span><a href="../en/howto/auth.html" hreflang="en" rel="alternate" title="English"> en </a> |
+<a href="../es/howto/auth.html" hreflang="es" rel="alternate" title="Español"> es </a> |
<a href="../ja/howto/auth.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
<a href="../ko/howto/auth.html" title="Korean"> ko </a></p>
</div><div id="footer">
--- /dev/null
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
+<?xml-stylesheet type="text/xsl" href="../style/manual.es.xsl"?>
+<!-- English Revision: 151405 -->
+
+<!--
+ Copyright 2005 The Apache Software Foundation or its licensors,
+ as applicable.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<manualpage metafile="auth.xml.meta">
+<parentdocument href="./">How-To / Tutoriales</parentdocument>
+
+<title>Autentificación, Autorización y Control de Acceso</title>
+
+<summary>
+ <p>La autentificación es cualquier proceso mediante el cual se
+ verifica que alguien es quien dice ser. La autorización es
+ cualquier proceso por el cual a alguien se le permite estar donde
+ quiere ir, o tener la información que quiere tener.</p>
+</summary>
+
+<section id="related"><title>Módulos y Directivas relacionadas</title>
+ <related>
+ <modulelist>
+ <module>mod_auth</module>
+ <module>mod_access</module>
+ </modulelist>
+
+ <directivelist>
+ <directive module="mod_access">Allow</directive>
+ <directive module="mod_auth">AuthGroupFile</directive>
+ <directive module="core">AuthName</directive>
+ <directive module="core">AuthType</directive>
+ <directive module="mod_auth">AuthUserFile</directive>
+ <directive module="mod_access">Deny</directive>
+ <directive module="core">Options</directive>
+ <directive module="core">Require</directive>
+ </directivelist>
+ </related>
+</section>
+
+<section id="introduction"><title>Introducción</title>
+ <p>Si en su sitio web tiene información sensible o dirigida
+ sólo a un pequeño grupo de personas, las técnicas
+ explicadas en éste artículo le ayudarán a
+ asegurarse de que las personas que ven esas páginas son las
+ personas que usted quiere que las vean.</p>
+
+ <p>Este artículo cubre la manera "estándar" de proteger
+ partes de su sitio web que la mayoría de ustedes van a usar.</p>
+</section>
+
+<section id="theprerequisites"><title>Los Prerrequisitos</title>
+ <p>Las directivas tratadas en éste artículo necesitarán
+ ir en el archivo de configuración principal de su servidor
+ (típicamente en una sección del tipo
+ <directive module="core" type="section">Directory</directive>),
+ o en archivos de configuración por directorios (archivos
+ <code>.htaccess</code>).</p>
+
+ <p>Si planea usar archivos <code>.htaccess</code>, necesitará
+ tener una configuración en el servidor que permita poner directivas
+ de autentificación en estos archivos. Esto se logra con la
+ directiva <directive module="core">AllowOverride</directive>,
+ la cual especifica cuáles directivas, en caso de existir, pueden
+ ser colocadas en los archivos de configuración por directorios.</p>
+
+ <p>Ya que se está hablando de autentificación, necesitará
+ una directiva <directive module="core">AllowOverride</directive> como
+ la siguiente:</p>
+
+ <example>
+ AllowOverride AuthConfig
+ </example>
+
+ <p>O, si sólo va a colocar directivas directamente en el principal
+ archivo de configuración del servidor, por supuesto necesitará
+ tener permiso de escritura a ese archivo.</p>
+
+ <p>Y necesitará saber un poco acerca de la estructura de
+ directorios de su servidor, con la finalidad de que sepa dónde
+ están algunos archivos. Esto no debería ser muy
+ difícil, y trataré de hacerlo sencillo cuando lleguemos a
+ ese punto.</p>
+</section>
+
+<section id="gettingitworking"><title>Puesta en funcionamiento</title>
+ <p>Aquí está lo esencial en cuanto a proteger con
+ contraseña un directorio de su servidor.</p>
+
+ <p>Necesitará crear un archivo de contraseñas. Éste
+ archivo debería colocarlo en algún sitio no accesible
+ mediante la Web. Por ejemplo, si sus documentos son servidos desde
+ <code>/usr/local/apache/htdocs</code> usted podría querer colocar
+ el(los) archivo(s) de contraseñas en
+ <code>/usr/local/apache/passwd</code>.</p>
+
+ <p>Para crear un archivo de contraseñas, use la utilidad
+ <program>htpasswd</program> que viene con Apache.
+ Ésta utilidad puede encontrarla en el directorio <code>bin</code>
+ de cualquier sitio en que haya instalado Apache. Para crear el
+ archivo, escriba:</p>
+
+ <example>
+ htpasswd -c /usr/local/apache/passwd/passwords rbowen
+ </example>
+
+ <p><program>htpasswd</program> le pedirá la contraseña, y luego se
+ la volverá a pedir para confirmarla:</p>
+
+ <example>
+ # htpasswd -c /usr/local/apache/passwd/passwords rbowen<br />
+ New password: mypassword<br />
+ Re-type new password: mypassword<br />
+ Adding password for user rbowen
+ </example>
+
+ <p>Si <program>htpasswd</program> no está en su ruta, por supuesto
+ tendrá que escribir la ruta completa al archivo para ejecutarlo.
+ En mi servidor, éste archivo está en
+ <code>/usr/local/apache/bin/htpasswd</code></p>
+
+ <p>El siguiente paso es configurar el servidor para que solicite una
+ contraseña y decirle al servidor a qué usuarios se les
+ permite el acceso. Puede hacer esto editando el archivo
+ <code>httpd.conf</code> o usando un archivo <code>.htaccess</code>.
+ Por ejemplo, si desea proteger el directorio
+ <code>/usr/local/apache/htdocs/secret</code>, puede usar las siguientes
+ directivas, ya sea colocándolas en el archivo
+ <code>/usr/local/apache/htdocs/secret/.htaccess</code>,
+ o en <code>httpd.conf</code> dentro de una sección <Directory
+ /usr/local/apache/apache/htdocs/secret>.</p>
+
+ <example>
+ AuthType Basic<br />
+ AuthName "Restricted Files"<br />
+ AuthUserFile /usr/local/apache/passwd/passwords<br />
+ Require user rbowen
+ </example>
+
+ <p>Vamos a examinar cada una de estas directivas por separado. La
+ directiva <directive module="core">AuthType</directive> selecciona
+ el método que se va a usar para autentificar al usuario. El
+ método más común es <code>Basic</code>, y éste
+ método está implementado en <module>mod_auth</module>. Es importante
+ ser consciente, sin embargo, de que la autentificación Básica
+ envía la contraseña desde el cliente hasta el navegador sin
+ encriptar. Por lo tanto, este método no debería ser usado
+ para información altamente sensible. Apache soporta otro método
+ de autentificación: <code>AuthType Digest</code>. Este método
+ está implementado en <module>mod_auth_digest</module> y es mucho más
+ seguro. Sólo las versiones más recientes de clientes soportan
+ la autentificación del tipo Digest.</p>
+
+ <p>La directiva <directive module="core">AuthName</directive> establece
+ el <dfn>Dominio (Realm)</dfn> a usar en la
+ autentificación. El dominio (realm) cumple
+ dos funciones importantes. Primero, el cliente frecuentemente presenta
+ esta información al usuario como parte del cuatro de diálogo
+ para la contraseña. Segundo, es usado por el cliente para determinar
+ qué contraseña enviar para un área autentificada dada.</p>
+
+ <p>Así, por ejemplo, una vez que el cliente se haya autentificado en
+ el área <code>"Restricted Files"</code>,
+ automáticamente se volverá a tratar de usar la misma
+ contraseña en cualquier área del mismo servidor que esté
+ marcado con el Dominio (Realm) <code>"Restricted Files"</code>. Por lo tanto,
+ puede evitar que se le pida al usuario la contraseña
+ más de una vez permitiendo compartir el mismo dominio (realm)
+ para múltiples áreas restringidas. Por supuesto, por
+ razones de seguridad, el cliente siempre necesitará pedir de
+ nuevo la contraseña cuando cambie el nombre de la
+ máquina del servidor.</p>
+
+ <p>La directiva <directive module="mod_auth">AuthUserFile</directive>
+ establece la ruta al archivo de contraseña que acabamos de crear
+ con <program>htpasswd</program>. Si tiene un gran número de usuarios,
+ sería bastante lento buscar por medio de un archivo en texto plano
+ para autentificar al usuario en cada solicitud. Apache también tiene
+ la capacidad de almacenar la información del usuario en
+ archivos rápidos de bases de datos. El módulo <module>mod_auth_dbm</module>
+ proporciona la directiva <directive
+ module="mod_auth_dbm">AuthDBMUserFile</directive>. Estos archivos pueden
+ ser creados y manipulados con el programa
+ <program>dbmmanage</program>. Muchos otros tipos
+ de opciones de autentificación están disponibles en módulos
+ de terceras partes en la <a href="http://modules.apache.org/">Base de
+ datos de Módulos de Apache</a>.</p>
+
+ <p>Finalmente, la directiva <directive module="core">Require</directive>
+ proporciona la parte de la autorización del proceso estableciendo
+ el usuario al que se le permite acceder a ese área del servidor.
+ En la próxima sección, discutimos varias formas de usar la
+ directiva <directive module="core">Require</directive>.</p>
+</section>
+
+<section id="lettingmorethanonepersonin"><title>Permitir el acceso a más
+de una persona</title>
+ <p>Las directivas anteriores sólo permiten que una persona
+ (específicamente alguien con un nombre de usuario de
+ <code>rbowen</code>) acceda al directorio. En la mayoría de los
+ casos, usted querrá permitir el acceso a más de una persona.
+ Aquí es donde entra la directiva <directive module="mod_auth"
+ >AuthGroupFile</directive>.</p>
+
+ <p>Si desea permitir la entrada a más de una persona, necesitará
+ crear un archivo de grupo que asocie nombres de grupo con una lista
+ de usuarios perteneciente a ese grupo. El formato de este archivo es muy sencillo,
+ y puede crearlo con su editor favorito. El contenido del archivo
+ será parecido a este:</p>
+
+ <example>
+ GroupName: rbowen dpitts sungo rshersey
+ </example>
+
+ <p>Esto es solo una lista de miembros del grupo escritos en una
+ línea separados por espacios.</p>
+
+ <p>Para agregar un usuario a un archivo de contraseñas ya existente,
+ escriba:</p>
+
+ <example>
+ htpasswd /usr/local/apache/passwd/passwords dpitts
+ </example>
+
+ <p>Obtendrá la misma respuesta que antes, pero el nuevo usuario será agregado
+ al archivo existente, en lugar de crear un nuevo archivo.
+ (Es la opción <code>-c</code> la que se cree un nuevo archivo
+ de contraseñas).</p>
+
+ <p>Ahora, necesita modificar su archivo <code>.htaccess</code> para que
+ sea como el siguiente:</p>
+
+ <example>
+ AuthType Basic<br />
+ AuthName "By Invitation Only"<br />
+ AuthUserFile /usr/local/apache/passwd/passwords<br />
+ AuthGroupFile /usr/local/apache/passwd/groups<br />
+ Require group GroupName
+ </example>
+
+ <p>Ahora, cualquiera que esté listado en el grupo <code>GroupName</code>,
+ y figure en el archivo <code>password</code>, se le permitirá
+ el acceso, si escribe la contraseña correcta.</p>
+
+ <p>Existe otra manera de permitir entrar a múltiples usuarios que
+ es menos específica. En lugar de crear un archivo de grupo, puede
+ usar sólo la siguiente directiva:</p>
+
+ <example>
+ Require valid-user
+ </example>
+
+ <p>Usando eso en vez de la línea <code>Require user rbowen</code>,
+ le permitirá el acceso a cualquiera que esté listado en el
+ archivo de contraseñas y que haya introducido correctamente su
+ contraseña. Incluso puede emular el comportamiento del grupo
+ aquí, sólo manteniendo un archivo de contraseña para
+ cada grupo. La ventaja de esta técnica es que Apache sólo
+ tiene que verificar un archivo, en vez de dos. La desventaja es que
+ usted tiene que mantener un grupo de archivos de contraseña, y
+ recordar referirse al correcto en la directiva <directive
+ module="mod_auth">AuthUserFile</directive>.</p>
+</section>
+
+<section id="possibleproblems"><title>Posibles Problemas</title>
+ <p>Por la manera en la que la autentificación básica está
+ especificada, su nombre de usuario y contraseña debe ser verificado
+ cada vez que se solicita un documento del servidor. Incluso si está
+ recargando la misma página, y por cada imagen de la página
+ (si vienen de un directorio protegido). Como se puede imaginar, esto
+ retrasa un poco las cosas. El retraso es proporcional al
+ tamaño del archivo de contraseña, porque se tiene que abrir ese
+ archivo, y recorrer la lista de usuarios hasta que encuentre su nombre.
+ Y eso se tiene que hacer cada vez que se cargue la página.</p>
+
+ <p>Una consecuencia de esto es que hay un límite práctico
+ de cuántos usuarios puede colocar en un archivo de contraseñas.
+ Este límite variará dependiendo del rendimiento de su equipo
+ servidor en particular, pero puede esperar observar una disminución
+ una vez que inserte unos cientos de entradas, y puede que entonces considere
+ un método distinto de autentificaciên.</p>
+</section>
+
+<section id="whatotherneatstuffcanido"><title>¿Qué otra cosa
+sencilla y efectiva puedo hacer?</title>
+ <p>La autentificación por nombre de usuario y contraseña es
+ sólo parte del cuento. Frecuentemente se desea permitir el acceso
+ a los usuarios basandose en algo más que quiénes son. Algo como de
+ dónde vienen.</p>
+
+ <p>Las directivas <directive module="mod_access">Allow</directive> y
+ <directive module="mod_access">Deny</directive> posibilitan permitir
+ y rechazar el acceso dependiendo del nombre o la dirección de la
+ máquina que solicita un documento. La directiva <directive
+ module="mod_access">Order</directive> va de la mano con estas dos, y le
+ dice a Apache en qué orden aplicar los filtros.</p>
+
+ <p>El uso de estas directivas es:</p>
+
+ <example>
+ Allow from <var>address</var>
+ </example>
+
+ <p>donde <var>address</var> es una dirección IP (o una
+ dirección IP parcial) o un nombre de dominio completamente
+ cualificado (o un nombre de dominio parcial); puede proporcionar
+ múltiples direcciones o nombres de dominio, si lo desea.</p>
+
+ <p>Por ejemplo, si usted tiene a alguien que manda mensajes no deseados
+ a su foro, y quiere que no vuelva a acceder, podría hacer lo
+ siguiente:</p>
+
+ <example>
+ Deny from 205.252.46.165
+ </example>
+
+ <p>Los visitantes que vengan de esa dirección no podrán
+ ver el contenido afectado por esta directiva. Si, por el
+ contrario, usted tiene un nombre de máquina pero no una
+ dirección IP, también puede usarlo.</p>
+
+ <example>
+ Deny from <var>host.example.com</var>
+ </example>
+
+ <p>Y, si le gustaría bloquear el acceso de un dominio entero,
+ puede especificar sólo parte de una dirección o nombre de
+ dominio:</p>
+
+ <example>
+ Deny from <var>192.101.205</var><br />
+ Deny from <var>cyberthugs.com</var> <var>moreidiots.com</var><br />
+ Deny from ke
+ </example>
+
+ <p>Usar <directive module="mod_access">Order</directive> le permitirá
+ estar seguro de que efectivamente está restringiendo el acceso
+ al grupo al que quiere permitir el acceso, combinando una directiva
+ <directive module="mod_access">Deny</directive> y una <directive
+ module="mod_access">Allow</directive>:</p>
+
+ <example>
+ Order deny,allow<br />
+ Deny from all<br />
+ Allow from <var>dev.example.com</var>
+ </example>
+
+ <p>Usando sólo la directiva <directive
+ module="mod_access">Allow</directive> no haría lo que desea, porque
+ le permitiría entrar a la gente proveniente de esa máquina, y
+ adicionalmente a cualquier persona. Lo que usted quiere es dejar entrar
+ <em>sólo</em> aquellos.</p>
+</section>
+
+<section id="moreinformation"><title>Más información</title>
+ <p>También debería leer la documentación de
+ <module>mod_auth</module> y <module>mod_access</module> que
+ contiene más información acerca de cómo funciona todo esto.</p>
+</section>
+</manualpage>
+
+
<variants>
<variant>en</variant>
+ <variant>es</variant>
<variant outdated="yes">ja</variant>
<variant outdated="yes">ko</variant>
</variants>
<a href="./ko/install.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> |
<a href="./ru/install.html" hreflang="ru" rel="alternate" title="Russian"> ru </a></p>
</div>
+<div class="outofdate">Diese Übersetzung ist möglicherweise
+ nicht mehr aktuell. Bitte prüfen Sie die englische Version auf
+ die neuesten Änderungen.</div>
<p>Dieses Dokument umfaßt nur die Kompilierung und Installation des
Apache auf Unix und Unix-ähnlichen Systemen. Für die
[OPTIONAL]</dt>
<dd>For some of the support scripts like <code class="program"><a href="./programs/apxs.html">apxs</a></code> or <code class="program"><a href="./programs/dbmmanage.html">dbmmanage</a></code> (which are
written in Perl) the Perl 5 interpreter is required (versions
- 5.003 or newer are sufficient). If no such interpreter is found by
- the <code class="program"><a href="./programs/configure.html">configure</a></code> script there is no harm. Of course, you
- still can build and install Apache 2.0. Only those support scripts
- cannot be used. If you have multiple Perl interpreters
- installed (perhaps a Perl 4 from the vendor and a Perl 5 from
- your own), then it is recommended to use the <code>--with-perl</code>
- option (see below) to make sure the correct one is selected
- by <code class="program"><a href="./programs/configure.html">configure</a></code>.</dd>
+ 5.003 or newer are sufficient). If you have multiple Perl
+ interpreters (for example, a systemwide install of Perl 4, and
+ your own install of Perl 5), you are advised to use the
+ <code>--with-perl</code> option (see below) to make sure the
+ correct one is used by <code class="program"><a href="./programs/configure.html">configure</a></code>.
+ If no Perl 5 interpreter is found by the
+ <code class="program"><a href="./programs/configure.html">configure</a></code> script, you will not be able to use
+ the affected support scripts. Of course, you will still be able to
+ build and use Apache 2.0.</dd>
</dl>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<a href="./ko/install.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> |
<a href="./ru/install.html" hreflang="ru" rel="alternate" title="Russian"> ru </a></p>
</div>
+<div class="outofdate">Esta traducción podría estar
+ obsoleta. Consulte la versión en inglés de la
+ documentación para comprobar si se han producido cambios
+ recientemente.</div>
<p>Este documento explica cómo compilar e instalar Apache en
<dd>For some of the support scripts like <program>
apxs</program> or <program>dbmmanage</program> (which are
written in Perl) the Perl 5 interpreter is required (versions
- 5.003 or newer are sufficient). If no such interpreter is found by
- the <program>configure</program> script there is no harm. Of course, you
- still can build and install Apache 2.0. Only those support scripts
- cannot be used. If you have multiple Perl interpreters
- installed (perhaps a Perl 4 from the vendor and a Perl 5 from
- your own), then it is recommended to use the <code>--with-perl</code>
- option (see below) to make sure the correct one is selected
- by <program>configure</program>.</dd>
+ 5.003 or newer are sufficient). If you have multiple Perl
+ interpreters (for example, a systemwide install of Perl 4, and
+ your own install of Perl 5), you are advised to use the
+ <code>--with-perl</code> option (see below) to make sure the
+ correct one is used by <program>configure</program>.
+ If no Perl 5 interpreter is found by the
+ <program>configure</program> script, you will not be able to use
+ the affected support scripts. Of course, you will still be able to
+ build and use Apache 2.0.</dd>
</dl>
</section>
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="./style/manual.de.xsl"?>
-<!-- English Revision: 178522 -->
+<!-- English Revision: 178522:239259 (outdated) -->
<!--
Copyright 2002-2004 The Apache Software Foundation
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="./style/manual.es.xsl"?>
-<!-- English Revision: 178522 -->
+<!-- English Revision: 178522:239259 (outdated) -->
<!--
Copyright 2004-2005 The Apache Software Foundation
<?xml version='1.0' encoding='iso-2022-jp' ?>
<!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="./style/manual.ja.xsl"?>
-<!-- English Revision: 106090:178522 (outdated) -->
+<!-- English Revision: 106090:239259 (outdated) -->
<!--
Copyright 2002-2004 The Apache Software Foundation
<?xml version='1.0' encoding='EUC-KR' ?>
<!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="./style/manual.ko.xsl"?>
-<!-- English Revision: 106090:178522 (outdated) -->
+<!-- English Revision: 106090:239259 (outdated) -->
<!--
Copyright 2003-2004 The Apache Software Foundation
<relpath>.</relpath>
<variants>
- <variant>de</variant>
+ <variant outdated="yes">de</variant>
<variant>en</variant>
- <variant>es</variant>
+ <variant outdated="yes">es</variant>
<variant outdated="yes">ja</variant>
<variant outdated="yes">ko</variant>
<variant outdated="yes">ru</variant>
<?xml version='1.0' encoding='KOI8-R' ?>
<!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="./style/manual.ru.xsl"?>
-<!-- English Revision: 97974:178522 (outdated) -->
+<!-- English Revision: 97974:239259 (outdated) -->
<!--
Copyright 2002-2004 The Apache Software Foundation
<a href="./ko/stopping.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> |
<a href="./ru/stopping.html" hreflang="ru" rel="alternate" title="Russian"> ru </a></p>
</div>
+<div class="outofdate">Diese Übersetzung ist möglicherweise
+ nicht mehr aktuell. Bitte prüfen Sie die englische Version auf
+ die neuesten Änderungen.</div>
<p>Dieses Dokument umfasst das Beenden und Neustarten des
Apache auf Unix-ähnlichen Systemen. Anwender von Windows NT, 2000
been created, then create enough to pick up the slack. Hence the
code tries to maintain both the number of children appropriate for
the current load on the server, and respect your wishes with the
- <code class="directive">StartServers</code> parameter.</p>
+ <code class="directive"><a href="./mod/mpm_common.html#startservers">StartServers</a></code>
+ parameter.</p>
- <p>Users of the <code class="module"><a href="./mod/mod_status.html">mod_status</a></code>
+ <p>Users of <code class="module"><a href="./mod/mod_status.html">mod_status</a></code>
will notice that the server statistics are <strong>not</strong>
set to zero when a <code>USR1</code> is sent. The code was
written to both minimize the time in which the server is unable
<h2><a name="race" id="race">Appendix: signals and race conditions</a></h2>
<p>Prior to Apache 1.2b9 there were several <em>race
- conditions</em> involving the restart and die signals (a simple
- description of race condition is: a time-sensitive problem, as
- in if something happens at just the wrong time it won't behave
- as expected). For those architectures that have the "right"
+ conditions</em> involving the restart and die signals (a simply put,
+ a race condition is a time-sensitive problem - if something happens
+ at just the wrong time or things happen in the wrong order,
+ undesired behaviour will result. If the same thing happens at the right
+ time, all will be well). For those architectures that have the "right"
feature set we have eliminated as many as we can. But it should
- be noted that there still do exist race conditions on certain
+ be noted that race conditions do still exist on certain
architectures.</p>
- <p>Architectures that use an on disk <code class="directive"><a href="./mod/mpm_common.html#scoreboardfile">ScoreBoardFile</a></code> have the potential
- to corrupt their scoreboards. This can result in the "bind:
+ <p>Architectures that use an on-disk <code class="directive"><a href="./mod/mpm_common.html#scoreboardfile">ScoreBoardFile</a></code> can potentially have
+ their scoreboards corrupted. This can result in the "bind:
Address already in use" (after <code>HUP</code>) or "long lost
child came home!" (after <code>USR1</code>). The former is a fatal
error, while the latter just causes the server to lose a
- scoreboard slot. So it might be advisable to use graceful
+ scoreboard slot. So it may be advisable to use graceful
restarts, with an occasional hard restart. These problems are very
difficult to work around, but fortunately most architectures do
- not require a scoreboard file. See the <code class="directive"><a href="./mod/mpm_common.html#scoreboardfile">ScoreBoardFile</a></code> documentation for a
- architecture uses it.</p>
+ not require a scoreboard file. See the <code class="directive"><a href="./mod/mpm_common.html#scoreboardfile">ScoreBoardFile</a></code> documentation for
+ architecture which uses it.</p>
<p>All architectures have a small race condition in each child
involving the second and subsequent requests on a persistent
<a href="./ko/stopping.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> |
<a href="./ru/stopping.html" hreflang="ru" rel="alternate" title="Russian"> ru </a></p>
</div>
+<div class="outofdate">Esta traducción podría estar
+ obsoleta. Consulte la versión en inglés de la
+ documentación para comprobar si se han producido cambios
+ recientemente.</div>
<p>Este documento explica como iniciar y parar el servidor Apache
en sistemas tipo Unix. Los usuarios de Windows NT, 2000 y XP
been created, then create enough to pick up the slack. Hence the
code tries to maintain both the number of children appropriate for
the current load on the server, and respect your wishes with the
- <directive>StartServers</directive> parameter.</p>
+ <directive module="mpm_common">StartServers</directive>
+ parameter.</p>
- <p>Users of the <module>mod_status</module>
+ <p>Users of <module>mod_status</module>
will notice that the server statistics are <strong>not</strong>
set to zero when a <code>USR1</code> is sent. The code was
written to both minimize the time in which the server is unable
<section id="race"><title>Appendix: signals and race conditions</title>
<p>Prior to Apache 1.2b9 there were several <em>race
- conditions</em> involving the restart and die signals (a simple
- description of race condition is: a time-sensitive problem, as
- in if something happens at just the wrong time it won't behave
- as expected). For those architectures that have the "right"
+ conditions</em> involving the restart and die signals (a simply put,
+ a race condition is a time-sensitive problem - if something happens
+ at just the wrong time or things happen in the wrong order,
+ undesired behaviour will result. If the same thing happens at the right
+ time, all will be well). For those architectures that have the "right"
feature set we have eliminated as many as we can. But it should
- be noted that there still do exist race conditions on certain
+ be noted that race conditions do still exist on certain
architectures.</p>
- <p>Architectures that use an on disk <directive
- module="mpm_common">ScoreBoardFile</directive> have the potential
- to corrupt their scoreboards. This can result in the "bind:
+ <p>Architectures that use an on-disk <directive
+ module="mpm_common">ScoreBoardFile</directive> can potentially have
+ their scoreboards corrupted. This can result in the "bind:
Address already in use" (after <code>HUP</code>) or "long lost
child came home!" (after <code>USR1</code>). The former is a fatal
error, while the latter just causes the server to lose a
- scoreboard slot. So it might be advisable to use graceful
+ scoreboard slot. So it may be advisable to use graceful
restarts, with an occasional hard restart. These problems are very
difficult to work around, but fortunately most architectures do
not require a scoreboard file. See the <directive
- module="mpm_common">ScoreBoardFile</directive> documentation for a
- architecture uses it.</p>
+ module="mpm_common">ScoreBoardFile</directive> documentation for
+ architecture which uses it.</p>
<p>All architectures have a small race condition in each child
involving the second and subsequent requests on a persistent
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="./style/manual.de.xsl"?>
-<!-- English Revision: 151405 -->
+<!-- English Revision: 151405:239259 (outdated) -->
<!--
Copyright 2002-2004 The Apache Software Foundation
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="./style/manual.es.xsl"?>
-<!-- English Revision: 151405 -->
+<!-- English Revision: 151405:239259 (outdated) -->
<!--
Copyright 2004-2005 The Apache Software Foundation or it licensors,
<?xml version="1.0" encoding="iso-2022-jp"?>
<!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="./style/manual.ja.xsl"?>
-<!-- English Revision: 106090:151405 (outdated) -->
+<!-- English Revision: 106090:239259 (outdated) -->
<!--
Copyright 2002-2004 The Apache Software Foundation
<?xml version='1.0' encoding='EUC-KR' ?>
<!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="./style/manual.ko.xsl"?>
-<!-- English Revision: 106090:151405 (outdated) -->
+<!-- English Revision: 106090:239259 (outdated) -->
<!--
Copyright 2003-2004 The Apache Software Foundation
<relpath>.</relpath>
<variants>
- <variant>de</variant>
+ <variant outdated="yes">de</variant>
<variant>en</variant>
- <variant>es</variant>
+ <variant outdated="yes">es</variant>
<variant outdated="yes">ja</variant>
<variant outdated="yes">ko</variant>
<variant outdated="yes">ru</variant>
<?xml version='1.0' encoding='KOI8-R' ?>
<!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="./style/manual.ru.xsl"?>
-<!-- English Revision: 98017:151405 (outdated) -->
+<!-- English Revision: 98017:239259 (outdated) -->
<!--
Copyright 2003-2004 The Apache Software Foundation
#ifndef APU_HAS_LDAP
#error mod_ldap requires APR-util to have LDAP support built in
+#endif
+
+#if !defined(OS2) && !defined(WIN32) && !defined(BEOS) && !defined(NETWARE)
+#include "unixd.h"
+#define UTIL_LDAP_SET_MUTEX_PERMS
#endif
/* defines for certificate file types
}
if (st->connectionTimeout >= 0) {
- rc = ldap_set_option(NULL, LDAP_OPT_NETWORK_TIMEOUT, (void *)&timeOut);
+ rc = ldap_set_option(ldc->ldap, LDAP_OPT_NETWORK_TIMEOUT, (void *)&timeOut);
if (APR_SUCCESS != rc) {
ap_log_error(APLOG_MARK, APLOG_ERR, 0, r->server,
"LDAP: Could not set the connection timeout" );
return result;
}
+#ifdef UTIL_LDAP_SET_MUTEX_PERMS
+ result = unixd_set_global_mutex_perms(st->util_ldap_cache_lock);
+ if (result != APR_SUCCESS) {
+ ap_log_error(APLOG_MARK, APLOG_CRIT, result, s,
+ "LDAP cache: failed to set mutex permissions");
+ return result;
+ }
+#endif
+
/* merge config in all vhost */
s_vhost = s->next;
while (s_vhost) {
static void util_ldap_child_init(apr_pool_t *p, server_rec *s)
{
apr_status_t sts;
- util_ldap_state_t *st =
- (util_ldap_state_t *)ap_get_module_config(s->module_config, &ldap_module);
+ util_ldap_state_t *st = ap_get_module_config(s->module_config, &ldap_module);
+
+ if (!st->util_ldap_cache_lock) return;
sts = apr_global_mutex_child_init(&st->util_ldap_cache_lock, st->lock_file, p);
if (sts != APR_SUCCESS) {
{
#if APR_HAS_SHARED_MEMORY
apr_status_t result;
+ apr_size_t size;
- result = apr_shm_create(&st->cache_shm, st->cache_bytes, st->cache_file, st->pool);
+ size = APR_ALIGN_DEFAULT(st->cache_bytes);
+
+ result = apr_shm_create(&st->cache_shm, size, st->cache_file, st->pool);
if (result == APR_EEXIST) {
/*
* The cache could have already been created (i.e. we may be a child process). See
return result;
}
+ /* Determine the usable size of the shm segment. */
+ size = apr_shm_size_get(st->cache_shm);
+
/* This will create a rmm "handler" to get into the shared memory area */
- apr_rmm_init(&st->cache_rmm, NULL, (void *)apr_shm_baseaddr_get(st->cache_shm), st->cache_bytes, st->pool);
+ result = apr_rmm_init(&st->cache_rmm, NULL,
+ apr_shm_baseaddr_get(st->cache_shm), size,
+ st->pool);
+ if (result != APR_SUCCESS) {
+ return result;
+ }
+
#endif
apr_pool_cleanup_register(st->pool, st , util_ldap_cache_module_kill, apr_pool_cleanup_null);
return NULL;
}
+ /* Take a copy of the payload before proceeeding. */
+ payload = (*cache->copy)(cache, payload);
+ if (!payload) {
+ util_ald_free(cache, node);
+ return NULL;
+ }
+
/* populate the entry */
cache->inserts++;
hashval = (*cache->hash)(payload) % cache->size;
node->add_time = apr_time_now();
- node->payload = (*cache->copy)(cache, payload);
+ node->payload = payload;
node->next = cache->nodes[hashval];
cache->nodes[hashval] = node;
#define MIN_LENGTH(len1, len2) ((len1 > len2) ? len2 : len1)
request_rec *r = f->r;
conn_rec *c = r->connection;
- byterange_ctx *ctx = f->ctx;
+ byterange_ctx *ctx;
apr_bucket *e;
apr_bucket_brigade *bsend;
apr_off_t range_start;
apr_off_t range_end;
char *current;
- apr_off_t bb_length;
apr_off_t clength = 0;
apr_status_t rv;
int found = 0;
- if (!ctx) {
+ /* Iterate through the brigade until reaching EOS or a bucket with
+ * unknown length. */
+ for (e = APR_BRIGADE_FIRST(bb);
+ (e != APR_BRIGADE_SENTINEL(bb) && !APR_BUCKET_IS_EOS(e)
+ && e->length != (apr_size_t)-1);
+ e = APR_BUCKET_NEXT(e)) {
+ clength += e->length;
+ }
+
+ /* Don't attempt to do byte range work if this brigade doesn't
+ * contain an EOS, or if any of the buckets has an unknown length;
+ * this avoids the cases where it is expensive to perform
+ * byteranging (i.e. may require arbitrary amounts of memory). */
+ if (!APR_BUCKET_IS_EOS(e) || clength <= 0) {
+ ap_remove_output_filter(f);
+ return ap_pass_brigade(f->next, bb);
+ }
+
+ {
int num_ranges = ap_set_byterange(r);
/* We have nothing to do, get out of the way. */
return ap_pass_brigade(f->next, bb);
}
- ctx = f->ctx = apr_pcalloc(r->pool, sizeof(*ctx));
+ ctx = apr_pcalloc(r->pool, sizeof(*ctx));
ctx->num_ranges = num_ranges;
/* create a brigade in case we never call ap_save_brigade() */
ctx->bb = apr_brigade_create(r->pool, c->bucket_alloc);
}
}
- /* We can't actually deal with byte-ranges until we have the whole brigade
- * because the byte-ranges can be in any order, and according to the RFC,
- * we SHOULD return the data in the same order it was requested.
- *
- * XXX: We really need to dump all bytes prior to the start of the earliest
- * range, and only slurp up to the end of the latest range. By this we
- * mean that we should peek-ahead at the lowest first byte of any range,
- * and the highest last byte of any range.
- */
- if (!APR_BUCKET_IS_EOS(APR_BRIGADE_LAST(bb))) {
- ap_save_brigade(f, &ctx->bb, &bb, r->pool);
- return APR_SUCCESS;
- }
-
- /* Prepend any earlier saved brigades. */
- APR_BRIGADE_PREPEND(bb, ctx->bb);
-
- /* It is possible that we won't have a content length yet, so we have to
- * compute the length before we can actually do the byterange work.
- */
- apr_brigade_length(bb, 1, &bb_length);
- clength = (apr_off_t)bb_length;
-
/* this brigade holds what we will be sending */
bsend = apr_brigade_create(r->pool, c->bucket_alloc);
continue;
}
/* decode it if not already done */
- if (isenc && ch == '%') {
+ if (isenc && (isenc != PROXYREQ_REVERSE) && (ch == '%')) {
if (!apr_isxdigit(x[i + 1]) || !apr_isxdigit(x[i + 2]))
return NULL;
ch = ap_proxy_hex2c(&x[i + 1]);
/* forward declaration */
static void piped_log_maintenance(int reason, void *data, apr_wait_t status);
-static int piped_log_spawn(piped_log *pl)
+/* Spawn the piped logger process pl->program. */
+static apr_status_t piped_log_spawn(piped_log *pl)
{
- int rc = 0;
apr_procattr_t *procattr;
apr_proc_t *procnew = NULL;
apr_status_t status;
ap_log_error(APLOG_MARK, APLOG_STARTUP, 0, NULL,
"piped_log_spawn: unable to setup child process '%s': %s",
pl->program, apr_strerror(status, buf, sizeof(buf)));
- rc = -1;
}
else {
char **args;
if (status == APR_SUCCESS) {
pl->pid = procnew;
- ap_piped_log_write_fd(pl) = procnew->in;
+ /* procnew->in was dup2'd from ap_piped_log_write_fd(pl);
+ * since the original fd is still valid, close the copy to
+ * avoid a leak. */
+ apr_file_close(procnew->in);
+ procnew->in = NULL;
apr_proc_other_child_register(procnew, piped_log_maintenance, pl,
ap_piped_log_write_fd(pl), pl->p);
close_handle_in_child(pl->p, ap_piped_log_read_fd(pl));
ap_log_error(APLOG_MARK, APLOG_STARTUP, 0, NULL,
"unable to start piped log program '%s': %s",
pl->program, apr_strerror(status, buf, sizeof(buf)));
- rc = -1;
}
}
- return rc;
+ return status;
}
}
apr_pool_cleanup_register(p, pl, piped_log_cleanup,
piped_log_cleanup_for_exec);
- if (piped_log_spawn(pl) == -1) {
- int save_errno = errno;
+ if (piped_log_spawn(pl) != APR_SUCCESS) {
apr_pool_cleanup_kill(p, pl, piped_log_cleanup);
apr_file_close(ap_piped_log_read_fd(pl));
apr_file_close(ap_piped_log_write_fd(pl));
- errno = save_errno;
return NULL;
}
return pl;