Qual é a maneira padrão de não mostrar scripts CGI?

0

Eu configurei um diretório CGI usando o userdir mod no Apache. Estou usando as configurações o mais geral possível para que sejam aplicadas a outros usuários no meu laptop. Cheguei a um ponto em que posso executar o script usando este URL:

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

Mas também coloco um link para meu public_html no diretório-raiz do servidor em /var/www/html , portanto, quando a URL localhost é chamada, recebo o índice com um link para meu diretório em localhost/tomas . O link funciona bem e traz outro índice, um dos meus usuários. Agora, o cgi-bin privado está em /home/*/public_html/cgi-bin , portanto, posso ver o cgi-bin quando obtenho o índice privado. Agora, quando eu entro neste diretório, recebo outro índice com os CGI's. O que é bom para mim, embora eu não tenha certeza se isso é considerado seguro. Mas se eu chamar um CGI de lá, ele não será executado e será exibido. Esse é o problema.

Até onde eu sei, é sobre o Apache não visualizar

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

como

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

Estou procurando uma diretiva que funcione, mas não a encontre. Eu nem tenho certeza do que está à minha disposição - uma diretiva ou o que mais?

Aqui está o meu 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
    
por Tomasz 02.06.2017 / 00:23

1 resposta

1

Como o diretório cgi-bin pode ser alcançado por meio de um caminho separado, uma maneira de fazer isso é copiar a seção Directory com o caminho alternativo, logo abaixo do outro, por exemplo:

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

Isso também deve desativar as listagens de diretório.

Se você preferir ter os índices ativados, adicione Indexes a Options ou faça com que ele herde suas opções pai alterando ExecCGI para +ExecCGI , por exemplo

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

Eu prefiro usar Options Indexes ExecCGI over Options +ExecCGI , pois dessa forma você não herdará opções indesejadas.

    
por 02.06.2017 / 03:48