shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Startar processo do shell em uma página PHP.


From: Marcus Vinicius
Subject: Re: [shell-script] Startar processo do shell em uma página PHP.
Date: Fri, 27 Oct 2006 12:59:18 -0300

Anali,


no PHP, para executar o shell script vc utiliza o seguinte comando :
system("/etc/init.d/networking restart");

Como você comentou, ele só executa "comandos" nativos do linux... na verdade, 
como o Tiago citou abaixo, é apenas uma questão de autoridade... a página PHP 
executa comandos autorizados ao usuário controlador do apache... 

Com a instalação do phpX-cli (onde X é a versão do PHP instalado no seu 
server...), as páginas php podem ser executadas via prompt então um 

system("/var/www/html/apagauser.php) 

pode ser executado sem problema... assim, dentro dessa página php vc executa os 
comandos citados em seu script...  ou seja, ao invés de ter um script a ser 
executado, vc transforma as ações tomadas por ele em comandos dentro do PHP... 

acho q isso resolve sua questão... não sou expert em PHP nem em Shell mas tive 
o mesmo problema recentemente... só fique atenta quanto à permissão de execução 
do seu script... pois em alguns casos, sem a utilização do sudo, vc precisa 
setar como dono do script, o usuario responsável pela execução do apache.

Galera, me corrijam se cometi alguma gafe...

sds


Marcus Vinicius S. Oliveira
Centro Educacional Casa do Estudante
address@hidden
Itabatã / Mucuri (BA)
Linux User #369299
MSN address@hidden
  ----- Original Message ----- 
  From: Tiago Barcellos Peczenyj 
  To: address@hidden 
  Sent: Wednesday, October 25, 2006 2:18 PM
  Subject: Re: [shell-script] Startar processo do shell em uma página PHP.


  ola.

  a sua dúvida parece ser exclusivamente php, porém atente a um detalhe:
  o que vc chama de "comando" ?

  até onde eu saiba,  'service httpd start' não é um comando unix, sob
  ponto de vista um comando interno do shell. um exemplo do que seria um
  comando interno seria a instrução 'cd' -- mudança de diretorio.

  o proprio service (/sbin/service) é um shell script! o comando system
  do php, assim como em muitas linguagens interpretadas (e presente no
  C/C++ ) pode executar scripts, porém vc deve ficar atenta para QUAL
  usuario está sendo usado pelo PHP para fazer isso.

  quando eu fazia CGI-BIN com shell, o usuario que executava todas as
  aplicações era, se não me engano, o 'apache' ou 'nobody'. faça o
  seguinte teste

  $usuario = system('whoami');

  veja bem, vc quer executar scripts administrativos, deve saber QUAL
  usuario vai executar este script. se vc precisar de privilégios
  especiais, como os de root, tome cuidado com a sua aplicação, pois
  podes abrir uma brecha de segurança.

  outro ponto, seu script é interativo. vc precisa digitar comandos.
  porém via PHP eu acho que isso vai ser complicado. o que vc poderia
  fazer é algo como:

  #!/bin/bash
  # script para remover um usuario não - iterativo
  # versão didatica 1.0
  die() {  echo "$@" ; exit 1 }

  usage() { die "usage: ${PROGNAME} usuario" ; }

  erro_apagar_usuario() {
     die "Erro ao tentar apagar usuario: $USUARIO : razao $(cat err.txt)"
  }

  erro_apagar_home() {
     die "Erro ao tentar apagar dir home do usuario: $USUARIO : razao
  $(cat err.txt)"
  }

  USUARIO=${1}
  PROGNAME="$(basename $0)"

  [ -z "${USUARIO}" ] && usage

  userdel $USUARIO > log.txt 2> err.txt || erro_apagar_usuario

  # cuidado, nem sempre o home do usuario é este... ;-)
  rm -fr /home/$USUARIO > log.txt 2> err.txt || erro_apagar_home

  echo "O usuario $USUARIO foi apagado do sistema"
  exit 0; # fim

  A ideia começa por aqui, o que vc precisa ver é se vc não está abrindo
  uma brecha de segurança com este script ou se não existe uma
  ferramenta que ja faça isso (como o webmin)

  As alternativas para vc executar este script como outro usuario são:
  - usar o bit SUID
  - rodar com sudo / su

  ambos são um risco TREMENDO de segurança. boa sorte.

  On 10/25/06, Anali <address@hidden> wrote:
  > Olá gente, será que alguém pode me dar um help???
  >
  > Estou desenvolvendo alguns scripts em shell e terei que startar estes
  > scripts via PHP, ou seja, via web. Preciso saber como fazer isso pois
  > está complicado descobrir. Será que alguém teria uma idéia????
  > O PHP tem uma função só que funciona apenas se for comando,
  > exemplo......
  >
  > "service httpd start"     -        iniciar servidor web no linux.
  >
  > Perciso conseguir iniciar um arquivo de script,
  > tipo......"script.sh",
  > e por sua vez, mostrar na página o que ta acontecendo.
  > Exemplo:
  >
  > Vamos supor que eu tenha uma listinha de serviços e habilito na
  > caixinha qual desses serviços desejo e um botão para iniciar e outro
  > para parar o serviço, tudo isso chamando um arquivo de script.sh .
  >
  > Veja um script que fiz de exemplo para ter uma idéia:
  >
  > #!/bin/bash
  >
  > echo "Digite o usuário a ser apagado !"
  > read USUARIO
  >
  > userdel $USUARIO
  > \\remove usuario a seguir remove seu diretório e todo seu conteúdo
  > rm -fr /home/$USUARIO
  >
  > echo ""
  > echo "O usuario $USUARIO foi apagado do sistema"
  >
  >
  > ---------------------------------------------------------------------
  > ---------------------------------
  >
  > Se alguém puder me ajudar ficarei muito agradecida e logicamente
  > feliz. :)
  >
  > Grata desde ja,
  > Anali.
  >
  >
  >
  >
  > ---------------------------------------------------------------------
  > Esta lista não admite a abordagem de outras liguagens de programação, como 
perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio 
aviso.
  > ---------------------------------------------------------------------
  > Sair da lista: address@hidden
  > ---------------------------------------------------------------------
  > Esta lista é moderada de acordo com o previsto em 
http://www.listas-discussao.cjb.net
  > ---------------------------------------------------------------------
  > Servidor Newsgroup da lista: news.gmane.org
  > Grupo: gmane.org.user-groups.programming.shell.brazil
  >
  >
  > Links do Yahoo! Grupos
  >
  >
  >
  >


  -- 
  Tiago B Peczenyj
  Linux User #405772

  # cd /pub
  # more beer
   

[As partes desta mensagem que não continham texto foram removidas]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]