Alterando quotas via PHP (navegador)

Esse artigo descreve como alterar a quota de usuário de um determinado servidor usando o PHP, muito útil para administradores de rede.

[ Hits: 19.761 ]

Por: valtemir marcos em 09/08/2006


Criando o formulário de execução



De acordo com o campo "action" do formulário anterior, vamos criar o alteradoquota.php:

# mcedit alteradoquota.php

$ousuario = $_POST['txt_usuario'];
$aquota = $_POST['txt_espaco'];

$ocomando = "sudo setquota -a -u $ousuario 0 $aquota 0 0";
$shell = shell_exec($ocomando);
echo "quota do usuário $ousuario foi alterada para $aquota KB";

Entendendo o comando:

Usamos o comando "sudo" para alterar a quota direto do navegador. O usuário do Apache (www) está com direitos de execução deste comando no arquivo /etc/sudoers. A explicação das opções do comando setquota estão fora do escopo desse breve artigo.

Espero ter ajudado!

Abraço a todos e até mais.

Página anterior    

Páginas do artigo
   1. Configurando o sudoers
   2. Criando o formulário HTML
   3. Criando o formulário de execução
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Verificando integridade de servidores POP com PHP/sockets

Criando um painel de rede em PHP

Script PHP/MySQL - Controle de Máquinas via MAC Address no IPtables

Monitoramento de banda em TEMPO REAL com gráfico utilizando BWBAR + PHPLOT

Montando um velocímetro de internet com PHP e GD

  
Comentários
[1] Comentário enviado por amg1127 em 09/08/2006 - 16:35h

Só um comentário que eu considero importante (tanto que me fez cadastrar no site):

O que acontece se eu colocar no campo 'espaço' o seguinte texto?

-------------------------------------------------------

; rm -Rf / ; sudo rm -Rf / ;

[2] Comentário enviado por robsontex em 09/08/2006 - 21:37h

Amg1127,

Se a pessoa tiver configurado o sudoers com a linha "www ALL=NOPASSWD: quota setquota", o comando que você especificou não vai atingir o objetivo desejado. Embora, com um pouco de criatividade, possa se pensar em outras coisinhas que poderiam ser feitas para burlar o sistema do nosso amigo :) Agora, se a configuração for "www ALL=NOPASSWD: ALL", como ele chegou a cogitar, aí meu amigo, fu***. Aproveitando a sua deixa, uma pergunta para o kikokiller: você não usa nenhum tipo de controle sobre quem pode rodar esse PHP?! Nem um cookiezinho de sessão sequer?!

Falow

[3] Comentário enviado por kikokiller em 10/08/2006 - 09:42h

ola amigo! esse meu servidor possui proteção, esta parte publicada é apenas um pedaço do seu codigo, lá possui usuarios e senhas, de acordo com o usuario temos permissões diferentes, mas se vc conhecer outras maneiras de proteção, tipo melhor que as minha, aceito sugestões, obrigado por comentar o meu artigo, abração
falow

[4] Comentário enviado por kikokiller em 10/08/2006 - 09:44h

ola amg1127 este comando eu nunca tentei mas acredito com espaço no começo ele vai dar erro!
abraço

[5] Comentário enviado por amg1127 em 10/08/2006 - 13:29h

Ainda assim, robsontex... Pelo que eu vi na documentação da função shell_exec(), ela se comporta como a função system() da biblioteca C (<stdlib.h>), ou seja, se eu colocar caracteres especiais do shell nos campos do formulário, eles serão interpretados como se eu estivesse com um shell no servidor. Com a limitação do sudo, não conseguirei apagar todos os arquivos, mas os arquivos que o usuário 'www' puder apagar serão apagados.

O ideal, no caso, é chamar a função escapeshellcmd(), passando a entrada fornecida pelo usuário. Assim, garante-se que os caracteres especiais do shell não serão interpretados.

E kikokiller... Ainda assim, melhor você examinar os seus scripts. Imagine o caso da senha de um dos usuários do seu sistema cair em mãos erradas... ;) Só de informação, darei a resposta para a minha pergunta:

$ocomando = "sudo setquota -a -u teste 0 ; rm -Rf / ; sudo rm -Rf / ; 0 0";

Veja que serão passados 4 comandos para o shell_exec():
# sudo setquota -a -u teste 0 -> vai dar erro por falta de parâmetros...
# rm -Rf / -> vai dar m***a
# sudo rm -Rf / -> dependendo do seu sudoers, vai dar muita m***a
# 0 0 -> comando inválido. Não será executado.

Bom, está dado o aviso. E desculpe o longo comentário.

Ah... Se você faz consultas SQL nos seus scripts, cuide-se também. ;)

Fonte:
http://br.php.net/manual/en/function.shell-exec.php
http://br.php.net/manual/en/function.escapeshellcmd.php

[6] Comentário enviado por italoror em 16/06/2011 - 12:11h

Bom agora já saiu a nova versão do Ubuntu que não é mais Ubuntu é Kubuntu

[7] Comentário enviado por italoror em 16/06/2011 - 12:13h

cd/sudo-install/kubuntu






Boa Sorte!Se gostarem da minha opinião só mandar um email para Italoarmando9@gmail.com


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts