Como funciona?
A interface gráfica foi criada com a linguagem de programação PHP, utilizando o framework de front-end
Twitter Bootstrap.
A responsividade (capacidade do site de se adaptar a qualquer tamanho de tela) é herança do framework, a programação em PHP é orientada a objetos e de fácil entendimento. Existe duas funções em PHP que fazem a maioria do trabalho, uma delas é de segurança, implementada no arquivo
shell/classes/funcoes.php .
Ela bloqueia os comandos
cp,
mv e
rm, que por padrão seriam liberados, portanto, seria uma vulnerabilidade não ter a mesma.
Comandos como
chmod,
chown,
top,
ifconfig e outros que precisam de mais permissão, simplesmente não são executados.
A segunda, e mais importante, é a função
shell_exec, que executa uma ou um conjunto de strings dentro do Shell, retornando mensagens do Shell, quando o comando é executado.
Para saber mais sobre ela:
Sobre shell_exec
Ela é implementada dentro dos arquivos das páginas principais, ou seja,
index.php,
utilitarios.php e
parametros.php, da seguinte forma:
<?php
if (!$funcoes->seguranca($_GET['cmd']) )
$funcoes->erro();
else{
//Atribuição para concatenar o comando com parametro
//? esta conferindo se é verdadeiro e : se for falso
//? Se foi setado, concatena com cmd(parametro+cmd) : caso contrário mostra apenas cmd(cmd)
$_GET['cmd'] = (isset($_GET['parametro']))?$_GET['parametro'] . $_GET['cmd']:$_GET['cmd'] ;
//Mostra cmd
if ($_GET['cmd'] != ""){
echo "<pre class=\"linux\">";
echo gethostbyaddr($_SERVER['REMOTE_ADDR'])."$ ";
echo "<span class='text-error'>" . $_GET['cmd'] . "</span><br>";
$cmd = shell_exec($_GET['cmd']);
echo $cmd;
echo "</pre>";
}
}
?>
Ela é responsável por ler o comando informado, verificar se não é um comando bloqueado; caso seja liberado, então, é concatenado ou montado o comando dentro da sintaxe, e se não estiver vazio, é mostrado em tela.
Compreendeu a ideia? Então, os comandos que são executados têm permissão apenas de Leitura no
GNU/Linux e, por isso, a ferramenta é só de diagnóstico.
Para executar tarefas de manutenção, seria necessário refinar a segurança, permitindo que mais comandos fossem executados (para os interessados em contribuir com uma nova versão...).
Simples, não? Nem tanto, mas não vou me ater a detalhes muito técnicos como este. Conforme dito, meu objetivo é facilitar o primeiro contato com o GNU/Linux, mexer no código é para quem tiver interesse de contribuir com a ideia.
Parece que não, mas tudo se resume basicamente a isto, o resto é perfumaria, lógica e HTML. Se você não entendeu nada, não se preocupe, vai entender...
Didática
Lembra que eu prometi uma ferramenta didática? E ela é, de forma bem simples e modesta, mas é.
Se você é um usuário de GNU/Linux há anos, como eu, percebeu que este é um mundo pouco didático, e existem poucas almas que ajudam, boa parte delas encontradas aqui no VOL.
Então, a parte didática desta ferramenta, está na interface. Quando você executa um comando, que foi validado, o mesmo traz o resultado do Shell em verde e o comando executado em vermelho.
Se você deixar o mouse sobre o ícone de
? fixado na direita do site, será direcionado para as páginas de tutoriais, que explicam o funcionamento de cada módulo em mais detalhes.
Colocando em prática
Primeiramente, é necessário instalar o PHP 5 e Apache 2, então, execute este comando no terminal:
sudo apt-get install apache2 libapache2-mod-php5 php5
Após instalar os mesmos, será criado o diretório
/var/www. Dentro dele, você irá extrair a pasta com a ferramenta, ou arquivos do site, a pasta
shell.
A pasta
shell (730.8 kB, arquivo
.zip) pode ser baixada, aqui:
Ou, anexado neste projeto, aqui:
shell.zip
Então, o caminho vai ficar em
/var/www/shell e você pode acessar através do seu navegador (WEB Browser), inserindo na URL:
Só. Pronto, agora é só usar.
Observações:
1. Caso você esteja em uma rede fechada, por exemplo, no trabalho e supondo que seu IP Fixo é 192.168.1.99. Seu colega pode acessar seu micro alterando a URL de
localhost para seu endereço de IP, ficaria assim:
http://192.168.1.99/shell
2. Se ao acessar, aparecer alguma mensagem semelhante a:
Forbidden. You don't have permission to access /shell/ on this server. Apache/2.2.22 (Ubuntu) Server at localhost Port 80
... você deve dar permissão à pasta, com o comando:
sudo chmod 755 /var/www/shell -R
Espero que façam bom proveito.
Obrigado.