diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 15:01:30 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 15:01:30 +0000 |
commit | 6beeb1b708550be0d4a53b272283e17e5e35fe17 (patch) | |
tree | 1ce8673d4aaa948e5554000101f46536a1e4cc29 /docs/manual/suexec.html | |
parent | Initial commit. (diff) | |
download | apache2-6beeb1b708550be0d4a53b272283e17e5e35fe17.tar.xz apache2-6beeb1b708550be0d4a53b272283e17e5e35fe17.zip |
Adding upstream version 2.4.57.upstream/2.4.57upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | docs/manual/suexec.html | 21 | ||||
-rw-r--r-- | docs/manual/suexec.html.en | 641 | ||||
-rw-r--r-- | docs/manual/suexec.html.fr.utf8 | 689 | ||||
-rw-r--r-- | docs/manual/suexec.html.ja.utf8 | 643 | ||||
-rw-r--r-- | docs/manual/suexec.html.ko.euc-kr | 564 | ||||
-rw-r--r-- | docs/manual/suexec.html.tr.utf8 | 580 |
6 files changed, 3138 insertions, 0 deletions
diff --git a/docs/manual/suexec.html b/docs/manual/suexec.html new file mode 100644 index 0000000..33e872a --- /dev/null +++ b/docs/manual/suexec.html @@ -0,0 +1,21 @@ +# GENERATED FROM XML -- DO NOT EDIT + +URI: suexec.html.en +Content-Language: en +Content-type: text/html; charset=UTF-8 + +URI: suexec.html.fr.utf8 +Content-Language: fr +Content-type: text/html; charset=UTF-8 + +URI: suexec.html.ja.utf8 +Content-Language: ja +Content-type: text/html; charset=UTF-8 + +URI: suexec.html.ko.euc-kr +Content-Language: ko +Content-type: text/html; charset=EUC-KR + +URI: suexec.html.tr.utf8 +Content-Language: tr +Content-type: text/html; charset=UTF-8 diff --git a/docs/manual/suexec.html.en b/docs/manual/suexec.html.en new file mode 100644 index 0000000..c51f6d9 --- /dev/null +++ b/docs/manual/suexec.html.en @@ -0,0 +1,641 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!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="en" xml:lang="en"><head> +<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" /> +<!-- + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + This file is generated from xml source: DO NOT EDIT + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + --> +<title>suEXEC Support - Apache HTTP Server Version 2.4</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 rel="stylesheet" type="text/css" href="./style/css/prettify.css" /> +<script src="./style/scripts/prettify.min.js" type="text/javascript"> +</script> + +<link href="./images/favicon.ico" rel="shortcut icon" /></head> +<body id="manual-page"><div id="page-header"> +<p class="menu"><a href="./mod/">Modules</a> | <a href="./mod/directives.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="./glossary.html">Glossary</a> | <a href="./sitemap.html">Sitemap</a></p> +<p class="apache">Apache HTTP Server Version 2.4</p> +<img alt="" src="./images/feather.png" /></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/">HTTP Server</a> > <a href="http://httpd.apache.org/docs/">Documentation</a> > <a href="./">Version 2.4</a></div><div id="page-content"><div id="preamble"><h1>suEXEC Support</h1> +<div class="toplang"> +<p><span>Available Languages: </span><a href="./en/suexec.html" title="English"> en </a> | +<a href="./fr/suexec.html" hreflang="fr" rel="alternate" title="Français"> fr </a> | +<a href="./ja/suexec.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> | +<a href="./ko/suexec.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> | +<a href="./tr/suexec.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p> +</div> + + <p>The <strong>suEXEC</strong> feature provides users of the Apache + HTTP Server the ability + to run <strong>CGI</strong> and <strong>SSI</strong> programs + under user IDs different from the user ID of the calling + web server. Normally, when a CGI or SSI program executes, it + runs as the same user who is running the web server.</p> + + <p>Used properly, this feature can reduce + considerably the security risks involved with allowing users to + develop and run private CGI or SSI programs. However, if suEXEC + is improperly configured, it can cause any number of problems + and possibly create new holes in your computer's security. If + you aren't familiar with managing <em>setuid root</em> programs + and the security issues they present, we highly recommend that + you not consider using suEXEC.</p> + </div> +<div id="quickview"><a href="https://www.apache.org/foundation/contributing.html" class="badge"><img src="https://www.apache.org/images/SupportApache-small.png" alt="Support Apache!" /></a><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#before">Before we begin</a></li> +<li><img alt="" src="./images/down.gif" /> <a href="#model">suEXEC Security Model</a></li> +<li><img alt="" src="./images/down.gif" /> <a href="#install">Configuring & Installing + suEXEC</a></li> +<li><img alt="" src="./images/down.gif" /> <a href="#enable">Enabling & Disabling + suEXEC</a></li> +<li><img alt="" src="./images/down.gif" /> <a href="#usage">Using suEXEC</a></li> +<li><img alt="" src="./images/down.gif" /> <a href="#debug">Debugging suEXEC</a></li> +<li><img alt="" src="./images/down.gif" /> <a href="#jabberwock">Beware the Jabberwock: + Warnings & Examples</a></li> +</ul><h3>See also</h3><ul class="seealso"><li><a href="#comments_section">Comments</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="before" id="before">Before we begin</a></h2> + + <p>Before jumping head-first into this document, + you should be aware that certain assumptions are made about you and + the environment in which you will be using suexec.</p> + + <p>First, it is assumed that you are using a UNIX + derivative operating system that is capable of + <strong>setuid</strong> and <strong>setgid</strong> operations. + All command examples are given in this regard. Other platforms, + if they are capable of supporting suEXEC, may differ in their + configuration.</p> + + <p>Second, it is assumed you are familiar with + some basic concepts of your computer's security and its + administration. This involves an understanding of + <strong>setuid/setgid</strong> operations and the various + effects they may have on your system and its level of + security.</p> + + <p>Third, it is assumed that you are using an + <strong>unmodified</strong> version of suEXEC code. All code + for suEXEC has been carefully scrutinized and tested by the + developers as well as numerous beta testers. Every precaution + has been taken to ensure a simple yet solidly safe base of + code. Altering this code can cause unexpected problems and new + security risks. It is <strong>highly</strong> recommended you + not alter the suEXEC code unless you are well versed in the + particulars of security programming and are willing to share + your work with the Apache HTTP Server development team for consideration.</p> + + <p>Fourth, and last, it has been the decision of + the Apache HTTP Server development team to <strong>NOT</strong> make suEXEC part of + the default installation of Apache httpd. To this end, suEXEC + configuration requires of the administrator careful attention + to details. After due consideration has been given to the + various settings for suEXEC, the administrator may install + suEXEC through normal installation methods. The values for + these settings need to be carefully determined and specified by + the administrator to properly maintain system security during + the use of suEXEC functionality. It is through this detailed + process that we hope to limit suEXEC + installation only to those who are careful and determined + enough to use it.</p> + + <p>Still with us? Yes? Good. Let's move on!</p> +</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> +<div class="section"> +<h2><a name="model" id="model">suEXEC Security Model</a></h2> + + <p>Before we begin configuring and installing + suEXEC, we will first discuss the security model you are about + to implement. By doing so, you may better understand what + exactly is going on inside suEXEC and what precautions are + taken to ensure your system's security.</p> + + <p><strong>suEXEC</strong> is based on a setuid + "wrapper" program that is called by the main Apache HTTP Server. + This wrapper is called when an HTTP request is made for a CGI + or SSI program that the administrator has designated to run as + a userid other than that of the main server. When such a + request is made, Apache httpd provides the suEXEC wrapper with the + program's name and the user and group IDs under which the + program is to execute.</p> + + <p>The wrapper then employs the following process + to determine success or failure -- if any one of these + conditions fail, the program logs the failure and exits with an + error, otherwise it will continue:</p> + + <ol> + <li> + <strong>Is the user executing this wrapper a valid user of + this system?</strong> + + <p class="indent"> + This is to ensure that the user executing the wrapper is + truly a user of the system. + </p> + </li> + + <li> + <strong>Was the wrapper called with the proper number of + arguments?</strong> + + <p class="indent"> + The wrapper will only execute if it is given the proper + number of arguments. The proper argument format is known + to the Apache HTTP Server. If the wrapper is not receiving + the proper number of arguments, it is either being + hacked, or there is something wrong with the suEXEC + portion of your Apache httpd binary. + </p> + </li> + + <li> + <strong>Is this valid user allowed to run the + wrapper?</strong> + + <p class="indent"> + Is this user the user allowed to run this wrapper? Only + one user (the Apache user) is allowed to execute this + program. + </p> + </li> + + <li> + <strong>Does the target CGI or SSI program have an unsafe + hierarchical reference?</strong> + + <p class="indent"> + Does the target CGI or SSI program's path contain a leading + '/' or have a '..' backreference? These are not allowed; the + target CGI/SSI program must reside within suEXEC's document + root (see <code>--with-suexec-docroot=<em>DIR</em></code> + below). + </p> + </li> + + <li> + <strong>Is the target user name valid?</strong> + + <p class="indent"> + Does the target user exist? + </p> + </li> + + <li> + <strong>Is the target group name valid?</strong> + + <p class="indent"> + Does the target group exist? + </p> + </li> + + <li> + <strong>Is the target user <em>NOT</em> superuser?</strong> + + + <p class="indent"> + suEXEC does not allow <code><em>root</em></code> + to execute CGI/SSI programs. + </p> + </li> + + <li> + <strong>Is the target userid <em>ABOVE</em> the minimum ID + number?</strong> + + <p class="indent"> + The minimum user ID number is specified during + configuration. This allows you to set the lowest possible + userid that will be allowed to execute CGI/SSI programs. + This is useful to block out "system" accounts. + </p> + </li> + + <li> + <strong>Is the target group <em>NOT</em> the superuser + group?</strong> + + <p class="indent"> + Presently, suEXEC does not allow the <code><em>root</em></code> + group to execute CGI/SSI programs. + </p> + </li> + + <li> + <strong>Is the target groupid <em>ABOVE</em> the minimum ID + number?</strong> + + <p class="indent"> + The minimum group ID number is specified during + configuration. This allows you to set the lowest possible + groupid that will be allowed to execute CGI/SSI programs. + This is useful to block out "system" groups. + </p> + </li> + + <li> + <strong>Can the wrapper successfully become the target user + and group?</strong> + + <p class="indent"> + Here is where the program becomes the target user and + group via setuid and setgid calls. The group access list + is also initialized with all of the groups of which the + user is a member. + </p> + </li> + + <li> + <strong>Can we change directory to the one in which the target + CGI/SSI program resides?</strong> + + <p class="indent"> + If it doesn't exist, it can't very well contain files. If we + can't change directory to it, it might as well not exist. + </p> + </li> + + <li> + <strong>Is the directory within the httpd webspace?</strong> + + <p class="indent"> + If the request is for a regular portion of the server, is + the requested directory within suEXEC's document root? If + the request is for a <code class="directive"><a href="./mod/mod_userdir.html#userdir">UserDir</a></code>, is the requested directory + within the directory configured as suEXEC's userdir (see + <a href="#install">suEXEC's configuration options</a>)? + </p> + </li> + + <li> + <strong>Is the directory <em>NOT</em> writable by anyone + else?</strong> + + <p class="indent"> + We don't want to open up the directory to others; only + the owner user may be able to alter this directories + contents. + </p> + </li> + + <li> + <strong>Does the target CGI/SSI program exist?</strong> + + <p class="indent"> + If it doesn't exists, it can't very well be executed. + </p> + </li> + + <li> + <strong>Is the target CGI/SSI program <em>NOT</em> writable + by anyone else?</strong> + + <p class="indent"> + We don't want to give anyone other than the owner the + ability to change the CGI/SSI program. + </p> + </li> + + <li> + <strong>Is the target CGI/SSI program <em>NOT</em> setuid or + setgid?</strong> + + <p class="indent"> + We do not want to execute programs that will then change + our UID/GID again. + </p> + </li> + + <li> + <strong>Is the target user/group the same as the program's + user/group?</strong> + + <p class="indent"> + Is the user the owner of the file? + </p> + </li> + + <li> + <strong>Can we successfully clean the process environment + to ensure safe operations?</strong> + + <p class="indent"> + suEXEC cleans the process's environment by establishing a + safe execution PATH (defined during configuration), as + well as only passing through those variables whose names + are listed in the safe environment list (also created + during configuration). + </p> + </li> + + <li> + <strong>Can we successfully become the target CGI/SSI program + and execute?</strong> + + <p class="indent"> + Here is where suEXEC ends and the target CGI/SSI program begins. + </p> + </li> + </ol> + + <p>This is the standard operation of the + suEXEC wrapper's security model. It is somewhat stringent and + can impose new limitations and guidelines for CGI/SSI design, + but it was developed carefully step-by-step with security in + mind.</p> + + <p>For more information as to how this security + model can limit your possibilities in regards to server + configuration, as well as what security risks can be avoided + with a proper suEXEC setup, see the <a href="#jabberwock">"Beware the Jabberwock"</a> section of this + document.</p> +</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> +<div class="section"> +<h2><a name="install" id="install">Configuring & Installing + suEXEC</a></h2> + + <p>Here's where we begin the fun.</p> + + <p><strong>suEXEC configuration + options</strong><br /> + </p> + + <dl> + <dt><code>--enable-suexec</code></dt> + + <dd>This option enables the suEXEC feature which is never + installed or activated by default. At least one + <code>--with-suexec-xxxxx</code> option has to be provided + together with the <code>--enable-suexec</code> option to let + APACI accept your request for using the suEXEC feature.</dd> + + <dt><code>--with-suexec-bin=<em>PATH</em></code></dt> + + <dd>The path to the <code>suexec</code> binary must be hard-coded + in the server for security reasons. Use this option to override + the default path. <em>e.g.</em> + <code>--with-suexec-bin=/usr/sbin/suexec</code></dd> + + <dt><code>--with-suexec-caller=<em>UID</em></code></dt> + + <dd>The <a href="mod/mpm_common.html#user">username</a> under which + httpd normally runs. This is the only user allowed to + execute the suEXEC wrapper.</dd> + + <dt><code>--with-suexec-userdir=<em>DIR</em></code></dt> + + <dd>Define to be the subdirectory under users' home + directories where suEXEC access should be allowed. All + executables under this directory will be executable by suEXEC + as the user so they should be "safe" programs. If you are + using a "simple" <code class="directive"><a href="./mod/mod_userdir.html#userdir">UserDir</a></code> + directive (ie. one without a "*" in it) this should be set to the same + value. suEXEC will not work properly in cases where the <code class="directive"><a href="./mod/mod_userdir.html#userdir">UserDir</a></code> directive points to + a location that is not the same as the user's home directory + as referenced in the <code>passwd</code> file. Default value is + "<code>public_html</code>".<br /> + If you have virtual hosts with a different <code class="directive"><a href="./mod/mod_userdir.html#userdir">UserDir</a></code> for each, + you will need to define them to all reside in one parent + directory; then name that parent directory here. <strong>If + this is not defined properly, "~userdir" cgi requests will + not work!</strong></dd> + + <dt><code>--with-suexec-docroot=<em>DIR</em></code></dt> + + <dd>Define as the DocumentRoot set for httpd. This will be + the only hierarchy (aside from <code class="directive"><a href="./mod/mod_userdir.html#userdir">UserDir</a></code>s) that can be used for suEXEC behavior. The + default directory is the <code>--datadir</code> value with the suffix + "<code>/htdocs</code>", <em>e.g.</em> if you configure with + "<code>--datadir=/home/apache</code>" the directory + "<code>/home/apache/htdocs</code>" is used as document root for the + suEXEC wrapper.</dd> + + <dt><code>--with-suexec-uidmin=<em>UID</em></code></dt> + + <dd>Define this as the lowest UID allowed to be a target user + for suEXEC. For most systems, 500 or 100 is common. Default + value is 100.</dd> + + <dt><code>--with-suexec-gidmin=<em>GID</em></code></dt> + + <dd>Define this as the lowest GID allowed to be a target + group for suEXEC. For most systems, 100 is common and + therefore used as default value.</dd> + + <dt><code>--with-suexec-logfile=<em>FILE</em></code></dt> + + <dd>This defines the filename to which all suEXEC + transactions and errors are logged (useful for auditing and + debugging purposes). By default the logfile is named + "<code>suexec_log</code>" and located in your standard logfile + directory (<code>--logfiledir</code>).</dd> + + <dt><code>--with-suexec-safepath=<em>PATH</em></code></dt> + + <dd>Define a safe PATH environment to pass to CGI + executables. Default value is + "<code>/usr/local/bin:/usr/bin:/bin</code>".</dd> + </dl> + + <h3>Compiling and installing the suEXEC wrapper</h3> + + + <p>If you have enabled the suEXEC feature with the + <code>--enable-suexec</code> option the <code>suexec</code> binary + (together with httpd itself) is automatically built if you execute + the <code>make</code> command.</p> + + <p>After all components have been built you can execute the + command <code>make install</code> to install them. The binary image + <code>suexec</code> is installed in the directory defined by the + <code>--sbindir</code> option. The default location is + "/usr/local/apache2/bin/suexec".</p> + + <p>Please note that you need <strong><em>root + privileges</em></strong> for the installation step. In order + for the wrapper to set the user ID, it must be installed as + owner <code><em>root</em></code> and must have the setuserid + execution bit set for file modes.</p> + + + <h3>Setting paranoid permissions</h3> + + + <p>Although the suEXEC wrapper will check to ensure that its + caller is the correct user as specified with the + <code>--with-suexec-caller</code> <code class="program"><a href="./programs/configure.html">configure</a></code> + option, there is + always the possibility that a system or library call suEXEC uses + before this check may be exploitable on your system. To counter + this, and because it is best-practise in general, you should use + filesystem permissions to ensure that only the group httpd + runs as may execute suEXEC.</p> + + <p>If for example, your web server is configured to run as:</p> + + <pre class="prettyprint lang-config">User www +Group webgroup</pre> + + + <p>and <code class="program"><a href="./programs/suexec.html">suexec</a></code> is installed at + "/usr/local/apache2/bin/suexec", you should run:</p> + + <div class="example"><p><code> + chgrp webgroup /usr/local/apache2/bin/suexec<br /> + chmod 4750 /usr/local/apache2/bin/suexec<br /> + </code></p></div> + + <p>This will ensure that only the group httpd runs as can even + execute the suEXEC wrapper.</p> + +</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> +<div class="section"> +<h2><a name="enable" id="enable">Enabling & Disabling + suEXEC</a></h2> + + <p>Upon startup of httpd, it looks for the file + <code class="program"><a href="./programs/suexec.html">suexec</a></code> in the directory defined by the + <code>--sbindir</code> option (default is + "/usr/local/apache/sbin/suexec"). If httpd finds a properly + configured suEXEC wrapper, it will print the following message + to the error log:</p> + +<div class="example"><p><code> + [notice] suEXEC mechanism enabled (wrapper: <var>/path/to/suexec</var>) +</code></p></div> + + <p>If you don't see this message at server startup, the server is + most likely not finding the wrapper program where it expects + it, or the executable is not installed <em>setuid root</em>.</p> + + <p>If you want to enable the suEXEC mechanism for the first time + and an Apache HTTP Server is already running you must kill and + restart httpd. Restarting it with a simple HUP or USR1 signal + will not be enough. </p> + <p>If you want to disable suEXEC you should kill and restart + httpd after you have removed the <code class="program"><a href="./programs/suexec.html">suexec</a></code> file.</p> +</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> +<div class="section"> +<h2><a name="usage" id="usage">Using suEXEC</a></h2> + + <p>Requests for CGI programs will call the suEXEC wrapper only if + they are for a virtual host containing a <code class="directive"><a href="./mod/mod_suexec.html#suexecusergroup">SuexecUserGroup</a></code> directive or if + they are processed by <code class="module"><a href="./mod/mod_userdir.html">mod_userdir</a></code>.</p> + + <p><strong>Virtual Hosts:</strong><br /> One way to use the suEXEC + wrapper is through the <code class="directive"><a href="./mod/mod_suexec.html#suexecusergroup">SuexecUserGroup</a></code> directive in + <code class="directive"><a href="./mod/core.html#virtualhost">VirtualHost</a></code> definitions. By + setting this directive to values different from the main server + user ID, all requests for CGI resources will be executed as the + <em>User</em> and <em>Group</em> defined for that <code class="directive"><a href="./mod/core.html#virtualhost"><VirtualHost></a></code>. If this + directive is not specified for a <code class="directive"><a href="./mod/core.html#virtualhost"><VirtualHost></a></code> then the main server userid + is assumed.</p> + + <p><strong>User directories:</strong><br /> Requests that are + processed by <code class="module"><a href="./mod/mod_userdir.html">mod_userdir</a></code> will call the suEXEC + wrapper to execute CGI programs under the userid of the requested + user directory. The only requirement needed for this feature to + work is for CGI execution to be enabled for the user and that the + script must meet the scrutiny of the <a href="#model">security + checks</a> above. See also the + <code>--with-suexec-userdir</code> <a href="#install">compile + time option</a>.</p> </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> +<div class="section"> +<h2><a name="debug" id="debug">Debugging suEXEC</a></h2> + + <p>The suEXEC wrapper will write log information + to the file defined with the <code>--with-suexec-logfile</code> + option as indicated above. If you feel you have configured and + installed the wrapper properly, have a look at this log and the + error_log for the server to see where you may have gone astray.</p> + +</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> +<div class="section"> +<h2><a name="jabberwock" id="jabberwock">Beware the Jabberwock: + Warnings & Examples</a></h2> + + <p><strong>NOTE!</strong> This section may not be + complete.</p> + + <p>There are a few points of interest regarding + the wrapper that can cause limitations on server setup. Please + review these before submitting any "bugs" regarding suEXEC.</p> + + <p><strong>suEXEC Points Of Interest</strong></p> + <ul> + + <li> + Hierarchy limitations + + <p class="indent"> + For security and efficiency reasons, all suEXEC requests + must remain within either a top-level document root for + virtual host requests, or one top-level personal document + root for userdir requests. For example, if you have four + VirtualHosts configured, you would need to structure all + of your VHosts' document roots off of one main httpd + document hierarchy to take advantage of suEXEC for + VirtualHosts. (Example forthcoming.) + </p> + </li> + + <li> + suEXEC's PATH environment variable + + <p class="indent"> + This can be a dangerous thing to change. Make certain + every path you include in this define is a + <strong>trusted</strong> directory. You don't want to + open people up to having someone from across the world + running a trojan horse on them. + </p> + </li> + + <li> + Altering the suEXEC code + + <p class="indent"> + Again, this can cause <strong>Big Trouble</strong> if you + try this without knowing what you are doing. Stay away + from it if at all possible. + </p> + </li> + </ul> + +</div></div> +<div class="bottomlang"> +<p><span>Available Languages: </span><a href="./en/suexec.html" title="English"> en </a> | +<a href="./fr/suexec.html" hreflang="fr" rel="alternate" title="Français"> fr </a> | +<a href="./ja/suexec.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> | +<a href="./ko/suexec.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> | +<a href="./tr/suexec.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p> +</div><div class="top"><a href="#page-header"><img src="./images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Comments</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Libera.chat, or sent to our <a href="https://httpd.apache.org/lists.html">mailing lists</a>.</div> +<script type="text/javascript"><!--//--><![CDATA[//><!-- +var comments_shortname = 'httpd'; +var comments_identifier = 'http://httpd.apache.org/docs/2.4/suexec.html'; +(function(w, d) { + if (w.location.hostname.toLowerCase() == "httpd.apache.org") { + d.write('<div id="comments_thread"><\/div>'); + var s = d.createElement('script'); + s.type = 'text/javascript'; + s.async = true; + s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier; + (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s); + } + else { + d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>'); + } +})(window, document); +//--><!]]></script></div><div id="footer"> +<p class="apache">Copyright 2023 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p> +<p class="menu"><a href="./mod/">Modules</a> | <a href="./mod/directives.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="./glossary.html">Glossary</a> | <a href="./sitemap.html">Sitemap</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!-- +if (typeof(prettyPrint) !== 'undefined') { + prettyPrint(); +} +//--><!]]></script> +</body></html>
\ No newline at end of file diff --git a/docs/manual/suexec.html.fr.utf8 b/docs/manual/suexec.html.fr.utf8 new file mode 100644 index 0000000..481dcd9 --- /dev/null +++ b/docs/manual/suexec.html.fr.utf8 @@ -0,0 +1,689 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!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="fr" xml:lang="fr"><head> +<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" /> +<!-- + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + This file is generated from xml source: DO NOT EDIT + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + --> +<title>Support suEXEC - Serveur HTTP Apache Version 2.4</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 rel="stylesheet" type="text/css" href="./style/css/prettify.css" /> +<script src="./style/scripts/prettify.min.js" type="text/javascript"> +</script> + +<link href="./images/favicon.ico" rel="shortcut icon" /></head> +<body id="manual-page"><div id="page-header"> +<p class="menu"><a href="./mod/">Modules</a> | <a href="./mod/directives.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="./glossary.html">Glossaire</a> | <a href="./sitemap.html">Plan du site</a></p> +<p class="apache">Serveur HTTP Apache Version 2.4</p> +<img alt="" src="./images/feather.png" /></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/">Serveur HTTP</a> > <a href="http://httpd.apache.org/docs/">Documentation</a> > <a href="./">Version 2.4</a></div><div id="page-content"><div id="preamble"><h1>Support suEXEC</h1> +<div class="toplang"> +<p><span>Langues Disponibles: </span><a href="./en/suexec.html" hreflang="en" rel="alternate" title="English"> en </a> | +<a href="./fr/suexec.html" title="Français"> fr </a> | +<a href="./ja/suexec.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> | +<a href="./ko/suexec.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> | +<a href="./tr/suexec.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p> +</div> + + <p>La fonctionnalité <strong>suEXEC</strong> permet + l'exécution des programmes <strong>CGI</strong> et + <strong>SSI</strong> sous un utilisateur autre que celui sous + lequel s'exécute le serveur web qui appelle ces programmes. + Normalement, lorsqu'un programme CGI ou SSI est lancé, il + s'exécute sous le même utilisateur que celui du serveur web qui + l'appelle.</p> + + <p>Utilisée de manière appropriée, cette fonctionnalité peut + réduire considérablement les risques de sécurité encourus + lorsqu'on autorise les utilisateurs à développer et faire + s'exécuter des programmes CGI ou SSI de leur cru. Cependant, mal + configuré, suEXEC peut causer de nombreux problèmes et même créer + de nouvelles failles dans la sécurité de votre ordinateur. Si + vous n'êtes pas familier avec la gestion des programmes + <em>setuid root</em> et les risques de sécurité qu'ils comportent, + nous vous recommandons vivement de ne pas tenter + d'utiliser suEXEC.</p> + </div> +<div id="quickview"><a href="https://www.apache.org/foundation/contributing.html" class="badge"><img src="https://www.apache.org/images/SupportApache-small.png" alt="Support Apache!" /></a><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#before">Avant de commencer</a></li> +<li><img alt="" src="./images/down.gif" /> <a href="#model">Modèle de sécurité de suEXEC</a></li> +<li><img alt="" src="./images/down.gif" /> <a href="#install">Configurer et installer suEXEC</a></li> +<li><img alt="" src="./images/down.gif" /> <a href="#enable">Activation et désactivation +de suEXEC</a></li> +<li><img alt="" src="./images/down.gif" /> <a href="#usage">Utilisation de suEXEC</a></li> +<li><img alt="" src="./images/down.gif" /> <a href="#debug">Débogage de suEXEC</a></li> +<li><img alt="" src="./images/down.gif" /> <a href="#jabberwock">Avis à la population ! + Avertissements et exemples</a></li> +</ul><h3>Voir aussi</h3><ul class="seealso"><li><a href="#comments_section">Commentaires</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="before" id="before">Avant de commencer</a></h2> + + <p>Avant de foncer tête baissée dans la lecture de ce document, + vous devez tenir compte de certaines hypothèses concernant vous-même + et l'environnement dans lequel vous allez utiliser suexec.</p> + + <p>Premièrement, vous devez utiliser un système d'exploitation + UNIX ou dérivé, capable d'effectuer des opérations + <strong>setuid</strong> et <strong>setgid</strong>. Tous les + exemples de commande sont donnés en conséquence. D'autres + plates-formes, même si elles supportent suEXEC, peuvent + avoir une configuration différente.</p> + + <p>Deuxièmement, vous devez être familier avec les concepts de base + relatifs à la sécurité de votre ordinateur et son administration. + Ceci implique la compréhension des opérations + <strong>setuid/setgid</strong> et des différents effets qu'elles + peuvent produire sur votre système et son niveau de sécurité.</p> + + <p>Troisièmement, vous devez utiliser une version + <strong>non modifiée</strong> du code de suEXEC. L'ensemble du + code de suEXEC a été scruté et testé avec soin par les développeurs + et de nombreux bêta testeurs. Toutes les précautions ont été prises + pour s'assurer d'une base sûre de code non seulement simple, mais + aussi solide. La modification de ce code peut causer des problèmes + inattendus et de nouveaux risques de sécurité. Il est + <strong>vivement</strong> recommandé de ne pas modifier le code de + suEXEC, à moins que vous ne soyez un programmeur spécialiste des + particularités liées à la sécurité, et souhaitez partager votre + travail avec l'équipe de développement du serveur HTTP Apache afin + de pouvoir en discuter.</p> + + <p>Quatrièmement et dernièrement, l'équipe de développement du + serveur HTTP Apache a décidé de ne + <strong>PAS</strong> inclure suEXEC dans l'installation par défaut + d'Apache httpd. Pour pouvoir mettre en oeuvre suEXEC, l'administrateur + doit porter la plus grande attention aux détails. Après avoir bien + réfléchi aux différents points de la configuration de suEXEC, + l'administrateur peut l'installer selon les méthodes classiques. + Les valeurs des paramètres de configuration doivent être + déterminées et spécifiées avec soin par l'administrateur, afin de + maintenir la sécurité du système de manière appropriée lors de + l'utilisation de la fonctionnalité suEXEC. C'est par le biais de + ce processus minutieux que nous espérons réserver + l'installation de suEXEC aux administrateurs prudents et + suffisamment déterminés à vouloir l'utiliser.</p> + + <p>Vous êtes encore avec nous ? Oui ? Bien. + Alors nous pouvons continuer !</p> +</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> +<div class="section"> +<h2><a name="model" id="model">Modèle de sécurité de suEXEC</a></h2> + + <p>Avant d'installer et configurer suEXEC, nous allons tout d'abord + décrire le modèle de sécurité que vous êtes sur le point + d'implémenter. Vous devriez ainsi mieux comprendre ce qui se passe + vraiment à l'intérieur de suEXEC et quelles précautions ont été + prises pour préserver la sécurité de votre système.</p> + + <p><strong>suEXEC</strong> est basé sur un programme "conteneur" + (wrapper) setuid qui est appelé par le serveur HTTP Apache principal. + Ce conteneur est appelé quand une requête HTTP concerne + un programme CGI ou SSI que l'administrateur + a décidé de faire s'exécuter + sous un utilisateur autre que celui du serveur principal. + Lorsqu'il reçoit une telle requête, Apache httpd fournit au conteneur + suEXEC le nom du programme, ainsi que les identifiants utilisateur + et groupe sous lesquels le programme doit s'exécuter.</p> + + <p>Le conteneur effectue ensuite les vérifications suivantes afin + de déterminer la réussite ou l'échec du processus -- si une seule + de ces conditions n'est pas vérifiée, le programme journalise + l'erreur et se termine en retournant un code d'erreur, sinon il + continue :</p> + + <ol> + <li> + <strong>L'utilisateur qui exécute le conteneur est-il un + utilisateur valide de ce système ?</strong> + + <p class="indent"> + Ceci permet de s'assurer que l'utilisateur qui exécute le + conteneur est vraiment un utilisateur appartenant au système. + </p> + </li> + + <li> + <strong>Le conteneur a-t-il été appelé avec un nombre + d'arguments correct ?</strong> + + <p class="indent"> + Le conteneur ne s'exécutera que si on lui fournit un nombre + d'arguments correct. Le serveur HTTP apache sait quel est le + bon format des arguments. Si le conteneur ne reçoit pas un + nombre d'arguments correct, soit il a été modifié, + soit quelque chose ne va pas dans la portion suEXEC de + votre binaire Apache httpd. + </p> + </li> + + <li> + <strong>Cet utilisateur valide est-il autorisé à exécuter le + conteneur ?</strong> + + <p class="indent"> + Cet utilisateur est-il celui autorisé à exécuter le + conteneur ? Un seul utilisateur (celui d'Apache) est + autorisé à exécuter ce programme. + </p> + </li> + + <li> + <strong>Le chemin du programme CGI ou SSI cible est-il + non sûr ?</strong> + + <p class="indent"> + Le chemin du programme CGI ou SSI cible débute-t-il par un + '/' ou contient-il une référence arrière '..' ? Ceci est + interdit ; le programme CGI ou SSI cible doit se trouver dans + la hiérarchie de la racine des documents de suEXEC (voir + <code>--with-suexec-docroot=<em>DIR</em></code> ci-dessous). + </p> + </li> + + <li> + <strong>Le nom utilisateur cible est-il valide ?</strong> + + <p class="indent"> + L'utilisateur cible existe-t-il ? + </p> + </li> + + <li> + <strong>Le nom du groupe cible est-il valide ?</strong> + + <p class="indent"> + Le groupe cible existe-t-il ? + </p> + </li> + + <li> + <strong>L'utilisateur cible n'est-il <em>PAS</em> + superutilisateur ?</strong> + + + <p class="indent"> + suEXEc ne permet pas à + <code><em>root</em></code> d'exécuter des programmes CGI/SSI. + </p> + </li> + + <li> + <strong>Le numéro de l'identifiant de l'utilisateur cible + est-il <em>SUPERIEUR</em> au numéro d'identifiant + minimum ?</strong> + + <p class="indent"> + Le numéro d'identifiant utilisateur minimum est défini à + l'exécution du script configure. Ceci vous permet de définir + le numéro d'identifiant utilisateur le plus bas qui sera + autorisé à éxécuter des programmes CGI/SSI. En particulier, + cela permet d'écarter les comptes système. + </p> + </li> + + <li> + <strong>Le groupe cible n'est-il <em>PAS</em> le groupe + superutilisateur ?</strong> + + <p class="indent"> + Actuellement, suEXEC ne permet pas au groupe + <code><em>root</em></code> d'exécuter des programmes CGI/SSI. + </p> + </li> + + <li> + <strong> Le numéro d'identifiant du groupe cible est-il + <em>SUPERIEUR</em> au numéro d'identifiant minimum ?</strong> + + <p class="indent"> + Le numéro d'identifiant de groupe minimum est spécifié lors + de l'exécution du script configure. Ceci vous permet de + définir l'identifiant de groupe le plus bas possible qui sera + autorisé à exécuter des programmes CGI/SSI, et est + particulièrement utile pour écarter les groupes "système". + </p> + </li> + + <li> + <strong>Le conteneur peut-il obtenir avec succès l'identité + des utilisateur et groupe cibles ?</strong> + + <p class="indent"> + C'est ici que le programme obtient l'identité des utilisateur + et groupe cibles via des appels à setuid et setgid. De même, + la liste des accès groupe est initialisée avec tous les + groupes auxquels l'utilisateur cible appartient. + </p> + </li> + + <li> + <strong>Peut-on se positionner dans le répertoire dans dequel + sont situés les programmes CGI/SSI ?</strong> + + <p class="indent"> + S'il n'existe pas, il ne peut pas contenir de fichier. Et si + l'on ne peut pas s'y positionner, il n'existe probablement + pas. + </p> + </li> + + <li> + <strong>Le répertoire est-il dans l'espace web + de httpd ?</strong> + + <p class="indent"> + Si la requête concerne une portion de la racine du serveur, + le répertoire demandé est-il dans la hiérarchie de la racine + des documents de suEXEC ? Si la requête concerne un + <code class="directive"><a href="./mod/mod_userdir.html#userdir">UserDir</a></code>, le répertoire demandé est-il dans + la hiérarchie du répertoire défini comme le répertoire + utilisateur de suEXEC (voir les + <a href="#install">options de configuration de suEXEC</a>) ? + </p> + </li> + + <li> + <strong>L'écriture dans le répertoire est-elle interdite pour + un utilisateur autre que le propriétaire </strong> + + <p class="indent"> + Le répertoire ne doit pas être ouvert aux autres + utilisateurs ; seul l'utilisateur propriétaire doit pouvoir + modifier le contenu du répertoire. + </p> + </li> + + <li> + <strong>Le programme CGI/SSI cible existe-t-il ?</strong> + + <p class="indent"> + S'il n'existe pas, il ne peut pas être exécuté. + </p> + </li> + + <li> + <strong>Les utilisateurs autres que le propriétaire n'ont-ils + <em>PAS</em> de droits en écriture sur le programme + CGI/SSI ?</strong> + + <p class="indent"> + Les utilisateurs autres que le propriétaire ne doivent pas + pouvoir modifier le programme CGI/SSI. + </p> + </li> + + <li> + <strong>Le programme CGI/SSI n'est-il <em>PAS</em> setuid ou + setgid ?</strong> + + <p class="indent"> + Les programmes cibles ne doivent pas pouvoir modifier à + nouveau les identifiants utilisateur/groupe. + </p> + </li> + + <li> + <strong>Le couple utilisateur/groupe cible est-il le même que + celui du programme ?</strong> + + <p class="indent"> + L'utilisateur est-il le propriétaire du fichier ? + </p> + </li> + + <li> + <strong>Peut-on nettoyer avec succès l'environnement des + processus afin de garantir la sûreté des opérations ?</strong> + + <p class="indent"> + suExec nettoie l'environnement des processus en établissant + un chemin d'exécution sûr (défini lors de la configuration), + et en ne passant que les variables dont les noms font partie + de la liste de l'environnement sûr (créée de même lors de la + configuration). + </p> + </li> + + <li> + <strong>Le conteneur peut-il avec succès se substituer au + programme CGI/SSI cible et s'exécuter ?</strong> + + <p class="indent"> + C'est là où l'exécution de suEXEC s'arrête et où commence + celle du programme CGI/ssi cible. + </p> + </li> + </ol> + + <p>Ce sont les opérations standards effectuées par le modèle de + sécurité du conteneur suEXEC. Il peut paraître strict et est + susceptible d'imposer de nouvelles limitations et orientations + dans la conception des programmes CGI/SSI, mais il a été développé + avec le plus grand soin, étape par étape, en se focalisant sur + la sécurité.</p> + + <p>Pour plus d'informations sur la mesure dans laquelle ce modèle + de sécurité peut limiter vos possibilités au regard de la + configuration du serveur, ainsi que les risques de sécurité qui + peuvent être évités grâce à une configuration appropriée de suEXEC, + se référer à la section <a href="#jabberwock">"Avis à la population !"</a> de ce document.</p> +</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> +<div class="section"> +<h2><a name="install" id="install">Configurer et installer suEXEC</a></h2> + + <p>C'est ici que nous entrons dans le vif du sujet.</p> + + <p><strong>Options de configuration de suEXEC</strong><br /> + </p> + + <dl> + <dt><code>--enable-suexec</code></dt> + + <dd>Cette option active la fonctionnalité suEXEC qui n'est + jamais installée ou activée par défaut. Au moins une option + <code>--with-suexec-xxxxx</code> doit accompagner l'option + <code>--enable-suexec</code> pour qu'APACI (l'utilitaire de + configuration de la compilation d'Apache) accepte votre demande + d'utilisation de la fonctionnalité suEXEC.</dd> + + <dt><code>--with-suexec-bin=<em>PATH</em></code></dt> + + <dd>Le chemin du binaire <code>suexec</code> doit être codé en + dur dans le serveur pour des raisons de sécurité. Cette option + vous permet de modifier le chemin par défaut. + <em>Par exemple</em> + <code>--with-suexec-bin=/usr/sbin/suexec</code></dd> + + <dt><code>--with-suexec-caller=<em>UID</em></code></dt> + + <dd>L'<a href="mod/mpm_common.html#user">utilisateur</a> sous + lequel httpd s'exécute habituellement. C'est le seul utilisateur + autorisé à exécuter le wrapper suEXEC.</dd> + + <dt><code>--with-suexec-userdir=<em>DIR</em></code></dt> + + <dd>Cette option définit le sous-répertoire de la hiérarchie des + répertoires utilisateurs dans lequel l'utilisation + de suEXEC sera autorisée. Tous les exécutables situés dans ce + répertoire seront exécutables par suEXEC sous l'utilisateur + cible ; ces programmes doivent donc être sûrs. Si vous utilisez + une directive <code class="directive"><a href="./mod/mod_userdir.html#userdir">UserDir</a></code> + "simple" (c'est à dire ne contenant pas de + "*"), l'option --with-suexec-userdir + devra contenir la même valeur. SuEXEC ne fonctionnera pas + correctement si la directive <code class="directive"><a href="./mod/mod_userdir.html#userdir">UserDir</a></code> contient une valeur + différente du répertoire home de l'utilisateur tel qu'il est + défini dans le fichier <code>passwd</code>. la valeur par défaut + est "<code>public_html</code>".<br /> + Si vous avez plusieurs hôtes virtuels avec une directive + <code class="directive"><a href="./mod/mod_userdir.html#userdir">UserDir</a></code> différente + pour chacun d'entre eux, vous devrez faire en sorte que chaque + UserDir possède un répertoire parent commun ; donnez alors à + l'option --with-suexec-userdir le nom + de ce répertoire commun. <strong>Si tout ceci n'est pas défini + correctement, les requêtes CGI "~userdir" ne fonctionneront + pas !</strong></dd> + + <dt><code>--with-suexec-docroot=<em>DIR</em></code></dt> + + <dd>Cette option fonctionne comme la directive DocumentRoot pour + httpd. Il s'agit de la seule hiérarchie (en dehors des directives + <code class="directive"><a href="./mod/mod_userdir.html#userdir">UserDir</a></code>) dans laquelle la fonctionnalité suEXEC + pourra être utilisée. La valeur par défaut est la valeur de + <code>--datadir</code> accompagnée du suffixe + "<code>/htdocs</code>" ; + <em>Par exemple</em>, si vous exécutez configure avec + "<code>--datadir=/home/apache</code>", la valeur + "<code>/home/apache/htdocs</code>" sera utilisée par défaut comme + racine des documents pour le conteneur suEXEC.</dd> + + <dt><code>--with-suexec-uidmin=<em>UID</em></code></dt> + + <dd>Cette option définit l'identifiant utilisateur le plus bas + avec lequel un utilisateur pourra être la cible de + suEXEC. 500 ou 100 sont des valeurs courantes sur la plupart des + systèmes. la valeur par défaut est 100.</dd> + + <dt><code>--with-suexec-gidmin=<em>GID</em></code></dt> + + <dd>Cette option définit l'identifiant de groupe le plus bas + avec lequel un utilisateur pourra être la cible de + suEXEC. 100 est une valeur courante sur la plupart des + systèmes et est par conséquent la valeur par défaut.</dd> + + <dt><code>--with-suexec-logfile=<em>FILE</em></code></dt> + + <dd>Cette option permet de définir le fichier dans lequel + toutes les transactions et erreurs de suEXEC seront journalisées + (à des fins d'analyse ou de débogage). Par défaut, le fichier + journal se nomme "<code>suexec_log</code>" et se trouve dans votre + répertoire standard des fichiers journaux défini par + <code>--logfiledir</code></dd> + + <dt><code>--with-suexec-safepath=<em>PATH</em></code></dt> + + <dd>Cette option permet de définir une variable d'environnement + PATH sûre à passer aux exécutables CGI. La valeur par défaut + est "<code>/usr/local/bin:/usr/bin:/bin</code>".</dd> + </dl> + + <h3>Compilation et installation du conteneur suEXEC</h3> + + + <p>Si vous avez activé la fonctionnalité suEXEC à l'aide de + l'option <code>--enable-suexec</code>, le binaire + <code>suexec</code> sera automatiquement construit (en même temps + que httpd) lorsque vous exécuterez la commande + <code>make</code>.</p> + + <p>Lorsque tous les composants auront été construits, vous pourrez + exécuter la commande <code>make install</code> afin de les + installer. Le binaire <code>suexec</code> sera installé dans le + répertoire défini à l'aide de l'option <code>--sbindir</code>. La + localisation par défaut est "/usr/local/apache2/bin/suexec".</p> + <p>Veuillez noter que vous aurez besoin des + <strong><em>privilèges root</em></strong> pour passer l'étape de + l'installation. Pour que le conteneur puisse changer + l'identifiant utilisateur, il doit avoir comme propriétaire + <code><em>root</em></code>, et les droits du fichier doivent + inclure le bit d'exécution setuserid.</p> + + + <h3>>Mise en place de permissions pour + paranoïaque</h3> + + <p>Bien que le conteneur suEXEC vérifie que l'utilisateur qui + l'appelle correspond bien à l'utilisateur spécifié à l'aide de + l'option <code>--with-suexec-caller</code> du programme + <code class="program"><a href="./programs/configure.html">configure</a></code>, il subsiste toujours le risque qu'un + appel système ou une bibliothèque fasse appel à suEXEC avant que + cette vérification ne soit exploitable sur votre système. Pour + tenir compte de ceci, et parce que c'est en général la meilleure + pratique, vous devez utiliser les permissions du système de + fichiers afin de vous assurer que seul le groupe sous lequel + s'exécute httpd puisse faire appel à suEXEC.</p> + + <p>Si, par exemple, votre serveur web est configuré pour + s'exécuter en tant que :</p> + +<pre class="prettyprint lang-config">User www +Group webgroup</pre> + + + <p>et <code class="program"><a href="./programs/suexec.html">suexec</a></code> se trouve à + "/usr/local/apache2/bin/suexec", vous devez exécuter les + commandes</p> + +<div class="example"><p><code> + chgrp webgroup /usr/local/apache2/bin/suexec<br /> + chmod 4750 /usr/local/apache2/bin/suexec<br /> +</code></p></div> + + <p>Ceci permet de s'assurer que seul le groupe sous lequel httpd + s'exécute (ici webgroup) puisse faire appel au conteneur + suEXEC.</p> + +</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> +<div class="section"> +<h2><a name="enable" id="enable">Activation et désactivation +de suEXEC</a></h2> + + <p>Au démarrage, httpd vérifie la présence du fichier + <code class="program"><a href="./programs/suexec.html">suexec</a></code> dans le répertoire défini par + l'option <code>--sbindir</code> du script configure (le + répertoire par défaut est "/usr/local/apache/sbin/suexec"). Si + httpd trouve un conteneur suEXEC correctement configuré, il + enregistrera le message suivant dans le journal des erreurs :</p> + +<div class="example"><p><code> + [notice] suEXEC mechanism enabled (wrapper: <var>/path/to/suexec</var>) +</code></p></div> + + <p>Si ce message n'est pas généré au démarrage du serveur, ce + dernier ne trouve probablement pas le programme conteneur à + l'endroit où il est sensé être, ou l'exécutable suexec n'est pas + installé en <em>setuid root</em>.</p> + + <p>Si le serveur HTTP Apache est déjà en cours d'exécution, et si + vous activez le mécanisme suEXEC pour la première fois, vous + devez arrêter et redémarrer httpd. Un redémarrage + à l'aide d'un simple signal HUP ou USR1 suffira. </p> + <p>Pour désactiver suEXEC, vous devez supprimer le fichier + <code class="program"><a href="./programs/suexec.html">suexec</a></code>, puis arrêter et redémarrer + httpd.</p> +</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> +<div class="section"> +<h2><a name="usage" id="usage">Utilisation de suEXEC</a></h2> + + <p>Les requêtes pour des programmes CGI ne feront appel au + conteneur suEXEC que si elles concernent un hôte virtuel + contenant une directive <code class="directive"><a href="./mod/mod_suexec.html#suexecusergroup">SuexecUserGroup</a></code>, ou si elles sont + traitées par <code class="module"><a href="./mod/mod_userdir.html">mod_userdir</a></code>.</p> + + <p><strong>Hôtes virtuels :</strong><br /> Une des méthodes + d'utilisation du conteneur suEXEC consiste à insérer une + directive <code class="directive"><a href="./mod/mod_suexec.html#suexecusergroup">SuexecUserGroup</a></code> dans une section + <code class="directive"><a href="./mod/core.html#virtualhost">VirtualHost</a></code>. En définissant + des valeurs différentes de celles du serveur principal, toutes les + requêtes pour des ressources CGI seront exécutées sous + les <em>User</em> et <em>Group</em> définis pour cette section + <code class="directive"><a href="./mod/core.html#virtualhost"><VirtualHost></a></code>. Si cette + directive est absente de la section <code class="directive"><a href="./mod/core.html#virtualhost"><VirtualHost></a></code>, l'utilisateur du + serveur principal sera pris par défaut</p> + + <p><strong>Répertoires des utilisateurs :</strong><br /> Avec + cette méthode, les + requêtes traitées par <code class="module"><a href="./mod/mod_userdir.html">mod_userdir</a></code> appelleront le + conteneur suEXEC pour exécuter le programme CGI sous l'identifiant + utilisateur du répertoire utilisateur concerné. Seuls prérequis + pour pouvoir accéder à cette fonctionnalité : l'exécution des CGI + doit être activée pour l'utilisateur concerné, et le script doit + passer avec succès le test des <a href="#model">vérifications de + sécurité</a> décrit plus haut. Voir aussi l' + <a href="#install">option de compilation</a> + <code>--with-suexec-userdir</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="debug" id="debug">Débogage de suEXEC</a></h2> + + <p>Le conteneur suEXEC va écrire ses informations de journalisation + dans le fichier défini par l'option de compilation + <code>--with-suexec-logfile</code> comme indiqué plus haut. Si vous + pensez avoir configuré et installé correctement le conteneur, + consultez ce journal, ainsi que le journal des erreurs du serveur + afin de déterminer l'endroit où vous avez fait fausse route.</p> + +</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> +<div class="section"> +<h2><a name="jabberwock" id="jabberwock">Avis à la population ! + Avertissements et exemples</a></h2> + + <p><strong>NOTE !</strong> Cette section est peut-être + incomplète.</p> + + <p>Quelques points importants du conteneur peuvent + imposer des contraintes du point de vue de la configuration du + serveur. Veuillez en prendre connaissance avant de soumettre un + rapport de bogue à propos de suEXEC.</p> + + <p><strong>Points importants à propos de suEXEC</strong></p> + <ul> + + <li> + Limitations concernant la hiérarchie. + + <p class="indent"> + Pour des raisons de sécurité et d'efficacité, toutes les + requêtes suEXEC ne doivent concerner que des ressources + situées dans la racine des documents définie pour les + requêtes concernant un hôte virtuel, ou des ressources + situées dans la racine des documents définies pour les + requêtes concernant un répertoire utilisateur. Par exemple, + si vous avez configuré quatre hôtes virtuels, vous devrez + définir la structure des racines de documents de vos hôtes + virtuels en dehors d'une hiérarchie de documents principale + de httpd, afin de tirer parti de suEXEC dans le contexte des + hôtes virtuels (Exemple à venir). + </p> + </li> + + <li> + La variable d'environnement PATH de suEXEC + + <p class="indent"> + Modifier cette variable peut s'avérer dangereux. Assurez-vous + que tout chemin que vous ajoutez à cette variable est un + répertoire <strong>de confiance</strong>. Vous n'avez + probablement pas l'intention d'ouvrir votre serveur de façon + à ce que l'on puisse y exécuter un cheval de Troie. + </p> + </li> + + <li> + Modification de suEXEC + + <p class="indent"> + Encore une fois, ceci peut vous causer de + <strong>graves ennuis</strong> si vous vous y essayez sans + savoir ce que vous faites. Evitez de vous y risquer dans la + mesure du possible. + </p> + </li> + </ul> + +</div></div> +<div class="bottomlang"> +<p><span>Langues Disponibles: </span><a href="./en/suexec.html" hreflang="en" rel="alternate" title="English"> en </a> | +<a href="./fr/suexec.html" title="Français"> fr </a> | +<a href="./ja/suexec.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> | +<a href="./ko/suexec.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> | +<a href="./tr/suexec.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p> +</div><div class="top"><a href="#page-header"><img src="./images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Commentaires</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Libera.chat, or sent to our <a href="https://httpd.apache.org/lists.html">mailing lists</a>.</div> +<script type="text/javascript"><!--//--><![CDATA[//><!-- +var comments_shortname = 'httpd'; +var comments_identifier = 'http://httpd.apache.org/docs/2.4/suexec.html'; +(function(w, d) { + if (w.location.hostname.toLowerCase() == "httpd.apache.org") { + d.write('<div id="comments_thread"><\/div>'); + var s = d.createElement('script'); + s.type = 'text/javascript'; + s.async = true; + s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier; + (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s); + } + else { + d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>'); + } +})(window, document); +//--><!]]></script></div><div id="footer"> +<p class="apache">Copyright 2023 The Apache Software Foundation.<br />Autorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p> +<p class="menu"><a href="./mod/">Modules</a> | <a href="./mod/directives.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="./glossary.html">Glossaire</a> | <a href="./sitemap.html">Plan du site</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!-- +if (typeof(prettyPrint) !== 'undefined') { + prettyPrint(); +} +//--><!]]></script> +</body></html>
\ No newline at end of file diff --git a/docs/manual/suexec.html.ja.utf8 b/docs/manual/suexec.html.ja.utf8 new file mode 100644 index 0000000..98cd6d2 --- /dev/null +++ b/docs/manual/suexec.html.ja.utf8 @@ -0,0 +1,643 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!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="ja" xml:lang="ja"><head> +<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" /> +<!-- + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + This file is generated from xml source: DO NOT EDIT + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + --> +<title>suEXEC サポート - Apache HTTP サーバ バージョン 2.4</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 rel="stylesheet" type="text/css" href="./style/css/prettify.css" /> +<script src="./style/scripts/prettify.min.js" type="text/javascript"> +</script> + +<link href="./images/favicon.ico" rel="shortcut icon" /></head> +<body id="manual-page"><div id="page-header"> +<p class="menu"><a href="./mod/">モジュール</a> | <a href="./mod/directives.html">ディレクティブ</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="./glossary.html">用語</a> | <a href="./sitemap.html">サイトマップ</a></p> +<p class="apache">Apache HTTP サーバ バージョン 2.4</p> +<img alt="" src="./images/feather.png" /></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/">HTTP サーバ</a> > <a href="http://httpd.apache.org/docs/">ドキュメンテーション</a> > <a href="./">バージョン 2.4</a></div><div id="page-content"><div id="preamble"><h1>suEXEC サポート</h1> +<div class="toplang"> +<p><span>翻訳済み言語: </span><a href="./en/suexec.html" hreflang="en" rel="alternate" title="English"> en </a> | +<a href="./fr/suexec.html" hreflang="fr" rel="alternate" title="Français"> fr </a> | +<a href="./ja/suexec.html" title="Japanese"> ja </a> | +<a href="./ko/suexec.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> | +<a href="./tr/suexec.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p> +</div> +<div class="outofdate">この日本語訳はすでに古くなっている + 可能性があります。 + 最近更新された内容を見るには英語版をご覧下さい。 + </div> + + <p><strong>suEXEC</strong> + 機能により、Apache ユーザは Web サーバを実行しているユーザ ID とは + 異なるユーザ ID で <strong>CGI</strong> プログラムや <strong>SSI</strong> + プログラムを実行することができます。CGI プログラムまたは SSI + プログラムを実行する場合、通常は web サーバと同じユーザで実行されます。 + </p> + + <p>適切に使用すると、この機能によりユーザが個別の CGI + や SSI プログラムを開発し実行することで生じるセキュリティ上の危険を、 + かなり減らすことができます。しかし、suEXEC の設定が不適切だと、 + 多くの問題が生じ、あなたのコンピュータに新しいセキュリティホールを + 作ってしまう可能性があります。あなたが <em>setuid root</em> + されたプログラムと、それらから生じるセキュリティ上の問題の管理に + 詳しくないようなら、suEXEC の使用を検討しないように強く推奨します。 + </p> + </div> +<div id="quickview"><a href="https://www.apache.org/foundation/contributing.html" class="badge"><img src="https://www.apache.org/images/SupportApache-small.png" alt="Support Apache!" /></a><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#before">始める前に</a></li> +<li><img alt="" src="./images/down.gif" /> <a href="#model">suEXEC セキュリティモデル</a></li> +<li><img alt="" src="./images/down.gif" /> <a href="#install">suEXEC + の設定とインストール</a></li> +<li><img alt="" src="./images/down.gif" /> <a href="#enable">suEXEC + の有効化と無効化</a></li> +<li><img alt="" src="./images/down.gif" /> <a href="#usage">suEXEC の使用</a></li> +<li><img alt="" src="./images/down.gif" /> <a href="#debug">suEXEC のデバッグ</a></li> +<li><img alt="" src="./images/down.gif" /> <a href="#jabberwock">とかげに注意: 警告と事例</a></li> +</ul><h3>参照</h3><ul class="seealso"><li><a href="#comments_section">コメント</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="before" id="before">始める前に</a></h2> + + <p>この文書の先頭に飛ぶ前に、Apache + グループとこの文書での仮定を知っておくべきでしょう。 + </p> + + <p>第 1 に、あなたが <strong>setuid</strong> と + <strong>setgid</strong> 操作が可能な UNIX + 由来のオペレーティングシステムを使っていることを想定しています。 + これは、すべてのコマンド例にあてはまります。 + その他のプラットホームでは、もし suEXEC + がサポートされていたとしても設定は異なるかもしれません。</p> + + <p>第 2 に、あなたが使用中のコンピュータの + セキュリティに関する基本的な概念と、それらの管理について詳しいことを + 想定しています。これは、<strong>setuid/setgid</strong> + 操作、あなたのシステム上でのその操作による様々な効果、 + セキュリティレベルについてあなたが理解しているということを含みます。 + </p> + + <p>第 3 に、<strong>改造されていない</strong> suEXEC + コードの使用を想定しています。suEXEC のコードは、 + 多くのベータテスタだけでなく、開発者によっても注意深く精査され + テストされています。それらの注意により、簡潔で信頼できる安全な + コードの基盤が保証されます。このコードを改変することで、 + 予期されない問題や新しいセキュリティ上の危険が生じることがあります。 + セキュリティプログラミングの詳細に通じていて、 + 今後の検討のために成果を Apache + グループと共有しようと思うのでなければ、suEXEC + コードは変えないことを <strong>強く</strong>推奨します。</p> + + <p>第 4 に、これが最後ですが、suEXEC を Apache + のデフォルトインストールには<strong>含めない</strong>ことが + Apache グループで決定されています。これは、suEXEC + の設定には管理者の詳細にわたる慎重な注意が必要だからです。 + suEXEC の様々な設定について検討が終われば、管理者は suEXEC + を通常のインストール方法でインストールすることができます。 + これらの設定値は、suEXEC + 機能の使用中にシステムセキュリティを適切に保つために、 + 管理者によって慎重に決定され指定されることが必要です。 + この詳細な手順により、Apache グループは、suEXEC + のインストールについて、注意深く十分に検討してそれを使用することを + 決定した場合に限っていただきたいと考えています。 + </p> + + <p>それでも進みますか? よろしい。では、先へ進みましょう!</p> + </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> +<div class="section"> +<h2><a name="model" id="model">suEXEC セキュリティモデル</a></h2> + + <p>suEXEC の設定とインストールを始める前に、 + まず実装しようとしているセキュリティモデルについて論じておきます。 + それには、suEXEC の内部で行なわれていること、 + システムのセキュリティを保証するために警告されることを + よく理解しておいた方がよいでしょう。</p> + + <p><strong>suEXEC</strong> は、Apache web + サーバから呼び出される setuid された "wrapper" + プログラムが基本となっています。設計した CGI、または SSI + プログラムへの HTTP リクエストがあると、この wrapper + が呼び出されます。このようなリクエストがあると、Apache + はそのプログラムが実行される際のプログラム名とユーザ ID とグループ + ID を指定して suEXEC wrapper を実行します。 + </p> + + <p>それから、wrapper は成功または失敗を決定するため + 以下の処理を行ないます。これらの状態のうち一つでも失敗した場合、 + プログラムは失敗をログに記録してエラーで終了します。 + そうでなければ、後の処理が続けられます。</p> + + <ol> + <li> + <strong>wrapper + を実行しているユーザはこのシステムの正当なユーザか?</strong> + + <p class="indent"> + これは、wrapper を実行しているユーザが + 本当にシステムの利用者であることを保証するためです。 + </p> + </li> + + + <li> + <strong>wrapper が適切な数の引数で呼び出されたか?</strong> + + + <p class="indent"> + wrapper は適切な数の引数が与えられた場合にのみ実行されます。 + 適切な引数のフォーマットは Apache Web サーバに解釈されます。 + 適切な数の引数を受け取らなければ、攻撃をされたか + あなたの Apache バイナリの suEXEC の部分が + どこかおかしい可能性があります。 + </p> + </li> + + <li> + <strong>この正当なユーザは wrapper + の実行を許可されているか?</strong> + + <p class="indent"> + このユーザは wrapper 実行を許可されたユーザですか? + ただ一人のユーザ (Apache ユーザ) だけが、 + このプログラムの実行を許可されます。 + </p> + </li> + + <li> + <strong>対象の CGI, SSI プログラムが安全でない階層の参照をしているか? + </strong> + + <p class="indent"> + 対象の CGI, SSI プログラムが '/' から始まる、または + '..' による参照を行なっていますか? これらは許可されません。 + 対象のプログラムは suEXEC のドキュメントルート + (下記の <code>--with-suexec-docroot=<em>DIR</em></code> を参照) + 内に存在しなければなりません。 + </p> + </li> + + <li> + <strong>対象となるユーザ名は正当なものか?</strong> + + <p class="indent"> + 対象となるユーザ名は存在していますか? + </p> + </li> + + <li> + <strong>対象となるグループ名は正当なものか?</strong> + + <p class="indent"> + 対象となるグループ名は存在していますか? + </p> + </li> + + <li> + <strong>目的のユーザはスーパーユーザでは<em>ない</em>か? + </strong> + + <p class="indent"> + 今のところ、suEXEC は <code><em>root</em></code> による CGI/SSI + プログラムの実行を許可していません。 + </p> + </li> + + <li> + <strong>対象となるユーザ ID は、最小の ID + 番号よりも<em>大きい</em>か? </strong> + + <p class="indent"> + 最小ユーザ ID 番号は設定時に指定されます。これは、 + CGI/SSI プログラム実行を許可されるユーザ ID + のとりうる最小値です。これは + "system" 用のアカウントを閉め出すのに有効です。 + </p> + </li> + + <li> + <strong>対象となるグループはスーパーユーザのグループでは + <em>ない</em>か?</strong> + + <p class="indent"> + 今のところ、suEXEC は 'root' グループによる CGI/SSI + プログラムの実行を許可していません。 + </p> + </li> + + <li> + <strong>対象となるグループ ID は最小の ID + 番号よりも<em>大きい</em>か?</strong> + + <p class="indent"> + 最小グループ ID 番号は設定時に指定されます。これは、 + CGI/SSI プログラム実行を許可されるグループ + ID のとりうる最小値です。 + これは "system" 用のグループを閉め出すのに有効です。 + </p> + </li> + + <li> + <strong>wrapper が正常に対象となるユーザとグループになれるか? + </strong> + + <p class="indent"> + ここで、setuid と setgid + の起動によりプログラムは対象となるユーザとグループになります。 + グループアクセスリストは、 + ユーザが属しているすべてのグループで初期化されます。 + </p> + </li> + + <li> + <strong>CGI/SSI プログラムが置かれているディレクトリに移動 + (change directory) できるか?</strong> + + <p class="indent"> + ディレクトリが存在しないなら、そのファイルも存在しないかもしれません。 + ディレクトリに移動できないのであれば、おそらく存在もしないでしょう。 + </p> + </li> + + <li> + <strong>ディレクトリが Apache のドキュメントツリー内にあるか? + </strong> + + <p class="indent"> + リクエストがサーバ内のものであれば、 + 要求されたディレクトリが suEXEC のドキュメントルート配下にありますか? + リクエストが UserDir のものであれば、要求されたディレクトリが suEXEC + のユーザのドキュメントルート配下にありますか? + (<a href="#install">suEXEC 設定オプション</a> 参照) + </p> + </li> + + <li> + <strong>ディレクトリを他のユーザが書き込めるようになって + <em>いない</em>か?</strong> + + <p class="indent"> + ディレクトリを他ユーザに開放しないようにします。 + 所有ユーザだけがこのディレクトリの内容を改変できるようにします。 + </p> + </li> + + + <li> + <strong>対象となる CGI/SSI プログラムは存在するか?</strong> + + <p class="indent"> + 存在しなければ実行できません。 + </p> + </li> + + <li> + <strong>対象となる CGI/SSI プログラムファイルが他アカウントから + 書き込めるようになって<em>いない</em>か?</strong> + + <p class="indent"> + 所有者以外には CGI/SSI プログラムを変更する権限は与えられません。 + </p> + </li> + + + <li> + <strong>対象となる CGI/SSI プログラムが setuid または setgid + されて<em>いない</em>か?</strong> + + <p class="indent"> + UID/GID を再度変更してのプログラム実行はしません + </p> + </li> + + + <li> + <strong>対象となるユーザ/グループがプログラムの + ユーザ/グループと同じか?</strong> + + <p class="indent"> + ユーザがそのファイルの所有者ですか? + </p> + </li> + + <li> + <strong>安全な動作を保証するための環境変数クリアが可能か? + </strong> + + <p class="indent"> + suEXEC は、安全な環境変数のリスト + (これらは設定時に作成されます) 内の変数として渡される安全な + PATH 変数 (設定時に指定されます) を設定することで、 + プロセスの環境変数をクリアします。 + </p> + </li> + + + <li> + <strong>対象となる CGI/SSI プログラムを exec して実行できるか?</strong> + + + <p class="indent"> + ここで suEXEC が終了し、対象となるプログラムが開始されます。 + </p> + </li> + </ol> + + <p>ここまでが suEXEC の wrapper + におけるセキュリティモデルの標準的な動作です。もう少し厳重に + CGI/SSI 設計についての新しい制限や規定を取り入れることもできますが、 + suEXEC はセキュリティに注意して慎重に少しずつ開発されてきました。 + </p> + + <p>このセキュリティモデルを用いて + サーバ設定時にどのように許すことを制限するか、また、suEXEC + を適切に設定するとどのようなセキュリティ上の危険を避けられるかに + 関するより詳しい情報については、<a href="#jabberwock">"とかげに注意" + (Beware the Jabberwock)</a> の章を参照してください。 + </p> + </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> +<div class="section"> +<h2><a name="install" id="install">suEXEC + の設定とインストール</a></h2> + + <p>ここから楽しくなります。</p> + + <p><strong>suEXEC + 設定オプション</strong><br /> + </p> + + <dl> + <dt><code>--enable-suexec</code></dt> + + <dd>このオプションは、デフォルトではインストールされず、 + 有効にはならない suEXEC 機能を有効にします。 + suEXEC を使うように APACI に要求するには、<code>--enable-suexec</code> + オプションにあわせて少なくとも一つは <code>--with-suexec-xxxxx</code> + オプションが指定されなければなりません。</dd> + + <dt><code>--with-suexec-bin=<em>PATH</em></code></dt> + + <dd>セキュリティ上の理由により、<code>suexec</code> バイナリのパスはサーバに + ハードコードされている必要があります。デフォルトのパスを + 変えたいときはこのオプションを使ってください。<em>例えば</em>、 + <code>--with-suexec-bin=/usr/sbin/suexec</code> のように。</dd> + + <dt><code>--with-suexec-caller=<em>UID</em></code></dt> + + <dd>Apache を通常動作させる<a href="mod/mpm_common.html#user">ユーザ名</a>を指定します。 + このユーザだけが suexec の実行を許可されたユーザになります。</dd> + + <dt><code>--with-suexec-userdir=<em>DIR</em></code></dt> + + <dd>suEXEC がアクセスを許されるユーザホームディレクトリ配下の + サブディレクトリを指定します。 + このディレクトリ以下の全実行ファイルは、"安全な"プログラムになるよう、 + suEXEC がそのユーザとして実行できるようにします。 + "単純な" UserDir ディレクティブを使っている場合 + (すなわち "*" を含まないもの)、これと同じ値を設定すべきです。 + Userdir ディレクティブがそのユーザのパスワードファイル内の + ホームディレクトリと同じ場所を指していなければ、 + suEXEC は適切に動作しません。デフォルトは "public_html" です。 + <br /> + 各 UserDir が異なった仮想ホストを設定している場合、 + それらを全て一つの親ディレクトリに含めて、 + その親ディレクトリの名前をここで指定する必要があります。 + <strong>このように指定されなければ "~userdir" cgi + へのリクエストが動作しません。</strong></dd> + + <dt><code>--with-suexec-docroot=<em>DIR</em></code></dt> + + <dd>Apache のドキュメントルートを設定します。これが suEXEC + の動作で使用する唯一のディレクトリ階層になります (UserDir + の指定は別)。デフォルトでは <code>--datedir</code> に "/htdocs" + というサフィックスをつけたものです。 + "<code>--datadir=/home/apache</code>" として設定すると、 + suEXEC wrapper にとって "/home/apache/htdocs" + がドキュメントルートとして使われます。</dd> + + <dt><code>--with-suexec-uidmin=<em>UID</em></code></dt> + + <dd>suEXEC の対象ユーザとして許される UID の最小値を指定します。 + 大抵のシステムでは 500 か 100 が一般的です。 + デフォルト値は 100 です。</dd> + + <dt><code>--with-suexec-gidmin=<em>GID</em></code></dt> + + <dd>suEXEC の対象グループとして許される GID + の最小値を指定します。大抵のシステムでは 100 が一般的なので、 + デフォルト値としても 100 が使われています。</dd> + + <dt><code>--with-suexec-logfile=<em>FILE</em></code></dt> + + <dd>suEXEC の処理とエラーが記録されるファイル名を指定します。 + (監査やデバッグ目的に有用) + デフォルトではログファイルは "suexec_log" という名前で、 + 標準のログファイルディレクトリ (<code>--logfiledir</code>) に置かれます。 + </dd> + + <dt><code>--with-suexec-safepath=<em>PATH</em></code></dt> + + <dd>CGI 実行ファイルに渡される安全な PATH 環境変数です。 + デフォルト値は "/usr/local/bin:/usr/bin:/bin" です。 + </dd> + </dl> + + <p><strong>suEXEC wrapper + のコンパイルとインストール</strong><br /> + <code>--enable-suexec</code> オプションで suEXEC 機能を有効にすると、 + "make" コマンドを実行した時に <code>suexec</code> のバイナリ (Apache 自体も) + が自動的に作成されます。 + <br /> + すべての構成要素が作成されると、それらのインストールには + <code>make install</code> コマンドが実行できます。バイナリイメージの <code>suexec</code> + は <code>--sbindir</code> オプションで指定されたディレクトリにインストールされます。 + デフォルトの場所は "/usr/local/apache/bin/suexec" です。<br /> + インストール時には <strong><em>root</em></strong> + 権限が必要なので注意してください。wrapper がユーザ ID + を設定するために、所有者 <code><em>root</em></code> + でのセットユーザ ID + ビットをそのファイルのモードに設定しなければなりません。 + </p> + + <p><strong>安全なパーミッションを設定する</strong><br /> + suEXEC ラッパーは、<code>--with-suexec-caller</code> <code class="program"><a href="./programs/configure.html">configure</a></code> + オプションで指定した正しいユーザで起動されていることを確認しますが、 + システム上でこのチェックが行なわれる前に、 + suEXEC が呼ぶシステムやライブラリが脆弱である可能性は残ります。対抗策として、 + 一般に良い習慣ともされいますが、 + ファイルシステムパーミッションを使って + Apache の実行時のグループのみが suEXEC を実行できるように + するのが良いでしょう。</p> + + <p>たとえば、次のようにサーバが設定されていたとします。</p> + +<div class="example"><p><code> + User www<br /> + Group webgroup<br /> +</code></p></div> + + <p><code class="program"><a href="./programs/suexec.html">suexec</a></code> が "/usr/local/apache2/bin/suexec" + にインストールされていた場合、次のように設定する必要があります。</p> + +<div class="example"><p><code> + chgrp webgroup /usr/local/apache2/bin/suexec<br /> + chmod 4750 /usr/local/apache2/bin/suexec<br /> +</code></p></div> + + <p>これで Apache が実行されるグループのみが + suEXEC ラッパーを実行できるということを + 確証します。</p> + </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> +<div class="section"> +<h2><a name="enable" id="enable">suEXEC + の有効化と無効化</a></h2> + + <p>起動時に、Apache は <code>--sbindir</code> + オプションで設定されたディレクトリで + <code>suexec</code> を探します + (デフォルトは "/usr/local/apache/sbin/suexec") 。 + 適切に設定された suEXEC がみつかると、 + エラーログに以下のメッセージが出力されます。</p> + +<div class="example"><p><code> + [notice] suEXEC mechanism enabled (wrapper: <var>/path/to/suexec</var>) +</code></p></div> + + <p>サーバ起動時にこのメッセージが出ない場合、 + 大抵はサーバが想定した場所で wrapper プログラムが見つからなかったか、 + <em>setuid root</em> としてインストールされていないかです。</p> + + <p>suEXEC の仕組みを使用するのが初めてで、Apache が既に動作中であれば、 + Apache を kill して、再起動しなければなりません。HUP シグナルや + USR1 シグナルによる単純な再起動では不十分です。</p> + <p>suEXEC を無効にする場合は、<code>suexec</code> ファイルを削除してから + Apache を kill して再起動します。 + </p> + </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> +<div class="section"> +<h2><a name="usage" id="usage">suEXEC の使用</a></h2> + + <p>CGI プログラムへのリクエストが suEXEC ラッパーを呼ぶのは、 + <code class="directive"><a href="./mod/mod_suexec.html#suexecusergroup">SuexecUserGroup</a></code> ディレクティブを + 含むバーチャルホストへのリクエストか、<code class="module"><a href="./mod/mod_userdir.html">mod_userdir</a></code> により + 処理されたリクエストの場合に限ります。</p> + + <p><strong>仮想ホスト:</strong><br /> + suEXEC wrapper の使い方として、 + <code class="directive"><a href="./mod/core.html#virtualhost">VirtualHost</a></code> 設定での + <code class="directive"><a href="./mod/mod_suexec.html#suexecusergroup">SuexecUserGroup</a></code> + ディレクティブを通したものがあります。 + このディレクティブをメインサーバのユーザ ID + と異なるものにすると、CGI リソースへのすべてのリクエストは、その + <code class="directive"><a href="./mod/core.html#virtualhost"><VirtualHost></a></code> で指定された <em>User</em> と + <em>Group</em> として実行されます。<code class="directive"><a href="./mod/core.html#virtualhost"><VirtualHost></a></code> + でこのディレクティブが指定されていない場合、 + メインサーバのユーザ ID が想定されます。</p> + + <p><strong>ユーザディレクトリ:</strong><br /> + <code class="module"><a href="./mod/mod_userdir.html">mod_userdir</a></code> により処理されたリクエストは + リクエストされたユーザディレクトリのユーザ ID で CGI プログラムを + 実行するために suEXEC ラッパーを呼びます。 + この機能を動作させるために必要なことは、CGI + をそのユーザで実行できること、そのスクリプトが上記の<a href="#model">セキュリティ検査</a>をパスできることです。 + <a href="#install">コンパイル + 時のオプション</a> <code>--with-suexec-userdir</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="debug" id="debug">suEXEC のデバッグ</a></h2> + + <p>suEXEC wrapper は、上記で述べた <code>--with-suexec-logfile</code> + オプションで指定されたファイルにログ情報を記録します。 + wrapper を適切に設定、インストールできていると思う場合、 + どこで迷っているか見ようとするならこのログとサーバの + エラーログを見るとよいでしょう。</p> + </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> +<div class="section"> +<h2><a name="jabberwock" id="jabberwock">とかげに注意: 警告と事例</a></h2> + + <p><strong>注意!</strong> + この章は完全ではありません。この章の最新改訂版については、 + Apache グループの<a href="http://httpd.apache.org/docs/2.4/suexec.html"> + オンラインドキュメント</a>版を参照してください。 + </p> + + <p>サーバの設定に制限をもうける wrapper について、 + いくつか興味深い点があります。suEXEC に関する "バグ" + を報告する前にこれらを確認してください。</p> + + <ul> + <li><strong>suEXEC の興味深い点</strong></li> + + <li>階層構造の制限 + + + <p class="indent"> + セキュリティと効率の理由から、<code>suEXEC</code> の全てのリクエストは + 仮想ホストへのリクエストにおける最上位のドキュメントルート内か、 + ユーザディレクトリへのリクエストにおける個々のユーザの最上位の + ドキュメントルート内に残らなければなりません。 + 例えば、四つの仮想ホストを設定している場合、 + 仮想ホストの suEXEC に有利なように、メインの Apache + ドキュメント階層の外側に全ての仮想ホストのドキュメントルートを + 構築する必要があります。(例は後日記載) + </p> + </li> + + <li>suEXEC の PATH 環境変数 + + + <p class="indent"> + これを変更するのは危険です。この指定に含まれる各パスが + <strong>信頼できる</strong> + ディレクトリであることを確認してください。 + 世界からのアクセスにより、誰かがホスト上でトロイの木馬 + を実行できるようにはしたくないでしょう。 + </p> + </li> + + <li>suEXEC コードの改造 + + + <p class="indent"> + 繰り返しますが、何をやろうとしているか把握せずにこれをやると + <strong>大きな問題</strong>を引き起こしかねません。 + 可能な限り避けてください。 + </p> + </li> + </ul> +</div></div> +<div class="bottomlang"> +<p><span>翻訳済み言語: </span><a href="./en/suexec.html" hreflang="en" rel="alternate" title="English"> en </a> | +<a href="./fr/suexec.html" hreflang="fr" rel="alternate" title="Français"> fr </a> | +<a href="./ja/suexec.html" title="Japanese"> ja </a> | +<a href="./ko/suexec.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> | +<a href="./tr/suexec.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p> +</div><div class="top"><a href="#page-header"><img src="./images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">コメント</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Libera.chat, or sent to our <a href="https://httpd.apache.org/lists.html">mailing lists</a>.</div> +<script type="text/javascript"><!--//--><![CDATA[//><!-- +var comments_shortname = 'httpd'; +var comments_identifier = 'http://httpd.apache.org/docs/2.4/suexec.html'; +(function(w, d) { + if (w.location.hostname.toLowerCase() == "httpd.apache.org") { + d.write('<div id="comments_thread"><\/div>'); + var s = d.createElement('script'); + s.type = 'text/javascript'; + s.async = true; + s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier; + (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s); + } + else { + d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>'); + } +})(window, document); +//--><!]]></script></div><div id="footer"> +<p class="apache">Copyright 2023 The Apache Software Foundation.<br />この文書は <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> のライセンスで提供されています。.</p> +<p class="menu"><a href="./mod/">モジュール</a> | <a href="./mod/directives.html">ディレクティブ</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="./glossary.html">用語</a> | <a href="./sitemap.html">サイトマップ</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!-- +if (typeof(prettyPrint) !== 'undefined') { + prettyPrint(); +} +//--><!]]></script> +</body></html>
\ No newline at end of file diff --git a/docs/manual/suexec.html.ko.euc-kr b/docs/manual/suexec.html.ko.euc-kr new file mode 100644 index 0000000..10d2dc5 --- /dev/null +++ b/docs/manual/suexec.html.ko.euc-kr @@ -0,0 +1,564 @@ +<?xml version="1.0" encoding="EUC-KR"?> +<!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="ko" xml:lang="ko"><head> +<meta content="text/html; charset=EUC-KR" http-equiv="Content-Type" /> +<!-- + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + This file is generated from xml source: DO NOT EDIT + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + --> +<title>suEXEC - Apache HTTP Server Version 2.4</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 rel="stylesheet" type="text/css" href="./style/css/prettify.css" /> +<script src="./style/scripts/prettify.min.js" type="text/javascript"> +</script> + +<link href="./images/favicon.ico" rel="shortcut icon" /></head> +<body id="manual-page"><div id="page-header"> +<p class="menu"><a href="./mod/"></a> | <a href="./mod/directives.html">þ</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="./glossary.html"></a> | <a href="./sitemap.html">Ʈ</a></p> +<p class="apache">Apache HTTP Server Version 2.4</p> +<img alt="" src="./images/feather.png" /></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/">HTTP Server</a> > <a href="http://httpd.apache.org/docs/">Documentation</a> > <a href="./">Version 2.4</a></div><div id="page-content"><div id="preamble"><h1>suEXEC </h1> +<div class="toplang"> +<p><span> : </span><a href="./en/suexec.html" hreflang="en" rel="alternate" title="English"> en </a> | +<a href="./fr/suexec.html" hreflang="fr" rel="alternate" title="Français"> fr </a> | +<a href="./ja/suexec.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> | +<a href="./ko/suexec.html" title="Korean"> ko </a> | +<a href="./tr/suexec.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p> +</div> +<div class="outofdate"> ֽ ƴմϴ. + ֱٿ ϼ.</div> + + <p><strong>suEXEC</strong> ġ <strong>CGI</strong> + <strong>SSI</strong> α ID + ƴ ٸ ID ϵ Ѵ. CGI SSI α + ϸ ڿ ڷ Ѵ.</p> + + <p> ϸ ڰ CGI SSI α + ϰ Ҷ ִ + ִ. suEXEC ϰ Ǹ + ǻͿ ο ִ. <em>setuid root</em> + α ̷ α ϴٸ suEXEC + ʱ ٶ.</p> + </div> +<div id="quickview"><a href="https://www.apache.org/foundation/contributing.html" class="badge"><img src="https://www.apache.org/images/SupportApache-small.png" alt="Support Apache!" /></a><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#before">ϱ </a></li> +<li><img alt="" src="./images/down.gif" /> <a href="#model">suEXEC ȸ</a></li> +<li><img alt="" src="./images/down.gif" /> <a href="#install">suEXEC ġ</a></li> +<li><img alt="" src="./images/down.gif" /> <a href="#enable">suEXEC Ű </a></li> +<li><img alt="" src="./images/down.gif" /> <a href="#usage">suEXEC ϱ</a></li> +<li><img alt="" src="./images/down.gif" /> <a href="#debug">suEXEC ϱ</a></li> +<li><img alt="" src="./images/down.gif" /> <a href="#jabberwock">ٽ ѹ ϶: </a></li> +</ul><h3></h3><ul class="seealso"><li><a href="#comments_section">Comments</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="before" id="before">ϱ </a></h2> + + <p>ϱ 켱 ġ .</p> + + <p> <strong>setuid</strong> <strong>setgid</strong> + н ü Ѵٰ Ѵ. + ɾ 鵵 Ѵ. suEXEC ϴ ٸ ÷ + ϴٸ ٸ ִ.</p> + + <p>ι°, ǻ ⺻ ͼϴٰ + Ѵ. <strong>setuid/setgid</strong> ɰ + ̵ ý۰ ȿ ġ ذ Եȴ.</p> + + <p>°, suEXEC ڵ <strong></strong> + Ѵٰ Ѵ. ڿ Ÿ͵ + suEXEC õ ڵ带 ɽ ϰ ˻ߴ. + ڵ带 ϰ ϰ Ȯ ϱ Ǹ + . ڵ带 ϸ ġ ο + ִ. αֿ ſ ˰ + ڵ带 캸 ġ ۾ ǻ簡 ٸ + suEXEC ڵ带 ʱ <strong></strong> Ѵ.</p> + + <p>° , ġ suEXEC ġ + ⺻ġ <strong>ʱ</strong> ߴ. ᱹ + ڰ Ǹ ← suEXEC ؾ Ѵ. suEXEC + ڴ Ϲ ġ suEXEC + ġ ִ. suEXEC ϴ ý å + ڴ ְ 캸 ؾ Ѵ. + ̷ suEXEC Ҹŭ ְ ȣ + suEXEC ϵ ġ ϱ ̴.</p> + + <p> ϱ ϴ°? ? . !</p> +</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> +<div class="section"> +<h2><a name="model" id="model">suEXEC ȸ</a></h2> + + <p>suEXEC ϰ ġϱ 츮 ȸ + Ѵ. ̸ Ȯ suEXEC ȿ Ͼ + ý ؾ + ִ.</p> + + <p><strong>suEXEC</strong> ġ θ setuid + "wrapper" α Ѵ. wrapper ڰ + ּ ٸ userid ϵ CGI SSI α + HTTP û Ҹ. ̷ û ġ suEXEC + wrapper α α ڿ + ID Ѵ.</p> + + <p> wrapper и Ѵ. + ϳ ϸ α з ϵǰ + Ѵ. Ѵ:</p> + + <ol> + <li> + <strong>wrapper ϴ ڰ ý + ΰ?</strong> + + <p class="indent"> + wrapper ϴ ڰ ý + ȮѴ. + </p> + </li> + + <li> + <strong> ƱԸƮ wrapper ϴ°?</strong> + + <p class="indent"> + wrapper ƱԸƮ ־߸ ȴ. + ġ ȴ. wrapper + ƱԸƮ ϸ ŷǾų ġ suEXEC + ִ ̴. + </p> + </li> + + <li> + <strong> ڰ wrapper ϵ Ǿ?</strong> + + <p class="indent"> + ڰ wrapper ϵ Ǿ? + (ġ ) α + ִ. + </p> + </li> + + <li> + <strong> CGI SSI α + °?</strong> + + <p class="indent"> + CGI SSI α '/' ϰų + '..' °? ̵ . CGI/SSI + α suEXEC root (Ʒ + <code>--with-suexec-docroot=<em>DIR</em></code> ) + ־ Ѵ. + </p> + </li> + + <li> + <strong> ڸ ȿѰ?</strong> + + <p class="indent"> + ڰ ϴ°? + </p> + </li> + + <li> + <strong> ȿѰ?</strong> + + <p class="indent"> + ϴ°? + </p> + </li> + + <li> + <strong> ڰ superuser <em>ƴѰ</em>?</strong> + + + <p class="indent"> + suEXEC <code><em>root</em></code> CGI/SSI + α Ѵ. + </p> + </li> + + <li> + <strong> userid ּ ID ں <em>ū</em>?</strong> + + <p class="indent"> + ּ ID ڸ Ѵ. CGI/SSI + α ִ userid ּġ + ִ. "ýۿ" Ҷ ϴ. + </p> + </li> + + <li> + <strong> superuser <em>ƴѰ</em>?</strong> + + <p class="indent"> + suEXEC <code><em>root</em></code> CGI/SSI + α Ѵ. + </p> + </li> + + <li> + <strong> groupid ּ ID ں <em>ū</em>?</strong> + + <p class="indent"> + ּ ID ڸ Ѵ. CGI/SSI + α ִ groupid ּġ + ִ. "ýۿ" Ҷ ϴ. + </p> + </li> + + <li> + <strong>wrapper ڿ + ִ°?</strong> + + <p class="indent"> + ܰ迡 α setuid setgid ȣ Ͽ + ڿ ȴ. , ٸ + ڰ ش ʱȭȴ. + </p> + </li> + + <li> + <strong>CGI/SSI α ִ 丮 丮 + ִ°?</strong> + + <p class="indent"> + 丮 ʴٸ . ̰ + 丮 ٸ 丮 + ̴. + </p> + </li> + + <li> + <strong>丮 ġ ȿ ִ°?</strong> + + <p class="indent"> + Ϲ κ û ûϴ 丮 + suEXEC root Ʒ ִ°? UserDir û + ûϴ 丮 suEXEC userdir (<a href="#install">suEXEC ɼ</a> ) 丮 + Ʒ ִ°? + </p> + </li> + + <li> + <strong>ٸ 丮 <em>°</em>?</strong> + + <p class="indent"> + 丮 ٸ α ʴ´. + ڸ 丮 ִ. + </p> + </li> + + <li> + <strong> CGI/SSI α ϴ°?</strong> + + <p class="indent"> + ʴٸ . + </p> + </li> + + <li> + <strong>ٸ CGI/SSI α + <em>°</em>?</strong> + + <p class="indent"> + ڿ CGI/SSI α ϱ ʴ´. + </p> + </li> + + <li> + <strong> CGI/SSI α setuid setgid + <em>ƴѰ</em>?</strong> + + <p class="indent"> + 츮 α ٽ UID/GID ϱ ʴ´. + </p> + </li> + + <li> + <strong> / α / ?</strong> + + <p class="indent"> + ڰ ΰ? + </p> + </li> + + <li> + <strong> μ ȯ溯 û + ִ°?</strong> + + <p class="indent"> + suEXEC ( ) PATH , + (̰͵ ) ȯ溯 Ͽ ŵ + μ ȯ溯 . + </p> + </li> + + <li> + <strong> CGI/SSI α + ִ°?</strong> + + <p class="indent"> + ⼭ suEXEC CGI/SSI α Ѵ. + </p> + </li> + </ol> + + <p>̰ suEXEC wrapper ȸ ǥ ̴. ټ + ϰ CGI/SSI 迡 ο , ο + ΰ Ѵܰ辿 ɽ .</p> + + <p> ִ + suEXEC ִ + <a href="#jabberwock">"ٽ ѹ ϶"</a> + ϶.</p> +</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> +<div class="section"> +<h2><a name="install" id="install">suEXEC ġ</a></h2> + + <p> ִ Ѵ.</p> + + <p><strong>suEXEC ɼ</strong><br /> + </p> + + <dl> + <dt><code>--enable-suexec</code></dt> + + <dd> ɼ ⺻ ġǰų Ȱȭʴ suEXEC + ȰȭѴ. APACI suEXEC Ƶ̷ + <code>--enable-suexec</code> ɼǿܿ + <code>--with-suexec-xxxxx</code> ɼ ּ Ѱ + ʿϴ.</dd> + + <dt><code>--with-suexec-bin=<em>PATH</em></code></dt> + + <dd><code>suexec</code> ̳ʸ δ Ȼ + ϵǾ Ѵ. ⺻ Ϸ ɼ + Ѵ. <em> </em> + <code>--with-suexec-bin=/usr/sbin/suexec</code></dd> + + <dt><code>--with-suexec-caller=<em>UID</em></code></dt> + + <dd> ġ ϴ <a href="mod/mpm_common.html#user">ڸ</a>. α + ִ ڴ.</dd> + + <dt><code>--with-suexec-userdir=<em>DIR</em></code></dt> + + <dd>suEXEC Ǵ Ȩ丮 丮 + Ѵ. 丮 ִ + suEXEC Ƿ, α "ؾ" Ѵ. ( + , "*" ) "" UserDir þ Ѵٸ + ؾ Ѵ. UserDir þ passwd Ͽ + Ȩ丮 ٸ suEXEC + ۵ ʴ´. ⺻ "public_html"̴.<br /> + ȣƮ ٸ UserDir Ѵٸ + θ 丮 ȿ ֵ ؾ ϰ, θ 丮 + ´. <strong>̷ , "~userdir" + cgi û ۵ ʴ´!</strong></dd> + + <dt><code>--with-suexec-docroot=<em>DIR</em></code></dt> + + <dd>ġ DocumentRoot Ѵ. ̴ suEXEC + ִ (UserDirs ) ̴. ⺻ 丮 + <code>--datadir</code> "/htdocs" ̴. + <em> </em> "<code>--datadir=/home/apache</code>" + ߴٸ suEXEC wrapper document root + "/home/apache/htdocs" 丮 Ѵ.</dd> + + <dt><code>--with-suexec-uidmin=<em>UID</em></code></dt> + + <dd>suEXEC ּ UID Ѵ. + κ ýۿ 500̳ 100 ϴ. ⺻ + 100̴.</dd> + + <dt><code>--with-suexec-gidmin=<em>GID</em></code></dt> + + <dd>suEXEC ּ GID Ѵ. + κ ýۿ 100 ϹǷ ⺻̴.</dd> + + <dt><code>--with-suexec-logfile=<em>FILE</em></code></dt> + + <dd> suEXEC ۵ (ó ) + αϸ Ѵ. ⺻ α ̸ + "suexec_log"̰ ǥ α 丮 + (<code>--logfiledir</code>) ġѴ.</dd> + + <dt><code>--with-suexec-safepath=<em>PATH</em></code></dt> + + <dd>CGI Ͽ Ѱ PATH ȯ溯 Ѵ. + ⺻ "/usr/local/bin:/usr/bin:/bin"̴.</dd> + </dl> + + <p><strong>suEXEC wrapper ϰ ġϱ</strong><br /> + <code>--enable-suexec</code> ɼ suEXEC ϰ + <code>make</code> ɾ ϸ <code>suexec</code> + (ġ Բ) ڵ .<br /> + <code>make install</code> ɾ + Ͽ ġ ִ. ̳ʸ <code>suexec</code> + <code>--sbindir</code> ɼ 丮 ġȴ. + ⺻ ġ "/usr/local/apache2/sbin/suexec"̴.<br /> + ġ <strong><em>root </em></strong> ʿ + ϶. wrapper ID ϱؼ ڰ + <code><em>root</em></code>̰ ϸ setuserid Ʈ + Ǿ Ѵ.</p> + + <p><strong> Ѽ</strong><br /> + suEXEC wrapper ڽ ڰ ɼ + <code>--with-suexec-caller</code> ùٸ + Ȯ , ˻ suEXEC ϴ ýȣ + Ȥ ̺귯 Լ ۵Ǿ ִ. ̸ ϸ + Ϲ ̹Ƿ ġ ϴ 츸 + suEXEC ֵ Ͻý ؾ Ѵ.</p> + + <p> , ϰ:</p> + +<div class="example"><p><code> + User www<br /> + Group webgroup<br /> +</code></p></div> + + <p><code>suexec</code> "/usr/local/apache2/sbin/suexec" + ġϿٸ, ؾ Ѵ:</p> + +<div class="example"><p><code> + chgrp webgroup /usr/local/apache2/bin/suexec<br /> + chmod 4750 /usr/local/apache2/bin/suexec<br /> +</code></p></div> + + <p> ġ ϴ 츸 suEXEC wrapper + ִ.</p> +</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> +<div class="section"> +<h2><a name="enable" id="enable">suEXEC Ű </a></h2> + + <p>ġ Ҷ <code>--sbindir</code> ɼ + 丮 <code>suexec</code> (⺻ + "/usr/local/apache2/sbin/suexec") ã´. ġ + suEXEC wrapper ߰ϸ α(error + log) Ѵ:</p> + +<div class="example"><p><code> + [notice] suEXEC mechanism enabled (wrapper: <em>/path/to/suexec</em>) +</code></p></div> + + <p> ߿ ̷ ٸ ҿ + wrapper α ã ߰ų, <em>setuid + root</em> ġʾұ ̴.</p> + + <p>ó suEXEC ϰ Ͱ ̹ ġ + ̶, ġ ̰ ٽ ؾ Ѵ. + HUP̳ USR1 ñ׳η ϴ δ ʴ. </p> + <p>suEXEC ȻϷ <code>suexec</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="usage" id="usage">suEXEC ϱ</a></h2> + + <p>CGI α û <code class="directive"><a href="./mod/mod_suexec.html#suexecusergroup">SuexecUserGroup</a></code> þ + ȣƮ û Ͽų <code class="module"><a href="./mod/mod_userdir.html">mod_userdir</a></code> + û óϴ 쿡 suEXEC wrapper ȣѴ.</p> + + <p><strong>ȣƮ:</strong><br /> suEXEC wrapper + ϴ Ѱ <code class="directive"><a href="./mod/core.html#virtualhost">VirtualHost</a></code> ǿ <code class="directive"><a href="./mod/mod_suexec.html#suexecusergroup">SuexecUserGroup</a></code> þ + ϴ ̴. þ ּ ID ٸ + ϸ CGI ڿ û <code class="directive"><a href="./mod/core.html#virtualhost"><VirtualHost></a></code> + <em>User</em> <em>Group</em> ȴ. + þ <code class="directive"><a href="./mod/core.html#virtualhost"><VirtualHost></a></code> ּ + userid Ѵ.</p> + + <p><strong> 丮:</strong><br /> + <code class="module"><a href="./mod/mod_userdir.html">mod_userdir</a></code> û óѴٸ suEXEC + wrapper ȣϿ, û 丮 شϴ + ID CGI α Ѵ. Ϸ + ID CGI ְ ũƮ <a href="#model"> + ˻</a> ؾ Ѵ. <a href="#install"> + ɼ</a> <code>--with-suexec-userdir</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="debug" id="debug">suEXEC ϱ</a></h2> + + <p>suEXEC wrapper α ٷ + <code>--with-suexec-logfile</code> ɼ Ͽ + . wrapper ùٷ ϰ ġߴٸ ߸Ǿ + αϿ error_log .</p> + +</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> +<div class="section"> +<h2><a name="jabberwock" id="jabberwock">ٽ ѹ ϶: </a></h2> + + <p><strong>!</strong> ִ. + ġ <a href="http://httpd.apache.org/docs/2.4/suexec.html">¶ + </a> ֽ ϶.</p> + + <p>wrapper ϴ ̷ο ִ. + suEXEC õ "" ϱ ̵ 캸 ٶ.</p> + + <ul> + <li><strong>suEXEC </strong></li> + + <li> + 丮 + + <p class="indent"> + Ȱ ȿ suEXEC û ȣƮ + ֻ document root Ȥ userdir û + ֻ document root ȿ ؾ Ѵ. + , ȣƮ װ ߴٸ ȣƮ + suEXEC ̿ϱ ȣƮ document root + ġ ۿ ʿ䰡 ִ. + ( .) + </p> + </li> + + <li> + suEXEC PATH ȯ溯 + + <p class="indent"> + ϸ ִ. ϴ ΰ + <strong> ִ</strong> 丮 Ȯ϶. + װ ִ Ʈ̸ ϱ + ̴. + </p> + </li> + + <li> + suEXEC ڵ ϱ + + <p class="indent"> + ݺؼ , ϴ õѴٸ + <strong>ū </strong> ִ. 쿡 + . + </p> + </li> + </ul> + +</div></div> +<div class="bottomlang"> +<p><span> : </span><a href="./en/suexec.html" hreflang="en" rel="alternate" title="English"> en </a> | +<a href="./fr/suexec.html" hreflang="fr" rel="alternate" title="Français"> fr </a> | +<a href="./ja/suexec.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> | +<a href="./ko/suexec.html" title="Korean"> ko </a> | +<a href="./tr/suexec.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p> +</div><div class="top"><a href="#page-header"><img src="./images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Comments</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Libera.chat, or sent to our <a href="https://httpd.apache.org/lists.html">mailing lists</a>.</div> +<script type="text/javascript"><!--//--><![CDATA[//><!-- +var comments_shortname = 'httpd'; +var comments_identifier = 'http://httpd.apache.org/docs/2.4/suexec.html'; +(function(w, d) { + if (w.location.hostname.toLowerCase() == "httpd.apache.org") { + d.write('<div id="comments_thread"><\/div>'); + var s = d.createElement('script'); + s.type = 'text/javascript'; + s.async = true; + s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier; + (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s); + } + else { + d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>'); + } +})(window, document); +//--><!]]></script></div><div id="footer"> +<p class="apache">Copyright 2023 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p> +<p class="menu"><a href="./mod/"></a> | <a href="./mod/directives.html">þ</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="./glossary.html"></a> | <a href="./sitemap.html">Ʈ</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!-- +if (typeof(prettyPrint) !== 'undefined') { + prettyPrint(); +} +//--><!]]></script> +</body></html>
\ No newline at end of file diff --git a/docs/manual/suexec.html.tr.utf8 b/docs/manual/suexec.html.tr.utf8 new file mode 100644 index 0000000..ca5787c --- /dev/null +++ b/docs/manual/suexec.html.tr.utf8 @@ -0,0 +1,580 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!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="tr" xml:lang="tr"><head> +<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" /> +<!-- + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + This file is generated from xml source: DO NOT EDIT + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + --> +<title>SuEXEC Desteği - Apache HTTP Sunucusu Sürüm 2.4</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 rel="stylesheet" type="text/css" href="./style/css/prettify.css" /> +<script src="./style/scripts/prettify.min.js" type="text/javascript"> +</script> + +<link href="./images/favicon.ico" rel="shortcut icon" /></head> +<body id="manual-page"><div id="page-header"> +<p class="menu"><a href="./mod/">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="http://wiki.apache.org/httpd/FAQ">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p> +<p class="apache">Apache HTTP Sunucusu Sürüm 2.4</p> +<img alt="" src="./images/feather.png" /></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/">HTTP Sunucusu</a> > <a href="http://httpd.apache.org/docs/">Belgeleme</a> > <a href="./">Sürüm 2.4</a></div><div id="page-content"><div id="preamble"><h1>SuEXEC Desteği</h1> +<div class="toplang"> +<p><span>Mevcut Diller: </span><a href="./en/suexec.html" hreflang="en" rel="alternate" title="English"> en </a> | +<a href="./fr/suexec.html" hreflang="fr" rel="alternate" title="Français"> fr </a> | +<a href="./ja/suexec.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> | +<a href="./ko/suexec.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> | +<a href="./tr/suexec.html" title="Türkçe"> tr </a></p> +</div> + + <p><strong>SuEXEC</strong> özelliği, Apache HTTP Sunucusu kullanıcılarına + <strong>CGI</strong> ve <strong>SSI</strong> programlarını sunucunun + aidiyetinde çalıştığı kullanıcıdan farklı bir kullanıcının aidiyetinde + çalıştırma olanağı verir. Normalde, <strong>CGI</strong> ve + <strong>SSI</strong> programlarını çalıştıranla sunucuyu çalıştıran + aynı kullanıcıdır.</p> + + <p>Gerektiği gibi kullanıldığında bu özellik, kullanıcılara + <strong>CGI</strong> ve <strong>SSI</strong> programlarını çalıştırma + ve geliştirmeye izin vermekle ortaya çıkan güvenlik risklerini azaltır. + Bununla birlikte, <strong>suEXEC</strong> gerektiği gibi + yapılandırılmadığı takdirde bazı sorunlara yol açabilir ve bilgisayar + güvenliğinizde yeni delikler ortaya çıkmasına sebep olabilir. + Güvenlikle ilgili mevcut sorunlarla başa çıkmada ve <em>setuid + root</em> programları yönetmekte bilgi ve deneyim sahibi değilseniz + <strong>suEXEC</strong> kullanmayı kesinlikle düşünmemenizi + öneririz.</p> + </div> +<div id="quickview"><a href="https://www.apache.org/foundation/contributing.html" class="badge"><img src="https://www.apache.org/images/SupportApache-small.png" alt="Support Apache!" /></a><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#before">Başlamadan önce</a></li> +<li><img alt="" src="./images/down.gif" /> <a href="#model">SuEXEC Güvenlik Modeli</a></li> +<li><img alt="" src="./images/down.gif" /> <a href="#install">suEXEC’in Yapılandırılması ve Kurulumu</a></li> +<li><img alt="" src="./images/down.gif" /> <a href="#enable">suEXEC’in etkin kılınması ve iptal edilmesi</a></li> +<li><img alt="" src="./images/down.gif" /> <a href="#usage">SuEXEC’in kullanımı</a></li> +<li><img alt="" src="./images/down.gif" /> <a href="#debug">SuEXEC ve hata ayıklama</a></li> +<li><img alt="" src="./images/down.gif" /> <a href="#jabberwock">Uyarılar ve Örnekler</a></li> +</ul><h3>Ayrıca bakınız:</h3><ul class="seealso"><li><a href="#comments_section">Yorumlar</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="before" id="before">Başlamadan önce</a></h2> + + <p>Belgeye balıklama dalmadan önce, suexec'i kullanacağınız ortam ve + kendiniz hakkında yapılmış çeşitli kabuller hakkında bilgi sahibi + olmalısınız.</p> + + <p>Öncelikle, üzerinde <strong>setuid</strong> va <strong>setgid</strong> + işlemlerinin yapılabildiği Unix türevi bir işletim sistemi + kullandığınızı varsayıyoruz. Tüm komut örnekleri buna dayanarak + verilmiştir. Bu desteğe sahip başka platformlar varsa onlardaki + yapılandırma burada anlattığımız yapılandırmadan farklı olabilir.</p> + + <p>İkinci olarak, bilgisayarınızın güvenliği ve yönetimi ile ilgili bazı + temel kavramları bildiğinizi kabul ediyoruz. Buna + <strong>setuid/setgid</strong> işlemlerinin sisteminiz ve güvenlik + seviyesi üzerindeki etkilerini bilmek dahildir.</p> + + <p>Üçüncü olarak, <strong>suEXEC</strong> kodunun + <strong>değiştirilmemiş</strong> bir sürümünü kullandığınızı + varsayıyoruz. Tüm suEXEC kodu, geliştiricilerin yanında sayısız beta + kullanıcısı tarafından dikkatle incelenmiş ve denenmiştir. Kodların hem + basit hem de sağlam bir şekilde güvenli olması için gerekli tüm + önlemler alınmıştır. Bu kodun değiştirilmesi beklenmedik sorunlara ve + yeni güvenlik risklerine yol açabilir. Özellikle güvenlikle ilgili + programlarda deneyimli değilseniz suEXEC kodunda kesinlikle bir + değişiklik yapmamalısınız. Değişiklik yaparsanız kodlarınızı gözden + geçirmek ve tartışmak üzere Apache HTTP Sunucusu geliştirme ekibi ile + paylaşmanızı öneririz.</p> + + <p>Dördüncü ve son olarak, Apache HTTP Sunucusu geliştirme ekibinin + suEXEC’i öntanımlı httpd kurulumunun bir parçası yapmama kararından + bahsetmek gerekir. Bunun sonucu olarak, suEXEC yapılandırması sistem + yöneticisinin ayrıntılı bir incelemesini gerektirir. Gerekli incelemeden + sonra yönetici tarafından suEXEC yapılandırma seçeneklerine karar + verilip, normal yollardan sisteme kurulumu yapılır. Bu seçeneklerin + belirlenmesi, suEXEC işlevselliğinin kullanımı sırasında sistem + güvenliğini gerektiği gibi sağlamak için yönetici tarafından dikkatle + saptanmayı gerektirir. Bu sürecin ayrıntılarının yöneticiye bırakılma + sebebi, suEXEC kurulumunu, suEXEC’i dikkatle kullanacak yeterliliğe sahip + olanlarla sınırlama beklentimizdir.</p> + + <p>Hala bizimle misiniz? Evet mi? Pekala, o halde devam!</p> +</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> +<div class="section"> +<h2><a name="model" id="model">SuEXEC Güvenlik Modeli</a></h2> + + <p>SuEXEC yapılandırması ve kurulumuna girişmeden önce biraz da + gerçekleşmesini istediğiniz güvenlik modelinin ayrıntıları üzerinde + duralım. Böylece, suEXEC’in içinde olup bitenleri ve sisteminizin + güvenliği için alınacak önlemleri daha iyi anlayabilirsiniz.</p> + + <p><strong>suEXEC</strong> işlevselliği, Apache HTTP Sunucusu tarafından + gerektiği takdirde artalanda çalıştırılan bir setuid programa dayanır. + Bu program, bir CGI veya SSI betiğine bir HTTP isteği yapıldığı zaman, + bu betiği, yöneticinin ana sunucunun aidiyetinde çalıştığı kullanıcıdan + farklı olarak seçtiği bir kullanıcının aidiyetinde çalıştırmak için + çağrılır. Böyle bir istek geldiğinde, Apache httpd artalandaki setuid + programına, HTTP isteği yapılan programın ismiyle beraber aidiyetinde + çalışacağı kullanıcı ve grup kimliklerini de aktarır.</p> + + <p>Artalanda çalıştırılan setuid program başarıyı ve başarısızlığı + aşağıdaki süreci izleyerek saptar. Bunlardan herhangi biri başarısız + olursa program başarısızlık durumunu günlüğe kaydeder ve bir hata + vererek çıkar. Aksi takdirde çalışmaya devam eder.</p> + + <ol> + <li> + <strong>Setuid programı çalıştıran kullanıcı sistemin geçerli + kullanıcılarından biri mi?</strong> + + <p class="indent">Bu, setuid programı çalıştıran kullanıcının + sistemin gerçek bir kullanıcısı olduğunudan emin olunmasını sağlar. + </p> + </li> + + <li> + <strong>Setuid program yeterli sayıda argümanla çağrılmış mı? + </strong> + + <p class="indent">Apache HTTP Sunucusunun artalanda çağırdığı + setuid program ancak yeterli sayıda argüman sağlandığı takdirde + çalışacaktır. Argümanların sayısını ve sırasını Apache HTTP sunucusu + bilir. Eğer setuid program yeterli sayıda argümanla çağrılmamışsa + ya kendisinde bir değişiklik yapılmıştır ya da kurulu Apache httpd + çalıştırılabilirinin suEXEC ile ilgili kısmında yanlış giden bir + şeyler vardır.</p> + </li> + + <li> + <strong>Bu geçerli kullanıcının bu setuid programı çalıştırma + yetkisi var mı?</strong> + + <p class="indent">Sadece tek bir kullanıcı (Apache’nin aidiyetinde + çalıştığı kullanıcı) bu programı çalıştırmaya yetkilidir.</p> + </li> + + <li> + <strong>Hedef CGI veya SSI programı hiyerarşik olarak güvenliği + bozacak bir dosya yolu üzerinde mi?</strong> + + <p class="indent">Hedef CGI veya SSI programının dosya yolu '/' veya + '..' ile başlıyor mu? Buna izin verilmez. Hedef CGI veya SSI + programı suEXEC’in belge kök dizininde yer almalıdır (aşağıda + <code>--with-suexec-docroot=<em>DİZİN</em></code> seçeneğine + bakınız).</p> + </li> + + <li> + <strong>Hedef kullanıcı ismi geçerli mi?</strong> + + <p class="indent">Hedef kullanıcı mevcut mu?</p> + </li> + + <li> + <strong>Hedef grup ismi geçerli mi?</strong> + + <p class="indent">Hedef grup mevcut mu?</p> + </li> + + <li> + <strong>Hedef kullanıcı <code>root</code> değil, değil mi?</strong> + + <p class="indent">Mevcut durumda, <code>root</code> kullanıcısının + CGI/SSI programlarını çalıştırmasına izin verilmemektedir.</p> + </li> + + <li> + <strong>Hedef kullanıcı kimliği asgari kullanıcı numarasından + <em>BÜYÜK</em> mü?</strong> + + <p class="indent">Asgari kullanıcı numarası yapılandırma sırasında + belirtilir. Böylece CGI/SSI programlarını çalıştırmasına izin + verilecek olası en düşük kullanıcı numarasını belirlemeniz mümkün + kılınmıştır. Bu bazı “sistem” hesaplarını devreden çıkarmak için + yararlıdır.</p> + </li> + + <li> + <strong>Hedef grup <code>root</code> değil, değil mi?</strong> + + <p class="indent"><code>root</code> grubunun CGI/SSI + programlarını çalıştırmasına izin verilmemektedir.</p> + </li> + + <li> + <strong>Hedef grup numarası asgari grup numarasından + <em>BÜYÜK</em> mü?</strong> + + <p class="indent">Asgari grup numarası yapılandırma sırasında + belirtilir. Böylece CGI/SSI programlarını çalıştırmasına izin + verilecek olası en düşük grup numarasını belirlemeniz mümkün + kılınmıştır. Bu bazı “sistem” hesaplarını devreden çıkarmak için + yararlıdır.</p> + </li> + + <li> + <strong>Apache’nin artalanda çağırdığı setuid program hedef + kullanıcı ve grubun aidiyetine geçebildi mi?</strong> + + <p class="indent">Bu noktadan itibaren program setuid ve setgid + çağrıları üzerinden hedef kullanıcı ve grubun aidiyetine geçer. + Erişim grubu listesi de ayrıca kullanıcının üyesi olduğu tüm + gruplara genişletilir.</p> + </li> + + <li> + <strong>Hedef CGI/SSI programının bulunduğu dizine geçebildik mi? + </strong> + + <p class="indent">Dizin mevcut değilse dosyaları da içeremez. Hedef + dizine geçemiyorsak bu, dizin mevcut olmadığından olabilir.</p> + </li> + + <li> + <strong>Hedef dizin Apache için izin verilen yerlerden biri mi? + </strong> + + <p class="indent">İstek sunucunun normal bir bölümü için yapılmış + olsa da istenen dizin acaba suEXEC’in belge kök dizini altında mı? + Yani, istenen dizin, suEXEC’in aidiyetinde çalıştığı kullanıcının + ev dizini altında bulunan, <code class="directive"><a href="./mod/mod_userdir.html#userdir">UserDir</a></code> ile belirtilen dizinin altında mı? (<a href="#install">suEXEC’in yapılandırma seçeneklerine</a> + bakınız).</p> + </li> + + <li> + <strong>Hedef dizin başkaları tarafından yazılabilen bir dizin değil, + değil mi?</strong> + + <p class="indent">Başkaları da yazabilsin diye bir dizin açmıyoruz; + dizin içeriğini sadece sahibi değiştirebilmelidir.</p> + </li> + + <li> + <strong>Hedef CGI/SSI programı mevcut mu?</strong> + + <p class="indent">Mevcut değilse çalıştırılamaz.</p> + </li> + + <li> + <strong>Hedef CGI/SSI program dosyasına başkaları tarafından + yazılamıyor, değil mi?</strong> + + <p class="indent">Hedef CGI/SSI programının dosyasına sahibinden + başka kimsenin bir şeyler yazmasını istemeyiz.</p> + </li> + + <li> + <strong>Hedef CGI/SSI program setuid veya setgid <em>değil</em>, + değil mi?</strong> + + <p class="indent">UID/GID‘i tekrar değiştirecek programlar + çalıştırmayı istemeyiz.</p> + </li> + + <li> + <strong>Hedef kullanıcı/grup, programın kullanıcı/grubu ile aynı mı? + </strong> + + <p class="indent">Hedef kullanıcı dosyanın sahibi mi?</p> + </li> + + <li> + <strong>İşlemlerin güvenle yapılabilmesi için süreç ortamını + başarıyla temizleyebildik mi?</strong> + + <p class="indent">suEXEC, sürecin çalışacağı ortama güvenli bir + program çalıştırma yolu sağlamaktan başka, yapılandırma sırasında + oluşturulan güvenli ortam değişkenleri listesinde isimleri bulunan + ortam değişkenlerinden başkasını aktarmayacaktır.</p> + </li> + + <li> + <strong>Hedef CGI/SSI programı haline gelip çalışabildik mi?</strong> + + <p class="indent">Burası suEXEC’in bitip CGI/SSI programının + başladığı yerdir.</p> + </li> + </ol> + + <p>Bu süreç suEXEC güvenlik modelinin standart işlemlerini oluşturur. + Biraz zorlayıcı ve CGI/SSI tasarımına yeni kurallar ve sınırlamalar + getiriyor olsa da düşünülen güvenliği adım adım sağlayacak şekilde + tasarlanmıştır.</p> + + <p>Düzgün bir suEXEC yapılandırmasının hangi güvenlik risklerinden + kurtulmayı sağladığı ve bu güvenlik modelinin sunucu yapılandırmasıyla + ilgili sorumluluklarınızı nasıl sınırlayabildiği hakkında daha + ayrıntılı bilgi edinmek için bu belgenin <a href="#jabberwock">"Uyarılar ve Örnekler"</a> bölümüne bakınız.</p> +</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> +<div class="section"> +<h2><a name="install" id="install">suEXEC’in Yapılandırılması ve Kurulumu</a></h2> + + <p>Eğlence başlıyor.</p> + + <p><strong>suEXEC yapılandırma seçenekleri</strong><br /> + </p> + + <dl> + <dt><code>--enable-suexec</code></dt> + + <dd>Bu seçenek, hiçbir zaman öntanımlı olarak kurulmayan ve + etkinleştirilmeyen suEXEC özelliğini etkin kılar. suEXEC özelliğini + kullanma isteğinizi Apache’nin kabul edebilmesi için + <code>--enable-suexec</code> seçeneğinin yanında en azından bir tane + de <code>--with-suexec-xxxxx</code> seçeneği belirtilmiş + olmalıdır.</dd> + + <dt><code>--with-suexec-bin=<em>YOL</em></code></dt> + + <dd>Güvenlik sebebiyle <code>suexec</code> çalıştırılabilirinin + bulunduğu yer sunucu koduna yazılır. Bu seçenekle öntanımlı yol + değiştirilmiş olur. Örnek:<br /> + <code>--with-suexec-bin=/usr/sbin/suexec</code></dd> + + <dt><code>--with-suexec-caller=<em>KULLANICI</em></code></dt> + + <dd>Normalde httpd’nin aidiyetinde çalıştığı <a href="mod/mpm_common.html#user">kullanıcı</a>dır. Bu, suEXEC + çalıştırıcısını çalıştırmasına izin verilen tek kullanıcıdır.</dd> + + <dt><code>--with-suexec-userdir=<em>DİZİN</em></code></dt> + + <dd><p>Kullanıcıların ev dizinleri altında suEXEC’in erişmesine izin + verilen alt dizinin yerini tanımlar. Bu dizin altında suEXEC + kullanıcısı tarafından çalıştırılacak tüm programlar "güvenilir" + olmalıdır. Eğer “basit” bir <code class="directive"><a href="./mod/mod_userdir.html#userdir">UserDir</a></code> yönergesi kullanıyorsanız ( içinde “*” + bulunmayan), bunun aynı dizin olması gerekir. Eğer burada belirtilen + dizin, <code>passwd</code> dosyasında kullanıcı için belirtilmiş + dizinin altında <code class="directive"><a href="./mod/mod_userdir.html#userdir">UserDir</a></code> + yönergesinde belirtilen dizin olmadığı takdirde suEXEC işini + gerektiği gibi yapmayacaktır. Öntanımlı değer + <code>public_html</code>’dir.</p> + + <p>Eğer, sanal konaklarınızın herbiri farklı <code class="directive"><a href="./mod/mod_userdir.html#userdir">UserDir</a></code> yönergeleri içeriyorsa + burada belirtilecek dizinin üst dizininin hepsinde aynı olması + gerekir. <strong>Aksi takdirde, "~<em><code>kullanıcı</code></em>" + istekleri düzgün çalışmayacaktır.</strong></p></dd> + + <dt><code>--with-suexec-docroot=<em>DİZİN</em></code></dt> + + <dd>httpd için belge kök dizinini belirler. Bu, (<code class="directive"><a href="./mod/mod_userdir.html#userdir">UserDir</a></code>’lardan başka) suEXEC için + kullanılacak tek hiyerarşi olacaktır. Öntanımlı dizin sonuna + "<code>/htdocs</code>" eklenmiş <code>--datadir</code> dizinidir. + Yani, seçeneği "<code>--datadir=/home/apache</code>" olarak + belirtmişseniz suEXEC çalıştırıcısı için belge kök dizini + "<code>/home/apache/htdocs</code>" olur.</dd> + + <dt><code>--with-suexec-uidmin=<em>UID</em></code></dt> + + <dd>suEXEC kullanıcısının kullanıcı kimliği olarak izin verilen en + düşük değeri belirler. Çoğu sistemde bu ya 500’dür ya da 100; 100 + öntanımlıdır.</dd> + + <dt><code>--with-suexec-gidmin=<em>GID</em></code></dt> + + <dd>suEXEC kullanıcısının grup kimliği olarak izin verilen en düşük + değeri belirler. Çoğu sistemde bu 100 olup, seçeneğin de öntanımlı + değeridir.</dd> + + <dt><code>--with-suexec-logfile=<em>DOSYA</em></code></dt> + + <dd>suEXEC hareketlerinin ve hatalarının kaydedileceği günlük + dosyasının adını belirler (denetim ve hata ayıklama için + kullanışlıdır). Öntanımlı günlük dosyası ismi + "<code>suexec_log</code>" olup yeri (<code>--logfiledir</code> + seçeneği ile belirtilen) günlük dosyaları dizinidir.</dd> + + <dt><code>--with-suexec-safepath=<em>YOL</em></code></dt> + + <dd>CGI çalıştırılabilirlerine aktarılacak güvenilir <code>PATH</code> + ortam değişkeninin değerini tanımlar. + "<code>/usr/local/bin:/usr/bin:/bin</code>" öntanımlıdır.</dd> + </dl> + + <h3>SuEXEC çalıştırıcısının derlenmesi ve kurulumu</h3> + + + <p>SuEXEC özelliğini <code>--enable-suexec</code> seçeneği ile + etkinleştirdiyseniz <code>make</code> komutunu verdiğinizde httpd + ile birlikte <code>suexec</code> çalıştırılabilir dosyası da + derlenecektir.</p> + + <p>Tüm bileşenler derlendikten sonra <code>make install</code> komutunu + vererek kurulumu tamamlayabilirsiniz. <code>suexec</code> + çalıştırılabilir dosyası <code>--sbindir</code> seçeneği ile + tanımlanan dizine kurulacaktır; öntanımlı yeri + <code>/usr/local/apache2/bin/</code> dizinidir.</p> + + <p>Kurulum adımında <strong><em>root yetkisine</em></strong> sahip + olmanız gerektiğini unutmayın. Çalıştırıcıya kullanıcı kimliğinin + atanabilmesi ve dosyanın sahibi olan kullanıcı kimliği ile + çalıştırılabilmesini mümkün kılan bitinin etkin kılınabilmesi için + kurulumun <code><em>root</em></code> tarafından yapılması + önemlidir.</p> + + + <h3>Paranoyak yetkilendirme</h3> + + + <p>SuEXEC çalıştırıcısı kendini çalıştıran kullanıcının + <code class="program"><a href="./programs/configure.html">configure</a></code> betiğine + <code>--with-suexec-caller</code> seçeneği ile belirtilen kullanıcı + olup olmadığına bakacaksa da, bu sınamanın da bir sistem veya + kütüphane çağrısı ile istismar edilmiş olma ihtimali gözardı + edilmemelidir. Bunun meydana gelmesini önlemek için ve genelde + yapıldığı gibi dosyanın izinlerini suEXEC çalıştırıcısı sadece + httpd'nin aidiyetinde çalıştığı grup tarafından çalıştırılacak + şekilde ayarlayınız.</p> + + <p>Örneğin, sunucunuz şöyle yapılandırılmışsa:</p> + + <pre class="prettyprint lang-config">User www +Group webgroup</pre> + + + <p>Ve <code class="program"><a href="./programs/suexec.html">suexec</a></code> çalıştırılabilir de + <code>/usr/local/apache2/bin/</code> dizinine kurulmuşsa şu komutları + vermelisiniz:</p> + + <div class="example"><p><code> + chgrp apache-grup /usr/local/apache2/bin/suexec<br /> + chmod 4750 /usr/local/apache2/bin/suexec<br /> + </code></p></div> + + <p>Böylece suEXEC çalıştırıcısını httpd’yi çalıştıran grubun + üyelerinden başkasının çalıştıramayacağından emin olabilirsiniz.</p> + +</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> +<div class="section"> +<h2><a name="enable" id="enable">suEXEC’in etkin kılınması ve iptal edilmesi</a></h2> + + + <p>httpd başlatıldığı sırada <code class="program"><a href="./programs/suexec.html">suexec</a></code> çalıştırıcısı için + <code>--sbindir</code> seçeneği ile tanımlanan dizine bakar (seçeneğin + öntanımlı değeri <code>/usr/local/apache/sbin/suexec</code>’tir). httpd + düzgün yapılandırılmış bir suEXEC çalıştırıcısı bulduğu takdirde hata + günlüğüne şöyle bir ileti yazacaktır:</p> + +<div class="example"><p><code> + [notice] suEXEC mechanism enabled (wrapper: <var>/dosya/yolu/suexec</var>) +</code></p></div> + + <p>Sunucu başlatıldığında bu ileti yazılmazsa sunucu ya çalıştırıcı + programı umduğu yerde bulamamıştır ya da dosyanın <em>setuid</em> biti + <em>root</em> tarafından etkin kılınmamıştır.</p> + + <p>SuEXEC mekanizmasını etkin kılmak istediğiniz sunucu çalışmaktaysa + sunucuyu önce öldürmeli sonra yeniden başlatmalısınız. Basit bir + <code>HUP</code> veya <code>USR1</code> sinyali ile yeniden başlamasını + sağlamak yeterli olmayacaktır.</p> + + <p>SuEXEC mekanizmasını iptal etmek için ise <code class="program"><a href="./programs/suexec.html">suexec</a></code> + dosyasını sildikten sonra httpd'yi öldürüp yeniden başlamalısınız.</p> +</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> +<div class="section"> +<h2><a name="usage" id="usage">SuEXEC’in kullanımı</a></h2> + + <p>CGI programlarına yapılan isteklerin suEXEC çalıştırıcısı tarafından + yerine getirilebilmesi için sanal konağın bir <code class="directive"><a href="./mod/mod_suexec.html#suexecusergroup">SuexecUserGroup</a></code> yönergesi içermesi veya + isteğin <code class="module"><a href="./mod/mod_userdir.html">mod_userdir</a></code> tarafından işleme konulması + gerekir.</p> + + <p><strong>Sanal Konaklar:</strong><br />SuEXEC çalıştırıcısını farklı + bir kullanıcı ile etkin kılmanın tek yolu <code class="directive"><a href="./mod/core.html#virtualhost">VirtualHost</a></code> bölümleri içinde <code class="directive"><a href="./mod/mod_suexec.html#suexecusergroup">SuexecUserGroup</a></code> yönergesini + kullanmaktır. Bu yönergede ana sunucuyu çalıştıran kullanıcıdan farklı + bir kullanıcı belirterek ilgili sanal konak üzerinden CGI kaynakları + için yapılan tüm isteklerin belirtilen <em>kullanıcı</em> ve + <em>grup</em> tarafından çalıştırılması sağlanır. Bu yönergeyi + içermeyen sanal konaklar için ana sunucunun kullanıcısı + öntanımlıdır.</p> + + <p><strong>Kullanıcı dizinleri:</strong><br /> + <code class="module"><a href="./mod/mod_userdir.html">mod_userdir</a></code> tarafından işleme sokulan tüm istekler için + suEXEC çalıştırıcısı istek yapılan kullanıcı dizininin sahibinin + aidiyetinde çalıştırılacaktır. Bu özelliğin çalışması için tek + gereklilik, kullanıcının SuEXEC çalıştırıcısı için etkin kılınmış olması + ve çalıştırıcının yukarıdaki <a href="#model">güvenlik sınamalarından</a> + geçebilmesidir. Ayrıca, <code>--with-suexec-userdir</code> <a href="#install">derleme</a> seçeneğinin açıklamasına da bakınız.</p> +</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> +<div class="section"> +<h2><a name="debug" id="debug">SuEXEC ve hata ayıklama</a></h2> + + <p>SuEXEC çalıştırıcısı yukarıda değinildiği gibi günlük bilgilerini + <code>--with-suexec-logfile</code> seçeneği ile belirtilen dosyaya + yazacaktır. Çalıştırıcıyı doğru yapılandırarak kurduğunuzdan emin olmak + istiyorsanız, yolunda gitmeyen şeyler var mı diye bu günlük dosyasına + bakmayı ihmal etmeyin.</p> + +</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> +<div class="section"> +<h2><a name="jabberwock" id="jabberwock">Uyarılar ve Örnekler</a></h2> + + + <p><strong>UYARI!</strong> Bu bölüm henüz bitmedi.</p> + + <p>SuEXEC çalıştırıcısından dolayı sunucu ayarlarına bazı sınırlamalar + getiren bir kaç önemli nokta mevcuttur. SuEXEC ile ilgili hata + bildiriminde bulunmadan önce bunlara bir göz atmalısınız.</p> + + <p><strong>suEXEC ile ilgili önemli noktalar</strong></p> + <ul> + <li>Hiyerarşik sınırlamalar + + <p class="indent">Güvenlik ve verimlilik adına, tüm suEXEC + isteklerinin sanal konaklar için üst düzey belge kökünün altındaki + dosyalarla, kullanıcı dizinleri için ise üst düzey bireysel belge + köklerinin altındaki dosyalarla sınırlı kalması gerekir. Örneğin, + dört sanal konağınız varsa ve suEXEC çalıştırıcısının + getirilerinden faydalanmak istiyorsanız, sanal konaklarınızın belge + kök dizinlerini ana sunucunun belge kök dizininin altında kalacak + şekilde yapılandırmanız gerekir (örnek yolda).</p> + </li> + + <li>SuEXEC'in <code>PATH</code> ortam değişkeni + + <p class="indent">Bunu değiştirmek tehlikeli olabilir. Bu değişkende + tanımladığınız her yolun <strong>güvenli</strong> bir dizini işaret + ettiğinden emin olmalısınız. Başkalarının oralarda bir truva atı + çalıştırmasını istemiyorsanız buna çok dikkat ediniz.</p> + </li> + + <li>SuEXEC kodunda değişiklik + + <p class="indent">Gerçekte ne yaptığınızı bilmiyorsanız bu, + <strong>büyük bir sorun</strong> olabilir. Böyle şeyler yapmaktan + mümkün olduğunca uzak durmalısınız.</p> + </li> + </ul> + +</div></div> +<div class="bottomlang"> +<p><span>Mevcut Diller: </span><a href="./en/suexec.html" hreflang="en" rel="alternate" title="English"> en </a> | +<a href="./fr/suexec.html" hreflang="fr" rel="alternate" title="Français"> fr </a> | +<a href="./ja/suexec.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> | +<a href="./ko/suexec.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> | +<a href="./tr/suexec.html" title="Türkçe"> tr </a></p> +</div><div class="top"><a href="#page-header"><img src="./images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Yorumlar</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Libera.chat, or sent to our <a href="https://httpd.apache.org/lists.html">mailing lists</a>.</div> +<script type="text/javascript"><!--//--><![CDATA[//><!-- +var comments_shortname = 'httpd'; +var comments_identifier = 'http://httpd.apache.org/docs/2.4/suexec.html'; +(function(w, d) { + if (w.location.hostname.toLowerCase() == "httpd.apache.org") { + d.write('<div id="comments_thread"><\/div>'); + var s = d.createElement('script'); + s.type = 'text/javascript'; + s.async = true; + s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier; + (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s); + } + else { + d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>'); + } +})(window, document); +//--><!]]></script></div><div id="footer"> +<p class="apache">Copyright 2023 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p> +<p class="menu"><a href="./mod/">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="http://wiki.apache.org/httpd/FAQ">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!-- +if (typeof(prettyPrint) !== 'undefined') { + prettyPrint(); +} +//--><!]]></script> +</body></html>
\ No newline at end of file |