⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 suexec.html

📁 这个是我在web培训时老师提供的手册
💻 HTML
📖 第 1 页 / 共 2 页
字号:
        <p class="indent">用户是这个文件的属主吗?</p>
      </li>

      <li>
        <strong>我们可以成功清除进程的环境变量并保证操作的安全性吗?</strong> 

        <p class="indent">suEXEC通过建立一个安全的可执行路径(在配置中定义)来清除该进程的环境变量,同时只传送在安全环境变量列表(配置中定义)中所列出的环境变量。</p>
      </li>

      <li>
        <strong>可以成功的变为目标程序并执行吗?</strong> 

        <p class="indent">这里就是suEXEC结束,并开始运行目标程序的地方了。</p>
      </li>
    </ol>

    <p>这是suEXEC封装器标准操作方式的安全模型。它有些严格,并强加了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功能。并同时至少提供一个 <code>--with-suexec-xxxxx</code> 选项,以使APACI使用suEXEC功能来处理请求。</dd>

      <dt><code>--with-suexec-bin=<em>PATH</em></code></dt>

      <dd>出于安全考虑,<code>suexec</code>二进制程序的路径必须用这个选项指定并硬编码在服务器里。比如:<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">UID</a>。这是唯一允许执行程序的用户。</dd>

      <dt><code>--with-suexec-userdir=<em>DIR</em></code></dt>

      <dd>定义suEXEC允许访问的用户宿主目录下的子目录。suEXEC将以用户身份执行这个目录下的所有可执行程序,所以这些程序必须是"安全程序"。如果使用"简单的"<code class="directive"><a href="./mod/mod_userdir.html#userdir">UserDir</a></code>指令(即不带"*"),则此处应该被设置为相同的值。当<code class="directive"><a href="./mod/mod_userdir.html#userdir">UserDir</a></code>指令所指向的目录与"passwd"文件所指定的用户宿主目录不同时,suEXEC将不会正常工作,其默认值是"public_html"。如果所支持的虚拟主机对每个用户有不同的<code class="directive"><a href="./mod/mod_userdir.html#userdir">UserDir</a></code> ,则应该把他们集中在同一个父目录下,而用这个参数指向这个父目录。<strong>如果配置不当,"~userdir"下的cgi请求将无效!</strong></dd>

      <dt><code>--with-suexec-docroot=<em>DIR</em></code></dt>

      <dd>定义Apache的<code class="directive"><a href="./mod/core.html#documentroot">DocumentRoot</a></code>。它是除<code class="directive"><a href="./mod/mod_userdir.html#userdir">UserDir</a></code>外suEXEC唯一可以使用的目录。其默认目录是 <code>--datadir</code> 值所指定的带有"/htdocs"的后缀的目录,比如:如果配置了"<code>--datadir=/home/apache</code>",那么"/home/apache/htdocs"目录将作为suEXEC处理器的文档根目录。</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处理器</strong><br />
     若用 <code>--enable-suexec</code> 打开了suEXEC功能,那么执行<code>make</code>命令时(Apache自带的)<code>suexec</code>二进制文件就会被自动建立。所有组件编译完毕后执行 <code>make install</code> 命令进行安装时,<code>suexec</code>文件将被安装在 <code>--sbindir</code> 选项指定的目录中,默认为"/usr/local/apache2/sbin/suexec"。<br />
    注意,安装过程需要<strong>root权限</strong>。为了使suEXEC处理器可以设置UID,其所有者必须为<code><em>root</em></code> ,并且文件模式中的执行位必须设置为1(允许执行)。</p>

    <p><strong>设置许可权限</strong><br />
    虽然suEXEC包装会检查以确保它的调用者就是<code class="program"><a href="./programs/configure.html">配置选项</a></code> <code>--with-suexec-caller</code> 所指定的用户。但是总是存在这样的可能性:一个系统或者库在suEXEC执行用户身份检查之前调用它,这样就存在一个可利用的漏洞。通常,避免这种问题的最佳办法是,使用文件系的统权限来确保只有Apache组用户运行的程序才能执行suEXEC。</p>

    <p>如果你的web-server是按照如下所示进行配置的:</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/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>这将确保只有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> 选项指定的目录(默认为:"/usr/local/apache/sbin/suexec")中寻找<code class="program"><a href="./programs/suexec.html">suexec</a></code>。如果Apache找到了一个正确配置的suEXEC处理器,会在错误日志中记录以下信息:</p>

<div class="example"><p><code>
    [notice] suEXEC mechanism enabled (wrapper: <var>/path/to/suexec</var>)
</code></p></div>

    <p>如果服务器启动后没有这个信息,那么很可能是服务器没找到适当的处理器,或者是这个执行程序没有安装<em>setuid root</em>。</p>

     <p>如果要在Apache服务器运行过程中打开suEXEC功能,则必须停止并重新启动Apache。用一个简单的HUP或USR1信号来重新启动是不够的。</p>
     <p>如果要关闭suEXEC功能,应该删除<code class="program"><a href="./programs/suexec.html">suexec</a></code>文件,并停止和重新启动Apache。</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处理器的方法之一是在<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>指令。通过设置这个指令来确定不同于主服务器的UID,所有对CGI资源的请求将以<code class="directive"><a href="./mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code>所定义的<em>User</em>和<em>Group</em>身份执行。如果<code class="directive"><a href="./mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code>中没有这个指令,则将以主服务器的UID身份执行。</p>

    <p><strong>用户目录:</strong><br />
    由<code class="module"><a href="./mod/mod_userdir.html">mod_userdir</a></code>处理的请求会调用suEXEC处理器以被请求的用户目录所属的UID执行CGI程序。此功能的唯一要求是,此用户必须有CGI执行权限,并且其脚本符合上述<a href="#model">安全检查</a>的要求。参见 <code>--with-suexec-userdir</code> <a href="#install">编译选项</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">调试suEXEC</a></h2>

    <p>如上所述,suEXEC处理器会在 <code>--with-suexec-logfile</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="jabberwock" id="jabberwock">谨防Jabberwock:警告和举例</a></h2>

    <p><strong>注意!</strong>这部分文档可能还没有完成。查看最新的修订版本,请到Apache开发组的<a href="http://httpd.apache.org/docs/2.2/suexec.html">在线文档</a>。</p>

    <p>以下是有关限制和服务器安装的几个注意事项,在提交任何关于suEXEC的"bugs"以前,请仔细阅读。</p>

    <ul>
      <li><strong>suEXEC注意事项</strong></li>

      <li>
        层次限制 

        <p class="indent">出于安全和效率考虑,所有suEXEC请求必须被限制在虚拟主机或者用户目录的顶层。举例来说,如果你配置了4个虚拟主机,你必须把所有虚拟主机的文档根目录都安置在同一个主Apache目录中,这样才能为虚拟主机启用suEXEC。(例子以后会有的)</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 id="footer">
<p class="apache">本文允许自由使用、分发、转载,但必须保留译者署名;详见:<a href="./translator_announcement.html#announcement">译者声明</a>。</p>
<p class="menu"><a href="./mod/index.html">模块索引</a> | <a href="./mod/directives.html">指令索引</a> | <a href="./faq/index.html">常见问题</a> | <a href="./glossary.html">词汇表</a> | <a href="./sitemap.html">站点导航</a></p></div>
</body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -