Bug 4987 - неполная проверка в mod_cgi возможности запуска cgi-приложений
Summary: неполная проверка в mod_cgi возможности запуска cgi-приложений
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: apache (show other bugs)
Version: unstable
Hardware: all Linux
: P3 enhancement
Assignee: Michael Shigorin
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2004-08-13 11:55 MSD by Vladimir Lettiev
Modified: 2006-02-17 18:17 MSK (History)
14 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Vladimir Lettiev 2004-08-13 11:55:08 MSD
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 Michael Shigorin 2004-08-16 13:22:28 MSD
Приложу после выхода ALM2.4, сперва в Daedalus, возможно.
Comment 2 Michael Shigorin 2005-01-29 21:21:58 MSK
Так и сделано в 1.3.33rusPL30.20-alt3.
Comment 3 Michael Shigorin 2006-02-17 18:17:18 MSK
Ещё раз тебе спасибо за всё.