Apache : Exécuter un script php en tant que root

Par principe de sécurité, Apache n'autorise pas l’exécution de scripts qui touche le système en lui-même. Pour ce faire, on va lui indiquera quel script à exécuter.

Notre but est d'utiliser un navigateur web qui va initier l'appel de la commande “reboot” sur la machine hôte.

J'utilise ici la version 2.4.7 (Ubuntu) d'Apache et la version 17.2 de Mint (architecture i686).

Soyez toujours vigilant car je ne suis pas responsable de vos actes.

I. Création du script

Rendez-vous dans le dossier /var/www/ et créer le fichier script.php :

   # nano script.php

Ajouter les lignes suivantes pour lancer la commande en tant que root :

| script.php
<?php
 
exec('sudo -u root /etc/init.d/reboot stop');
exit;
 
?>

On dit que l'utilisateur qu'Apache utilise à le droit d'exécuter le script :

   # chown www-data:www-data script.php 

II. Ajouter l'exception

   # visudo

Vérifier et ajouter la ou les lignes manquantes pour autoriser le lancement du script :

   root ALL=(ALL) ALL
   www-data ALL=NOPASSWD:/etc/init.d/reboot stop

On remarque après le NOPASSWD:, on met le chemin absolue de la commande à exécuter.

III. Exécuter le script

Il reste plus qu'a ouvrir une page d'un navigateur pour lancer le script.

  • Dernière modification: 2017/06/01 19:50