
Configurei um diretório CGI usando o userdir
mod no Apache. Estou usando configurações o mais gerais possível para que possam ser aplicadas a outros usuários em 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 coloquei um link para my public_html
no diretório raiz do servidor em /var/www/html
, então quando a localhost
URL for chamada, recebo o índice com um link para meu diretório em localhost/tomas
. O link funciona bem e traz outro índice, um do meu usuário. Agora, o cgi-bin privado está em /home/*/public_html/cgi-bin
, então posso ver cgi-bin
quando obtiver o índice privado. Agora, quando entro neste diretório, recebo outro índice com os CGI's. O que é bom para mim, embora não tenha certeza se isso é considerado seguro. Mas se eu chamar um CGI de lá, ele não será executado e será exibido. Este é o problema.
Pelo que eu sei, trata-se do Apache não visualizar
http://localhost/tomas/cgi-bin/hw.cgi
como
http://localhost/~tomas/cgi-bin/hw.cgi
Estou procurando uma diretriz que faça com que funcione, mas não consigo encontrá-la. Nem sequer tenho a certeza do que está à minha disposição – uma directiva 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
Responder1
Como o cgi-bin
diretório pode ser acessado por um caminho separado, uma forma de fazer isso é copiar a Directory
seção 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órios.
Se você preferir ter os índices habilitados, adicione Indexes
ou Options
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
, Options +ExecCGI
pois assim você não herdará nenhuma opção indesejada.