<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>4987</bug_id>
          
          <creation_ts>2004-08-13 11:55:08 +0400</creation_ts>
          <short_desc>неполная проверка в mod_cgi возможности запуска cgi-приложений</short_desc>
          <delta_ts>2006-02-17 18:17:18 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>apache</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Vladimir Lettiev">crux</reporter>
          <assigned_to name="Michael Shigorin">mike</assigned_to>
          <cc>at</cc>
    
    <cc>cas</cc>
    
    <cc>crux</cc>
    
    <cc>ender</cc>
    
    <cc>lakostis</cc>
    
    <cc>ldv</cc>
    
    <cc>migor</cc>
    
    <cc>mike</cc>
    
    <cc>mithraen</cc>
    
    <cc>qa_viy</cc>
    
    <cc>rider</cc>
    
    <cc>shaba</cc>
    
    <cc>solo</cc>
    
    <cc>viy</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>18086</commentid>
    <comment_count>0</comment_count>
    <who name="Vladimir Lettiev">crux</who>
    <bug_when>2004-08-13 11:55:08 +0400</bug_when>
    <thetext>mod_cgi делает неполную проверку возможности запуска cgi-приложения. Проверка
успешна только если:
1. файл принадлежит пользователю или группе apache и выставлен соотвествующий
бит запуска.
2. файл имеет бит - запуск для всех.

Т.о. если возможность запуска файла для пользователя или группы apache
выставлена при помощи ACL (на фс, поддерживающих posix acl) или пользователь
apache включён в группу-владельца файла, то apache не будет производить запуск
cgi-приложения и укажет ошибку: &quot;file permissions deny server execution&quot;.

Это предположительно связано с повышением уровня безопасности, но для тех кто
знает, что ему нужно, было бы полезно, чтобы apache вёл себя в соотвествии с
нормальными правилами запуска.

Предлагается сей патч (источник: http://archive.apache.org/gnats/5033)

-----------------------------------------------------------

diff -Nur apache_1.3.31.orig/src/modules/standard/mod_cgi.c
apache_1.3.31/src/modules/standard/mod_cgi.c
--- apache_1.3.31.orig/src/modules/standard/mod_cgi.c   2004-08-12 15:55:52 +0400
+++ apache_1.3.31/src/modules/standard/mod_cgi.c        2004-08-13 09:59:45 +0400
@@ -382,9 +382,20 @@
        return log_scripterror(r, conf, FORBIDDEN, APLOG_NOERRNO,
                               &quot;attempt to invoke directory as script&quot;);
     if (!ap_suexec_enabled) {
+#ifndef ACL_SUPPORT
        if (!ap_can_exec(&amp;r-&gt;finfo))
            return log_scripterror(r, conf, FORBIDDEN, APLOG_NOERRNO,
                                   &quot;file permissions deny server execution&quot;);
+#else
+       if(access(r-&gt;filename, X_OK)) {
+           if (errno == EACCES)
+               return log_scripterror(r, conf, FORBIDDEN, APLOG_NOERRNO,
+                                      &quot;file permissions deny server execution&quot;);
+           else
+               return log_scripterror(r, conf, SERVER_ERROR, APLOG_NOERRNO,
+                                      &quot;system error checking execute access&quot;);
+       }
+#endif
     }
                                                                               
                                             
     if ((retval = ap_setup_client_block(r, REQUEST_CHUNKED_ERROR)))

-----------------------------------------------------------

Т.о. если при сборке apache добавить в CPFLAGS пункт &quot;-DACL_SUPPORT&quot;, то получим
полноценную проверку возможности запуска, такую же как производит сама ОС.

Предлагаю добавить в спек apache возможность сборки с таким патчем (типа --with
acl_support или что-то в таком духе).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>18137</commentid>
    <comment_count>1</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2004-08-16 13:22:28 +0400</bug_when>
    <thetext>Приложу после выхода ALM2.4, сперва в Daedalus, возможно.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>21476</commentid>
    <comment_count>2</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2005-01-29 21:21:58 +0300</bug_when>
    <thetext>Так и сделано в 1.3.33rusPL30.20-alt3.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35957</commentid>
    <comment_count>3</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2006-02-17 18:17:18 +0300</bug_when>
    <thetext>Ещё раз тебе спасибо за всё.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>