Terminal Didático - Shell Script via WEB (PHP + Bootstrap)
O Terminal Didático executa comandos dentro do Shell via WEB Browser, é uma alternativa de acesso remoto para diagnósticos de problemas. Feita com o framework front-end Twitter Bootstrap + PHP + Apache, com visual robusto e desenvolvida para usuários iniciantes em comandos Linux.
Parte 2: How it works
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:
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...
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.
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.
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>";
}
}
?>
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:
- http://localhost/shell
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.