Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Rafael Caviquioli

Reiniciar serviços com shell script

Recommended Posts

Ola , estou fazendo um mini administrados pra meu firewall, so que estou em um pronto que preciso que o php execute um shel para restartar o squid.

 

estou usando o seguinte comando:

 

shell_exec("service squid restart");
e ele me retorna o erro:

 

Parando o squid: [FALHOU] init_cache_dir /var/spool/squid... Iniciando squid: [FALHOU]

 

___________________________________

se for fazerm testes como por exemplo:

shell_exec("ifconfig");
funciona perfeitamente,

____________________________________

 

o mesmo problema acontece com

shell_exec("service httpd restart");
Parando o httpd: [FALHOU] Iniciando httpd: [FALHOU]

 

alguem tem alguma ideia ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

alguem tem alguma ideia ?

 

Sim, simples, você não tem permissões para fazer isso.

 

Veja o seguinte tópico http://forum.imasters.com.br/public/style_emoticons/default/seta.gif http://forum.imasters.com.br/index.php?/topic/386538-conexao-ssh-com-php-usando-state-design-pattern/

 

Utilize da seguinte forma:

<?php
use com\ssh\SSHConnection;
use com\ssh\auth\SSHAuthenticatePassword;

$teste = new SSHConnection();
$teste->open( '127.0.0.1' );
$teste->authenticate( new SSHAuthenticatePassword( 'root' , 'senha_root' ) );
echo $teste->execute( 'service squid restart' );

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

alguem tem alguma ideia ?

 

Sim, simples, você não tem permissões para fazer isso.

 

Veja o seguinte tópico http://forum.imasters.com.br/public/style_emoticons/default/seta.gif http://forum.imasters.com.br/index.php?/topic/386538-conexao-ssh-com-php-usando-state-design-pattern/

 

Utilize da seguinte forma:

<?php
use com\ssh\SSHConnection;
use com\ssh\auth\SSHAuthenticatePassword;

$teste = new SSHConnection();
$teste->open( '127.0.0.1' );
$teste->authenticate( new SSHAuthenticatePassword( 'root' , 'senha_root' ) );
echo $teste->execute( 'service squid restart' );

 

Ola João, Parabéns um otimo projeto em...

 

Copiei todos os arquivos para seu devido diretorio mas quando vou executar da o seguinte erro:

 

Parse error: syntax error, unexpected T_STRING, expecting T_CONSTANT_ENCAPSED_STRING or '(' in /home/webdesign/Sites/firewall/atualiza_ips_liberados.php on line 57

A linha 57 é a seguinte:

 

(linha 57) use com\ssh\SSHConnection;

(linha 58) use com\ssh\auth\SSHAuthenticatePassword;

 

não intendi o que significa tambem esse "use" e como ele funciona sem orientar o diretorio ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

não intendi o que significa tambem esse "use" e como ele funciona sem orientar o diretorio ?

 

Rafael, esse código só funcionará com o PHP 5.3+

 

http://forum.imasters.com.br/public/style_emoticons/default/seta.gif http://www.php.net/manual/en/language.namespaces.importing.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hm, infelizmente não trabalho com PHP 5.3 ainda.

Mas sobre aquele codigo de antes o

shell_exec('');
, tenhu dois servidores um no USA Debian baseado em (Rad Hat), e um Centos , que serve como firewall aqui no trabalho, esse codigo no Debian funciona perfeitamente com qualquer comando, e sem precisar dar permissão de usuario, você sabe se é alguma configuração aqui no Centos pra funcionar ?

Mas, Obrigado pela ajuda la encima...,

Compartilhar este post


Link para o post
Compartilhar em outros sites

USA Debian baseado em (Rad Hat), e um Centos

 

hehehe,

 

O CentOS que é baseado no Red Hat, o Debian é Debian.

 

você sabe se é alguma configuração aqui no Centos pra funcionar ?

 

Como eu disse, é uma questão de permissões.

 

O usuário que inicia os serviços, normalmente, é o root. Já o usuário do Apache (que roda o PHP) é apache.apache

 

Existem duas formas de se conseguir o que você quer, nos dois casos você estará vulnerável.

 

1. Dê permissões para o usuário apache (ou qualquer que seja o usuário que rode o php) ou então modifique o usuário que roda o PHP.

 

Para ver qual o usuário que está rodando seu PHP basta fazer:

[neto@localhost ~]$ cat /etc/httpd/conf/httpd.conf |grep "^\(User\|Group\) \w*$"

A saída será alguma coisa como:

User apache
Group apache

Edite o httpd.conf e modifique para o usuário que você quiser.

 

2. A segunda opção é suPHP, tão vulnerável quanto o primeiro mas, pelo menos, você não precisará mudar o usuário do apache:

 

http://forum.imasters.com.br/public/style_emoticons/default/seta.gif http://www.suphp.org/Home.html

 

http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Apenas esteja ciente que, dar permissões desse tipo ao apache ou ao PHP é extremamente arriscado e deve ser feito somente se você souber o que está fazendo ou esteja disposto a correr o risco.

 

;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, esse servidor é interno não uso para hospedar site, intam pela segurança está ok,

Mas troquei o usuario e mesmo assim não da, troquei apache por rafael o usuario que eu uso é isso ne ?

 

Estou quase desistindo. Ja pesquisei por tudo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

troquei apache por rafael o usuario que eu uso

 

Troque por root e grupo root e reinicie o apache.

 

Trocando o User e Grupo por root da o seguinte erro:

ITJ: /etc/httpd/conf # service httpd restart
Parando o httpd:                                           [  OK  ]
Iniciando httpd: Syntax error on line 231 of /etc/httpd/conf/httpd.conf:
Error:\tApache has not been designed to serve pages while\n\trunning as root.  There are known race conditions that\n\twill allow any local user to read any file on the system.\n\tIf you still desire to serve pages as root then\n\tadd -DBIG_SECURITY_HOLE to the CFLAGS env variable\n\tand then rebuild the server.\n\tIt is strongly suggested that you instead modify the User\n\tdirective in your httpd.conf file to list a non-root\n\tuser.\n
                                                           [FALHOU]
ITJ: /etc/httpd/conf #

Compartilhar este post


Link para o post
Compartilhar em outros sites

Troque por root e grupo root e reinicie o apache.

 

If you still desire to serve pages as root then

add -DBIG_SECURITY_HOLE to the CFLAGS env variable

and then rebuild the server.

 

It is strongly suggested that you instead modify the User

directive in your httpd.conf file to list a non-root

user.

 

Pois é, como eu disse, existem sérias considerações de segurança.

 

Mas, como você já está ciente disso e está disposto a correr o risco, basta fazer o que foi dito na mensagem de erro:

 

[neto@localhost httpd]$ export CFLAGS=-DBIG_SECURITY_HOLE
[neto@localhost httpd]$ ./configure
[neto@localhost httpd]$ make
[neto@localhost httpd]$ make install

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pois é, como eu disse, existem sérias considerações de segurança.

 

Mas, como você já está ciente disso e está disposto a correr o risco, basta fazer o que foi dito na mensagem de erro:

 

[neto@localhost httpd]$ export CFLAGS=-DBIG_SECURITY_HOLE
[neto@localhost httpd]$ ./configure
[neto@localhost httpd]$ make
[neto@localhost httpd]$ make install

Executei esses comandos no diretorio do httpd e nada so o primeiro roda... é melhor deixar assim mas valeu pela ajuda;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Executei esses comandos no diretorio do httpd e nada so o primeiro roda... é melhor deixar assim mas valeu pela ajuda;

 

Bom, talvez eu não tenha me explicado direito.

 

O httpd ilustrado no meu post anterior é /usr/local/src/httpd, onde estão os fontes do apache.

 

Você precisará recompilar todo o servidor e, para isso, você precisará baixar o pacote de fontes.

 

 

http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Considere utilizar suPHP, como dito em alguns posts acima.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Executei esses comandos no diretorio do httpd e nada so o primeiro roda... é melhor deixar assim mas valeu pela ajuda;

 

Bom, talvez eu não tenha me explicado direito.

 

O httpd ilustrado no meu post anterior é /usr/local/src/httpd, onde estão os fontes do apache.

 

Você precisará recompilar todo o servidor e, para isso, você precisará baixar o pacote de fontes.

 

 

http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Considere utilizar suPHP, como dito em alguns posts acima.

 

Que estranho minha pasta /usr/local/src/ esta vazia.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que estranho minha pasta /usr/local/src/ esta vazia.

 

Se você não baixar os fontes do apache, estará vazia mesmo.

 

;)

 

http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Considere utilizar suPHP

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.