[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