Какой стандартный способ не показывать сценарии CGI?

Я создал каталог CGI, используя мод userdir в Apache. Я использую как можно более общие конфигурации, чтобы их можно было использовать для других пользователей моего ноутбука. Я дошел до того момента, когда я могу запустить сценарий, используя этот URL:

http://localhost/~tomas/cgi-bin/hw.cgi

Но я также поместил ссылку на мой public_html в корневом каталоге сервера по адресу / var / www / html ], поэтому при вызове URL-адреса localhost я получаю индекс со ссылкой на мой каталог по адресу localhost / tomas . Ссылка работает нормально и вызывает еще один индекс, одного из моих пользователей.Теперь личный cgi-bin находится по адресу / home / * / public_html / cgi-bin , поэтому я могу видеть cgi-bin , когда получаю частный индекс. Теперь, когда я вхожу в этот каталог, я получаю еще один индекс с CGI. Меня это устраивает, хотя я не уверен, что это считается безопасным. Но если я вызываю CGI оттуда, он не выполняется, а вместо этого отображается. Это проблема.

Насколько мне известно, дело в том, что Apache не рассматривает

http://localhost/tomas/cgi-bin/hw.cgi

как

http://localhost/~tomas/cgi-bin/hw.cgi

. Я искал директиву, которая заставила бы ее работать, но не могу ее найти. Я даже не совсем уверен, что в моем распоряжении - директива или что-то еще?

Вот мой usermod.conf :

<IfModule mod_userdir.c>
    UserDir public_html
    UserDir disabled root

    <Directory /home/*/public_html>
        AllowOverride FileInfo AuthConfig Limit Indexes
        Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
        <Limit GET POST OPTIONS>
            Require all granted
        </Limit>
        <LimitExcept GET POST OPTIONS>
            Require all denied
        </LimitExcept>
    </Directory>

    <Directory /home/*/public_html/cgi-bin>
        Options ExecCGI
        AddHandler cgi-script .cgi
    </Directory>
</IfModule>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
0
21.08.2018, 15:40
1 ответ

Поскольку к каталогу cgi-binможно получить доступ по отдельному пути, один из способов сделать это — скопировать раздел Directoryс альтернативным путь, прямо под другим, например:

<Directory /var/www/html/*/cgi-bin>
    Options ExecCGI
    AddHandler cgi-script .cgi
</Directory>

Это также должно отключить списки каталогов.

Если вы предпочитаете, чтобы индексы были включены, либо добавьте Indexesв Options, либо настройте родительские параметры, изменив ExecCGIна +ExecCGI, например

<Directory /var/www/html/*/cgi-bin>
    Options Indexes ExecCGI
    AddHandler cgi-script .cgi
</Directory>

Я бы предпочел использовать Options Indexes ExecCGI, а не Options +ExecCGI, поскольку таким образом вы не будете наследовать нежелательные параметры.

1
28.01.2020, 02:45

Теги

Похожие вопросы