2 votes

Lancer une application linux utilisant PHP (Apache) avec les privilèges Root pour certaines commandes

Je fais tourner plusieurs instances de Node et toutes fonctionnent sur des ports différents.

J'ai besoin d'un moyen pour pouvoir tuer une instance particulière de Node en fonction du port qu'elle utilise (tuer l'instance de Node liée au port n).

Depuis mon terminal, je peux facilement faire un "fuser -k xxxx/tcp" xxxx étant le port.

En fait, c'est parce que j'ai l'autorisation de le faire. Ma question est la suivante : je veux pouvoir disposer d'un fichier PHP qui ferme l'instance du nœud fonctionnant sur le port n et qui peut être ouvert par n'importe qui. Comment faire cela sans ouvrir d'énormes failles de sécurité ?

Merci !

2voto

Pascal Belloncle Points 5199

Vous pourriez envisager d'ajouter un point de terminaison supplémentaire à votre serveur, tel que /shutdown qui appellerait process.exit() ;

Le résultat est immédiat, plus facile à mettre en œuvre que d'utiliser un tas de commandes shell, de suivre les pids, etc...

Il est également facile de les protéger par un mot de passe, une demande signée, etc.

0voto

Eric Points 2006

La meilleure façon de procéder serait de faire en sorte que php écrive le numéro de port dans un fichier, puis qu'un cron script s'exécute en tant que Root (ou tout autre utilisateur qu'il doit être) et lise le ou les numéros de port à partir de ce fichier. Le cron script devrait également comporter des mesures de sécurité, comme ne pas arrêter ce qui est exécuté sur le port 80 ou ne pas être un processus de nœud du tout.

edit : pour un peu plus de sécurité, vous pourriez exiger que le numéro de port soit préfixé par un "mot de passe" que vous auriez à saisir. Ensuite, le cron script vérifierait qu'il est préfixé par ce mot de passe (ou le hacher et comparer le hachage serait encore mieux).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X