[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]