Commandes Shell
Commandes Shell et Privilèges
Le cœur du contrôle système repose sur les commandes Linux exécutées par PHP via la fonction shell_exec(). Pour que cela fonctionne, le serveur doit avoir des permissions spéciales.
I. Commandes Shell Essentielles
| Commande Shell | Utilisé par | Action |
|---|---|---|
sudo systemctl start motioneye | secure_action.php webhook_presence.php | Active la caméra. |
sudo systemctl stop motioneye | secure_action.php webhook_presence.php | Désactive la caméra. |
sudo systemctl is-active motioneye | index.php, admin.php webhook_presence.php | Vérifie l'état actuel. |
II. Configuration du fichier Sudoers
Par défaut, l'utilisateur www-data n'a pas le droit de gérer les services. Nous devons l'autoriser spécifiquement pour MotionEye sans mot de passe.
1. Ouvrir l'éditeur sécurisé :
sudo visudo 2. Ajouter les privilèges (à la fin du fichier) :
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 motioneye III. Test de validation
Pour vérifier que la configuration est correcte, simulez une exécution par l'utilisateur du serveur web :
sudo -u www-data sudo /usr/bin/systemctl is-active motioneye - ✅ Succès : Le terminal répond
activeouinactivesans demander de mot de passe. - ❌ Erreur : Si on vous demande un mot de passe, vérifiez le chemin de systemctl avec
which systemctl.