0

sudo et PHP : no tty present and no askpass program specified

Actuellement en cours de développement d’une petite interface web pour ajouter des adresses statiques dans le fichier de configuration d’un serveur DHCP, j’ai rencontré une erreur lors de l’utilisation de la fonction PHP exec : no tty present and no askpass program specified.

Voici la partie du code source de ma fonction PHP pour redémarrer le service dhcp3-server:

<?php
        define ("DHCPDRESTART", "sudo /etc/init.d/dhcp3-server restart");
        try
        {
                $exec = exec(DHCPDRESTART);
                echo "Service redémarré";
        }
        catch(Exception $e)
        {
                die("<FONT color='red'>Erreur dans l'exécution pour redémarrer le service</FONT>");
        }
?>

Comme le code PHP est exécuté par l’utilisateur www-data, il faut donner les droits à ce dernier pour qu’il puisse redémarrer le service dhcp3-server sans demande de mot de passe.
Pour ce faire, il faut modifier le fichier sudoers :

sudo visudo

et ajouter cette lignes :

www-data nom-host-srv-dhcp=NOPASSWD : /etc/init.d/dhcp3-server

Le compte www-data peut dorénavant redémarrer le service dhcp3-server sans mot de passe uniquement sur la machine nom-host-srv-dhcp.

Partager l'article :





fred

"Dire que l'on s'en fiche du droit à la vie privée sous prétexte qu'on a rien à cacher, c'est comme déclarer que l'on se fiche du droit à la liberté d'expression sous prétexte qu'on a rien à dire." Edward Snowden

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.