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.