Formulário de contato

Nome

E-mail *

Mensagem *

Imagem

Executando comandos systemctl no PHP via Ubuntu

Executando comandos systemctl no PHP via Ubuntu

Publicado por em

Executando comandos systemctl no PHP via Ubuntu

Em aplicações web que rodam em servidores Linux, pode haver a necessidade de monitorar ou manipular serviços do sistema diretamente pelo navegador. Uma das formas de fazer isso com PHP é usando o comando systemctl para interagir com serviços no Ubuntu. Este artigo mostra como executar o comando systemctl status dentro de um script PHP e exibir a saída em tempo real.

@CanalQb PHP + Ubuntu: Interagindo com systemctl
Canal Qb no YouTube

Exemplo de código PHP

Abaixo, veja como utilizar popen() para executar o comando e fread() para exibir a saída no navegador:

<?php
  // Executa o comando e abre um stream de leitura
  $stream = popen("sudo systemctl status youtube", 'r');

  // Lê o stream e envia para a saída
  while (!feof($stream)) {
      echo fread($stream, 1024);
      flush();
  }

  // Fecha o stream
  pclose($stream);
?>

Esse script PHP executa o comando sudo systemctl status youtube, e exibe a saída do terminal diretamente no navegador em tempo real. Isso é útil para depuração e visualização rápida do status de serviços no servidor.

Importante: permissões do usuário www-data

Por padrão, o usuário www-data (que executa o Apache) não tem permissões de superusuário. Caso apareça a seguinte mensagem de erro:

www-data : user NOT in sudoers ; TTY=unknown ; PWD=/var/www/html ; USER=root ; COMMAND=/bin/systemctl status youtube

Você precisará dar permissões ao www-data para usar comandos com sudo. Faça isso com muito cuidado, seguindo os passos abaixo:

Adicionando www-data ao sudoers

  1. Abra o terminal no seu servidor.
  2. Execute o comando: sudo visudo
  3. Adicione a seguinte linha ao final do arquivo:
www-data ALL=(ALL) NOPASSWD: ALL

Essa linha permitirá que o Apache execute comandos sudo sem solicitar senha.

Aviso de segurança: dar permissões irrestritas ao www-data pode comprometer seu servidor se houver brechas no código PHP. Sempre restrinja o uso de sudo apenas ao necessário e utilize autenticação segura, firewalls e permissões mínimas no sistema.

Conclusão

Executar comandos systemctl via PHP pode ser uma ferramenta útil em situações administrativas e automações simples. No entanto, exige cuidado com a segurança, permissões e boas práticas no desenvolvimento. Idealmente, evite usar sudo com www-data sempre que possível e prefira soluções baseadas em sockets ou APIs intermediárias mais seguras.

Para mais informações sobre o uso seguro de sudo com Apache, acesse a documentação oficial do sudoers:

https://www.sudo.ws/man/1.8.13/sudoers.man.html

Marcadores: Blogger IA Script Sistemas Tutorial

© abril 18, 2023 CanalQb — Python, Scripts, Automação, Airdrops e Criptomoedas | Web3 e Tech na Prática

Comentários