#  > Desenvolvimento >  > Linguagens de Programação >  >  PHP na linha de Comando

## maverick_cba

Olá amigos do Under, gostaria que me sanassem algumas dúvidas.

Seguinte, estou no final do meu Curso Técnico em Desenvolvimento de Sistemas e Redes de Computadores e como de praxe preciso apresentar meu projeto de conclusão de curso.

Pois bem, minha idéia é montar uma interface web para gerenciamento de provedores wireless.

Irei utilizar o PHP na linha de comando integrado ao mysql.

Daí minhas dúvidas são as seguintes:

[list]1- Se eu colocar esses script na raiz do servidor web, consiguirei eu digitando o caminho relativo ao meu script executa-lo como se estivesse rodando ele no shell?
2- Tem como atráves de um script em php eu executar um outro script em bash por exemplo?
3- Como faço para rodar um comando com direito de root? Pois precisarei rodar o iptables e outros comandos que requerem direitos de root e como os scripts rodaram no apache daí não terei permissão.[/list:u]

Agradeço a ajuda que puderem me dar.

----------


## mvzeppelin

Alou maverick_cba,

1- Consegue sim. Porem seus scripts devem possuir o caminho para o php , mais ou menos assim:

#!/usr/local/bin/php -q
<?php
...

e vc chama pelo caminho dele /home/user/script.php
Este é o jeito mais facil, Neste endereço vc encontra outros:
http://www.master.iag.usp.br/manuais...mmandline.html


2- Sim tem, utilizando algumas funções "Perigosas" da para fazer.
funções como exec , shell_exec , system entre outras . Dá uma pesquisada por elas no goolge.

3- Aí vai ser problema, pois dependendo das funções/comandos desejarão que vc esteja como root na máquina.

Ve se te ajuda para começar.
Falou abraços.

----------


## Shadow_Night

errr.. cara, acho estranho vc com uma aplicação web ter direitos root, acho que isto não vai dar não, motivo seria obvio, virus, ai qualquer um poderia escrever um escripitzinho que desconfigura o bashrc com uma aplicação web por expl, creio, que seja dificil conseguir permissção root em um sistema, posso estar falando besteira se estiver que o moderador delete meu topico por favor.

----------


## dougfunny

ola, caro amigo, vc pode executar comandos de root sim como qq usuario, vc deve utilizar o "sudo" para isso.

----------


## cleoson

> ola, caro amigo, vc pode executar comandos de root sim como qq usuario, vc deve utilizar o "sudo" para isso.


Desde que você configure o "sudo" para executar esses comandos, e para configurar o "sudo" você vai precisar da senha de root. Portanto, acho que procede a colocação do nosso colega Shadow_Night.

[]'s
Cléoson.

----------


## maverick_cba

Obrigado amigos pelas dicas. Quanto a colocação do amigo Shadow_Night, tb acho que rodar algo como root vai ser problema e problema é algo que eu não quero, pois alem de funcional essa aplicação deve ser segura ou pelo menos possuir um nível de segurança aceitável.

Outra coisa, somente precisarei executar o iptables e um script que faz a limitação da banda do usuário (o Bandlimit do Underlinux).

Daí a pergunta, como eu posso fazer para rodar algum script do iptables sendo que meu apache roda com o usuário do apache mesmo.

Já me recomendaram colocar o apache como root e colocar uma senha nele, de forma que quando abrirem o browser ele solicite a senha para acesso. Porem não sei se isso é realmente seguro.
Quanto ao sudo ainda não estou muito familiarizado com ele. Poderiam me dar uma ajuda?

----------


## mvzeppelin

Com relação ao sudo creio que não vai ajudar muito. Na verdade sudo é uma forma do root dar "poderes" aos usuários "normais".

Digamos que vc queira que seu usuário zezinho seja capaz de criar outros usuários. Somente isso. Com o sudo é moleza. vc define isso num arquivo de configuraçao( geralmente /etc/sudoers.conf veja se vc já tem ele).

O problema seria implementar isso no apache. Alem da segurança já citada.

A não ser que vc de determinados poderes ao usuário nobody ou apache. Não sei se funciona, teria que testar. Se for o caso da uma pesquisada por sudo na net, 
Mas para uma máquina de produção é meio arriscado.

Espero que te ajude em algo,

Abraços.

----------


## maverick_cba

Então amigos, uma solução que me caberia corretamente serial algo como o webmim, uma ferramenta web para gerenciamento de servidores.

Porem no meu caso eu irei desenvolver a minha própria ferramenta em php.
Troquei umas idéias aqui e acho que vou adotar o apache autenticado como solução. Porem se alguem tiver uma solução melhor essa será bem vinda.

Obrigado.

----------


## Bruno

galera eu fiz um pra min tudo em php naum usei nada de script em shel

www.foxbyte.com.br/gerenciador
user demo
senha demo

este esta bagunçado pois é um demo 



flw

----------


## maverick_cba

Você quem desenvolveu isso aí cara? Isso tá funcional? Pois se não der os comandos no shell num rola, pois como você vai limitar a banda do usuário sem executar algum comando no servidor?

É exatamente isso que eu tô precisando... Só que de tanto eu apanhar já tô pensando até em desenvolver um módulo personalizado para o webmin.

Já tentei um tal de suphp (um módulo do apache que executa o script php com as permissões do dono do arquivo) porem não deu certo e já desisti.

Não sei mais o que fazer, acho que vou ter que aprender PEARL e fazer no webmin.

----------


## Bruno

o veio vc entro no demo 

ele ja ta pronto

----------


## maverick_cba

Entrei sim... porem o que quero saber é se ele já está funcionando, tipo se você especificar um limite de banda nele ele vai funcionar?

A interface é tranquila... agora para colocar os comandos iptables no firewall que é o problema...

----------


## Bruno

o veio eu tenho este sistema em mais de 30 provedores

estão funcioando normal 

a velocidade é controlado pelo cbq a unica coisa que faço é cria o banco de dados e depois gerar os arquivos
e assim por diante

pegao meu msn ai que eu te dou uma força

----------


## Bruno

ops desculpa naum respondi sua pergunta direito

sim ele executa comandos do linux sim 
como iptables cbq dhcpd 

tudo que vc faz em shel ele faz em php

----------


## maverick_cba

Cara então me conta ai como você tá fazendo isso?

Pois a unica explicação seria o apache (servidor web) rodando como root.

E é algo que eu não queria fazer...

Mas se não tiver outra alternativa... daí eu vou ter que apelar para isso.

----------


## Bruno

naum o apache como root naum

ele roda com usuario que eu criei
vc tem que configurar o sudo

----------


## maverick_cba

Cara poderia me explicar melhor como fazer isso, pois tentei com o sudo e na hora o apache fica pedindo senha, tem como fazer com que ele não peça senha?

Tipo se eu fizer assim:
sudo -u root iptables -A bla bla bla

Ele vai me pedir a senha de root, daí não dá certo, pois como eu vou inserir a senha rodando o apache?

----------


## Bruno

faz assim o
webmaster NOPASSWD: ALL /usr/sbin/iptables

----------


## maverick_cba

Fera tá dando erro... erro de sintaxe.

----------


## maverick_cba

Amigão consegui... troquei por

webmaster ALL=NOPASSWD: /sbin/iptables

Funcionou na boa...

Cara velew mesmo pela ajuda, acho que agora vou poder fazer meu projeto mais tranquilo...

Fico muito grato! :clap:

----------

como eu faço para que um script php possa acessar o iptables enviando regras??? já tentei e nao to conseguindo

----------


## Bruno

veio faz assim o 
webmaster ALL=NOPASSWD: /sbin/iptables

----------


## Bruno

o desculpa ai maverick_cba 
escrevi errado NOPASSWD: ALL

----------

[email protected]

----------

meu sudo ta assim:

teste ALL=NOPASSWD: ALL /sbin/iptables

e meu php ta assim e nao aparecee nada! pq???

----------


## Bruno

sim teste éste será o cara que roda o apache

----------

nao consigo por o codigo php aqui! vc tem msn??? pode me adicionar?? [email protected]

----------


## Bruno

o veio no seu caso o user é o apache 


então


apache ALL=NOPASSWD: ALL /sbin/iptables

----------


## Jim

Bem, se vc configurar o sudo pra liberar o iptables pro usuario do apache estará pecando na segurança da mesma forma... nao resolve...

Criei algumas ferramentas no mesmo sentido que o Benatto, mas com alguns diferenciais, por exemplo: Ele está interagindo diretamente com os arquivos de configuração, eu com o banco de dados.

Entao pense da sequinte forma, se para cadastrar um dominio por exemplo, vc apenas acessasse via browser, e digitasse lá: dominio.com.br, qdo vc clicasse em "cadastrar" ele gravasse este dominio no banco de dados e chamasse através do sudo um script que iria ler o banco de dados e reescrever totalmente os arquivos. Ficaria simples e seguro, afinal o usuario do apache apenas poderia executar os comandos que estão nesse script, sem que o usuario do apache tenha direito de executar por exemplo: iptables -P INPUT -j ACCEPT  :Embarrassment: ops: 

Nao sei se fui claro...

----------

veja se eu entendi! Em vez de por no php uma linha de comando iptables bla bla direto, eu cadastraria a pessoa, e apos o cadastro, o sistema atualizaria as regras verificando o bando de dados e liberando quem estivesse nele! seria isso?

----------

hhehheheh! caiu a ficha! eheheh! ma não sei como eu fazria para o banco de dados pega o cadastro e usar o sudo, sem precisa utilizar o php! no caso o bando de dados que faria tudo né? ele que usaria o sudo e nao o php! como é que faz isso?

----------


## Jim

ShellScript!

----------

isso nao vai funcionar! e a segurança? cade?

----------


## Jim

> isso nao vai funcionar! e a segurança? cade?


??

----------


## maverick_cba

Mas JIM, como eu faria para retornar dados atraves de uma consulta ao mysql usando shellscript? Minha idéia inical era essa pois aposto na segurança, só que não consegui fazer isso, poderia me ajudar?

----------

