Arrêt à partir de PHP – autoriser Apache

Je travaille sur un système Linux embarqué avec une interface web (apache). Fondamentalement, je dois append des fonctionnalités d’arrêt et de redémarrage à l’interface Web. Cependant, je rencontre des problèmes de permission lors de l’exécution:

exec (“shutdown now”) etc … lors de l’appel via la page Web (apache).

Comment diable puis-je autoriser ces commandes à partir d’Apache?

Je préférerais ne pas avoir à donner des permissions root complètes à Apache, mais la sécurité du système n’est pas un problème majeur dans mon cas, alors si c’est le seul moyen, comment puis-je le faire?

Faire de l’Apache un sudoer est un geste dangereux et je l’éviterais. Je pense que QID est proche de cela … la solution la plus simple consiste à configurer un job cron sous root qui s’exécute toutes les X secondes et vérifie la présence d’un fichier dans un répertoire dans lequel apache peut écrire. Demandez à apache d’append ce fichier lorsque vous voulez le fermer, et le script cron doit avoir un déclencheur qui (a) supprime le fichier et (b) redémarre l’ordinateur.

Veillez simplement à ce qu’il supprime le fichier correctement et à vous donner un délai d’attente assez long lorsque vous effectuez des tests, ou le serveur redémarrera simplement en permanence et ce serait un gâchis.

Ne sachant pas comment procéder, je peux proposer une solution de hack laide: écrivez un petit démon qui s’exécute en tant que root et acceptez les commandes pour fermer le système, et votre script PHP communiquera avec le démon via un canal raisonnablement sécurisé ( pour votre définition de raisonnable, peut-être envoyer un signal, peut-être écrire dans un fichier que le démon surveille, peut-être juste un socket réseau, peu importe).

Sachez que vous savez ce que vous faites:

exec (“sudo …

apache ALL = (TOUS) NOPASSWD: TOUS