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: Tiago Barcellos Peczenyj
Subject: Re: [shell-script] Startar processo do shell em uma página PHP.
Date: Wed, 25 Oct 2006 14:18:20 -0300

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


reply via email to

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