Bug 4987 - неполная проверка в mod_cgi возможности запуска cgi-приложений
: неполная проверка в mod_cgi возможности запуска cgi-приложений
Status: CLOSED FIXED
: Sisyphus
(All bugs in Sisyphus/apache)
: unstable
: all Linux
: P3 enhancement
Assigned To:
:
:
:
:
:
  Show dependency tree
 
Reported: 2004-08-13 11:55 by
Modified: 2006-02-17 18:17 (History)


Attachments


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2004-08-13 11:55:08
mod_cgi делает неполную проверку возможности запуска cgi-приложения. Проверка
успешна только если:
1. файл принадлежит пользователю или группе apache и выставлен соотвествующий
бит запуска.
2. файл имеет бит - запуск для всех.

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

Это предположительно связано с повышением уровня безопасности, но для тех кто
знает, что ему нужно, было бы полезно, чтобы 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,
                               "attempt to invoke directory as script");
     if (!ap_suexec_enabled) {
+#ifndef ACL_SUPPORT
        if (!ap_can_exec(&r->finfo))
            return log_scripterror(r, conf, FORBIDDEN, APLOG_NOERRNO,
                                   "file permissions deny server execution");
+#else
+       if(access(r->filename, X_OK)) {
+           if (errno == EACCES)
+               return log_scripterror(r, conf, FORBIDDEN, APLOG_NOERRNO,
+                                      "file permissions deny server
execution");
+           else
+               return log_scripterror(r, conf, SERVER_ERROR, APLOG_NOERRNO,
+                                      "system error checking execute access");
+       }
+#endif
     }


     if ((retval = ap_setup_client_block(r, REQUEST_CHUNKED_ERROR)))

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

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

Предлагаю добавить в спек apache возможность сборки с таким патчем (типа --with
acl_support или что-то в таком духе).
------- Comment #1 From 2004-08-16 13:22:28 -------
Приложу после выхода ALM2.4, сперва в Daedalus, возможно.
------- Comment #2 From 2005-01-29 21:21:58 -------
Так и сделано в 1.3.33rusPL30.20-alt3.
------- Comment #3 From 2006-02-17 18:17:18 -------
Ещё раз тебе спасибо за всё.