Bug 20223

Summary: Конфигурационный файл для Directory_cgibin - не рабочий
Product: Sisyphus Reporter: Anton Farygin <rider>
Component: apache2-baseAssignee: Anton Farygin <rider>
Status: CLOSED WORKSFORME QA Contact: qa-sisyphus
Severity: major    
Priority: P3 CC: rider
Version: unstable   
Hardware: all   
OS: Linux   

Description Anton Farygin 2009-05-29 11:12:09 MSD
Может быть, что-то надо включить. Но из сообщений это совсем непонятно.

# a2enextra Directory_cgibin_default
Extra config Directory_cgibin_default installed;
        run service httpd2 condreload to fully enable.

# service httpd2 restart
Stopping httpd2 service:                                                                                                                    [ DONE ]
Checking configuration sanity for httpd2:  Syntax error on line 13 of /etc/httpd2/conf/extra-enabled/Directory_cgibin_default.conf:
order not allowed here
                                                                                                                                            [FAILED]
Comment 1 solo 2009-05-29 11:37:41 MSD
  У меня сейчас в extra-available каша, по факту: там присутствует то, что можно включать через a2enextra, и то что предназначено _только_ для прямого инклюдирования в конфиги...

  Надо include/ вводить.
Comment 2 Anton Farygin 2009-05-29 11:46:57 MSD
Так и есть. Если посмотреть на конфиги, то conf/extra-enabled/Directory_cgibin_default.conf напрямую инклюдируется. 

Но от этого легче не становится - директивы Allow from и Order by не работают, если conf/extra-enabled/Directory_cgibin_default.conf инклюдится и работают, если их прописать напрямую в том месте, где вызывается Include
Comment 3 solo 2009-05-29 12:12:57 MSD
(В ответ на комментарий №2)
> Так и есть. Если посмотреть на конфиги, то
> conf/extra-enabled/Directory_cgibin_default.conf напрямую инклюдируется. 
> 
> Но от этого легче не становится - директивы Allow from и Order by не работают,
> если conf/extra-enabled/Directory_cgibin_default.conf инклюдится и работают,
> если их прописать напрямую в том месте, где вызывается Include

1. Подключен ли модуль authz_host?

2. Вместо Include прописывались только Allow from и Order by, или Options тоже?
Comment 4 solo 2009-05-29 12:24:09 MSD
/etc/httpd2/conf/extra-available/Directory_cgibin_default.conf умолчальный, или изменён?
Comment 5 Anton Farygin 2009-05-29 12:25:46 MSD
authz_host естественно подключен.

Из Include в Directory достаточно перенести только Allow from и Order by

Если include убрать, то естественно Options тоже надо прописывать.

Вообще, это легко воспроизводится на свежеустановленном апаче.

Всё по умолчанию. Ставим apache,подключаем нужные модули, говорим a2enextra Directory_cgibin_default
Comment 6 solo 2009-05-29 12:39:04 MSD
(В ответ на комментарий №5)
> authz_host естественно подключен.
> 
> Из Include в Directory достаточно перенести только Allow from и Order by
> 
> Если include убрать, то естественно Options тоже надо прописывать.
> 
> Вообще, это легко воспроизводится на свежеустановленном апаче.
> 
> Всё по умолчанию. Ставим apache,подключаем нужные модули, говорим a2enextra
                                                                    ^^^^^^^^^
> Directory_cgibin_default
  ^^^^^^^^^^^^^^^^^^^^^^^^

  Этого говорить вообще не нужно (т. к. работать _небудет_).

  По умолчанию сделано так, что CGI разрешены только в /var/www/cgi-bin/. Если их нужно разрешить в другом месет -- нужно в соответствующие место добавить (см. /etc/httpd2/conf/sites-available/default.conf в качестве примера):

Include conf/extra-available/Directory_cgibin_default.conf

PS: Данное поведение характерно для всех Directory_*_default.conf. Почему и планирую их в include/ вунести.
Comment 7 Anton Farygin 2009-05-29 12:41:03 MSD
по умолчанию cgi в /var/www/cgi-bin не запускаются.

Как сделать так, что бы они там запускались ?

a2enmod cgi - недостаточно
Comment 8 solo 2009-05-29 12:55:16 MSD
(В ответ на комментарий №7)
> по умолчанию cgi в /var/www/cgi-bin не запускаются.
> 
> Как сделать так, что бы они там запускались ?
> 
> a2enmod cgi - недостаточно

  А они точно исполняемые?

  У нас умолчальные скрипты (к обоим apache) без признака исполняемости идут. И переключение их в исполняемый вид через control сделано:

$ /usr/sbin/control|fgrep cgi-bin_
cgi-bin_printenv symlink_root_noexec (none file_root_noexec file_root_exec file_webmaster_noexec file_webmaster_exec symlink_root_noexec symlink_root_exec symlink_webmaster_noexec symlink_webmaster_exec)
cgi-bin_test-cgi file_root_noexec (none file_root_noexec file_root_exec file_webmaster_noexec file_webmaster_exec symlink_root_noexec symlink_root_exec symlink_webmaster_noexec symlink_webmaster_exec)

  Исполняемые состояния -- те что *_exec.
Comment 9 Anton Farygin 2009-05-29 13:01:57 MSD
Конечно исполняемые. Пробовал в разных вариациях.

Алексейб не мог бы ты попробовать у себя поставить apache с нуля и выполнить /cgi-bin/printenv ?
Comment 10 solo 2009-05-29 13:09:41 MSD
(В ответ на комментарий №9)
> Конечно исполняемые. Пробовал в разных вариациях.
> 
> Алексейб не мог бы ты попробовать у себя поставить apache с нуля и выполнить
> /cgi-bin/printenv ?

  Уже сделал.

  Буду разбираться.
Comment 11 solo 2009-05-29 13:33:33 MSD
(В ответ на комментарий №10)
> (В ответ на комментарий №9)
> > Конечно исполняемые. Пробовал в разных вариациях.
> > 
> > Алексейб не мог бы ты попробовать у себя поставить apache с нуля и выполнить
> > /cgi-bin/printenv ?
> 
>   Уже сделал.
> 
>   Буду разбираться.

  Вру: про a2enmod cgi забыл.

  На данный момент, при установке на чистую систему, после:

$ sudo -H apt-get install apache2 apache2-cgi-bin
Reading Package Lists... Done
Building Dependency Tree... Done
The following extra packages will be installed:
  apache2-base apache2-cgi-bin-printenv apache2-cgi-bin-test-cgi apache2-common apache2-datadirs apache2-html apache2-httpd-worker
  apache2-icons perl-Digest-SHA1
The following NEW packages will be installed:
  apache2 apache2-base apache2-cgi-bin apache2-cgi-bin-printenv apache2-cgi-bin-test-cgi apache2-common apache2-datadirs apache2-html
  apache2-httpd-worker apache2-icons perl-Digest-SHA1
0 upgraded, 11 newly installed, 0 removed and 413 not upgraded.
Need to get 1069kB of archives.
After unpacking 2743kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 rsync://rsync x86_64/classic perl-Digest-SHA1 2.12-alt1 [19.9kB]
Get:2 rsync://rsync x86_64/classic apache2-common 2.2.9-alt17 [360kB]
Get:3 rsync://rsync x86_64/classic apache2-httpd-worker 2.2.9-alt17 [163kB]
Get:4 rsync://rsync x86_64/classic apache2-base 2.2.9-alt17 [199kB]
Get:5 rsync://rsync noarch/classic apache2-datadirs 2.2.9-alt17 [32.8kB]
Get:6 rsync://rsync noarch/classic apache2-cgi-bin-test-cgi 2.2.9-alt17 [35.7kB]
Get:7 rsync://rsync noarch/classic apache2-cgi-bin-printenv 2.2.9-alt17 [35.6kB]
Get:8 rsync://rsync noarch/classic apache2-cgi-bin 2.2.9-alt17 [32.5kB]
Get:9 rsync://rsync noarch/classic apache2-html 2.2.9-alt17 [41.1kB]
Get:10 rsync://rsync noarch/classic apache2-icons 2.2.9-alt17 [114kB]
Get:11 rsync://rsync x86_64/classic apache2 2.2.9-alt17 [34.8kB]
Fetched 1069kB in 4s (218kB/s)
Committing changes...
Preparing...
...
Running /usr/lib/rpm/posttrans-filetriggers
Done.

$ sudo -H /usr/sbin/control cgi-bin_test-cgi symlink_root_noexec

$ sudo -H a2enmod cgi
[sudo] password for solo:
Module cgi installed;
        run service httpd2 condreload to fully enable.

sudo -H service httpd2 start

  У меня скрипт http://test/cgi-bin/test-cgi отработал штатно:

CGI/1.0 test script report:

argc is 0. argv is .

SERVER_SOFTWARE = Apache/2.2.9 (Unix)
SERVER_NAME = test
GATEWAY_INTERFACE = CGI/1.1
SERVER_PROTOCOL = HTTP/1.1
SERVER_PORT = 80
REQUEST_METHOD = GET
HTTP_ACCEPT = text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
PATH_INFO = 
PATH_TRANSLATED = 
SCRIPT_NAME = /cgi-bin/test-cgi
QUERY_STRING = 
REMOTE_HOST =
REMOTE_ADDR = 192.168.1.101
REMOTE_USER =
AUTH_TYPE =
CONTENT_TYPE =
CONTENT_LENGTH =

PS: Где-то здесь есть тонкое место: нарекание на нероботающие CGI встречаю не первый раз. Но у себя -- немогу повторить. Есть ли возможность выдать мне тестувую виртуалку с данной проблемой?
Comment 12 Anton Farygin 2009-05-29 14:03:14 MSD
Не могу выдать виртуалку - это на машинке у меня дома.
Comment 13 solo 2009-05-29 17:07:51 MSD
(В ответ на комментарий №12)
> Не могу выдать виртуалку - это на машинке у меня дома.

  Есть ли возможность выслать затаренный /etc/httpd2/conf мне в личку?
Comment 14 Anton Farygin 2017-10-16 14:39:36 MSK
всё работает.