Habilitando o Apache a utilizar Shell como CGI no Debian Squeeze
O apache já vem com suporte a CGI por padrão com isso vamos habilitar ele a utilizar shell script como CGI
Prepare o seu sistema com o seguinte script http://wiki.douglasqsantos.com.br/doku.php/confinicialsqueeze_en para que não falte nenhum pacote ou configuração.
Vamos instalar o apache
aptitude install apache2 -y
Vamos criar um diretório para armazenar as nossas páginas em shell
mkdir -p /var/www/shell
Agora vamos criar um virtualhost para armazenar as nossas páginas
vim /etc/apache2/sites-available/shell <VirtualHost *:80> ServerName shell.douglasqsantos.com.br ServerAlias shell.douglasqsantos.com.br DocumentRoot "/var/www/shell" #Controle de acesso ao shell <Directory "/var/www/shell"> DirectoryIndex index.sh Options +ExecCGI -Indexes -MultiViews +SymLinksIfOwnerMatch AddHandler cgi-script .sh AllowOverride All #Autenticação do shell AuthUserFile /etc/apache2/access/shell-htpasswd AuthName "Shell" AuthType Basic require valid-user </Directory> #Configuração dos logs do apache ErrorLog /var/log/apache2/shell.douglasqsantos.com.br-error.log CustomLog /var/log/apache2/shell.douglasqsantos.com.br-access.log common #Retirando a assinatura do Apache ServerSignature Off IndexIgnore .??* *~ *# README RCS CVS *,v *,t * # Possible values include: debug, info, notice, info, error, crit, # alert, emerg. LogLevel info </VirtualHost>
Agora vamos criar a nossa página index.sh
vim /var/www/shell/index.sh #!/bin/bash #index.sh echo Content-type: text/html echo echo "<h1>Hello World</h1>"
Como os sh vão trabalhar como cgi eles tem que ter permissão de execução senão vamos ter um erro do servidor apache
Vamos dar permissão para o index.sh
chmod +x /var/www/shell/index.sh
Agora vamos desabilitar os virtualhosts default do apache
a2dissite default a2dissite default-ssl
Agora vamos criar o diretório que vai armazenar a autenticação do nosso site
mkdir /etc/apache2/access/
Agora vamos criar o arquivo que vai armazenar os usuários, eu vou cadastrar o usuário shell
htpasswd -c -s /etc/apache2/access/shell-htpasswd shell New password: Re-type new password: Adding password for user shell
Agora vamos ativar o nosso virtualhost
a2ensite shell
Agora vamos reiniciar o apache
/etc/init.d/apache2 restart
Agora já podemos acessar http://shell.douglasqsantos.com.br ou http://ip_servidor, aqui vai ser solicitado usuário que vai ser shell e a senha que foi definida para ele.
OBS: Não esqueça que os script vão ser executados pelo usuário apache e ele não tem permissão total ao sistema com isso vamos estar executando scripts como usuário comum.