Commandes Shell
Commandes Shell (Linux) Essentielles
Le cœur du contrôle système repose sur les commandes Linux exécutées par PHP via shell_exec() :
Commande Shell | Rôle | Utilisé par | Explication |
| Démarre le service MotionEye. |
| Active la caméra / l'enregistrement. |
| Arrête le service MotionEye. |
| Désactive la caméra / l'enregistrement. |
| Vérifie l'état actuel (actif ou inactif). |
| Permet à la logique PHP de savoir si une action est nécessaire. |
Autoriser l'utilisateur PHP à exécuter systemctl.
Vous devez modifier le fichier de configuration sudoers sur votre serveur pour permettre à l'utilisateur qui exécute PHP (souvent www-data) de lancer les commandes start et stop de motioneye sans demander de mot de passe.
Attention : Cette manipulation nécessite des droits d'administrateur et doit être effectuée avec prudence.
Étapes à suivre sur votre serveur :
1. Connectez-vous à votre serveur (via SSH, par exemple).
2. Modifiez le fichier sudoers en utilisant la commande visudo :
sudo visudo3. Ajoutez la ligne suivante à la fin du fichier. (Remplacez www-data par l'utilisateur de votre serveur web si ce n'est pas le cas, souvent www-data pour Debian/Ubuntu ou apache pour Red Hat/CentOS) :
www-data ALL=(ALL) NOPASSWD: /usr/bin/systemctl start motioneye
www-data ALL=(ALL) NOPASSWD: /usr/bin/systemctl stop motioneye
www-data ALL=(ALL) NOPASSWD: /usr/bin/systemctl is-active motioneye4. Enregistrez et quittez l'éditeur (nano : Ctrl+O, Enter, Ctrl+X ).
Explication de la ligne :
www-data: L'utilisateur qui exécute PHP.ALL=(ALL): Cet utilisateur peut agir comme n'importe quel autre utilisateur.NOPASSWD:: L'utilisateur n'a pas besoin de mot de passe./bin/systemctl start motioneye, /bin/systemctl stop motioneye: Liste exacte des commandes autorisées.
Attention aux détails :
Il n'y a pas d'espace entre les virgules et les chemins de fichiers.
Le chemin
/bin/systemctldoit être le bon (tapezwhich systemctldans votre terminal pour confirmer,/usr/bin/systemctl, modifiez la ligne en conséquence).
Test direct en ligne de commande
Pour isoler le problème, forcez un test en tant qu'utilisateur www-data depuis votre terminal : sudo -u www-data sudo /bin/systemctl is-active motioneye
Si cela répond "active" ou "inactive" : Le système sudoers est bien configuré.
Si on vous demande un mot de passe ou si vous avez un message "Permission denied" : La ligne dans
visudoest incorrecte ou mal placée.