Accorder permission root a www-data

Résolu/Fermé
helmii Messages postés 28 Date d'inscription mercredi 19 juin 2013 Statut Membre Dernière intervention 8 juillet 2013 - 28 juin 2013 à 16:17
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 - 1 juil. 2013 à 18:28
bonjour tt le monde!j ai un script perl dhcpmanip.pl dans lequel j'ai la ligne: system "hostapd /etc/hostapd-1.0/hostapd/hostapd.conf " qui sert a lancer le hostapd!et j ai l erreur suivant :
Insecure $ENV{PATH} while running setuid at /var/www/cgi-bin/dhcpmanip.pl line 46

après une recherche sur net j ai constaté qu il fallait accorder la permission root à l'utilisateur www-data d' Apache donc j ai essayer de modifier le fichier /etc/sudoers en ajoutant la ligne : www-data ALL=NOPASSWD: /var/www/cgi-bin/dhcpmanip.pl mais en vain...quelqu'un as t-il une idée comment résoudre ce problème??mercii
A voir également:

7 réponses

gohlink Messages postés 50 Date d'inscription mercredi 19 juin 2013 Statut Membre Dernière intervention 16 décembre 2015 12
28 juin 2013 à 16:22
Bonjour,

Il n'est pas nécessaire de donner un accès root à www-data, il suffit que www-data puisse écrire dans les bons fichiers uniquement.

Deux manières :
- Indiquer www-data comme propriétaire du fichier avec la commande chown
- Indiquer les fichiers et/ou dossier comme appartenant au groupe www-data (chown) et donner la permission d'écriture au groupe (chmod g+w)
0
helmii Messages postés 28 Date d'inscription mercredi 19 juin 2013 Statut Membre Dernière intervention 8 juillet 2013
28 juin 2013 à 16:27
merci pour ta reponse :)
je vois que ce n 'est pas necessaire de donner un accès root a www-data d'après ce que t as dit mais c'est faisable je pense nn?ce que je comprend pas c'est ou est la faute dans mon code :/
0
gohlink Messages postés 50 Date d'inscription mercredi 19 juin 2013 Statut Membre Dernière intervention 16 décembre 2015 12
28 juin 2013 à 16:47
Désolé, j'ai juste rectifié ton titre sans même porter attention à ton problème réel :)

D'ailleurs, ce que j'ai dit plus haut est faux. Avec l'erreur Insecure $ENV{PATH}, Perl indique soit que ton PATH n'est pas initialisé, soit qu'un des dossiers du PATH n'est pas protégé en écriture (d'où l'idée qu'il ne faut pas suivre ce que je décrits plus haut).

Tu peux essayer :
$ENV{PATH} = "/dossier/ou/se/trouve/hostapd/"
exec 'hostapd', '/etc/hostapd-1.0/hostapd/hostapd.conf';

Je ne suis pas expert PERL, j'ai juste suivi la doc : http://www.washington.edu/perl5man/pod/perlsec.html
0
helmii Messages postés 28 Date d'inscription mercredi 19 juin 2013 Statut Membre Dernière intervention 8 juillet 2013
28 juin 2013 à 17:04
je vais l essayer maintenant :) merci bcp
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
helmii Messages postés 28 Date d'inscription mercredi 19 juin 2013 Statut Membre Dernière intervention 8 juillet 2013
1 juil. 2013 à 12:51
salut :)) merci beacoup pour ton aide sa a marché!!je voulais savoir est t-il de meme pour executer la commande:

sudo ifdown wlan1

si oui quel est le chemin du program ifdown j ai cherché mais en vain!!!merci pour l'aide :))
0
gohlink Messages postés 50 Date d'inscription mercredi 19 juin 2013 Statut Membre Dernière intervention 16 décembre 2015 12
1 juil. 2013 à 13:24
Salut,

Tu peux te servir de la commande whereis pour trouver un exécutable

$ whereis ifdown
ifdown: /sbin/ifdown /usr/share/man/man8/ifdown.8.gz
0
helmii Messages postés 28 Date d'inscription mercredi 19 juin 2013 Statut Membre Dernière intervention 8 juillet 2013
1 juil. 2013 à 14:28
pour la commande de hostapd j ai saisi les lignes suivantes :
$ENV{PATH} = "/etc/hostapd-1.0/hostapd/";
exec 'hostapd', '/etc/hostapd-1.0/hostapd/hostapd.conf';
et sa marche très bien.
Pour la commande ifdown j ai saisi:
$ENV{PATH} = "/sbin/";
exec 'ifdown', 'wlan1';

Mais sa ne marche pas :/
0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié par [Dal] le 1/07/2013 à 14:54
Salut helmii,

En faisant :

$ENV{PATH} = "/etc/hostapd-1.0/hostapd/";

Tu écrases la valeur de la variable d'environnement "PATH", dont tu perds le contenu, alors que les emplacements énumérés dans cette variable sont nécessaires au bon fonctionnement du système (ce qui explique sans doutes que ifdown ne fonctionne pas).

Dans la variable PATH, les répertoires sont séparés par des ":". Si tu dois ajouter temporairement un répertoire à la variable PATH, tu peux le faire en ajoutant une nouvelle entrée séparée par ":", précédant le contenu déjà existant, ou ajoutée à la suite. Par exemple, pour l'ajouter à la suite, tu fais comme cela :

$ENV{PATH} .= ":/etc/hostapd-1.0/hostapd/";

Ton PATH devrait déjà contenir /sbin/, sous Linux, et il ne devrait pas être nécessaire de l'ajouter au PATH.

Pour le vérifier, fais cela dans ton terminal:

me@mymachine:~$ echo $PATH

Dal
0
helmii Messages postés 28 Date d'inscription mercredi 19 juin 2013 Statut Membre Dernière intervention 8 juillet 2013
1 juil. 2013 à 15:27
salut Dal,
t'as raison a propos sbin il existe deja dans $PATH.
quand j ai mis $ENV{PATH} .= ":/etc/hostapd-1.0/hostapd/";
comme tu me l'as dit meme le hostapd ne veut plus fonctionner!! :/ je remet
$ENV{PATH} = "/etc/hostapd-1.0/hostapd/"; il fonctionne très bien et reste le problème de :
exec 'ifdown' , 'wlan1';
exec 'ifup' , 'wlan1';
0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
1 juil. 2013 à 18:28
Je ne comprend pas bien pourquoi veux changer la variable d'environnement juste pour exécuter "hostapd". ne peux-tu pas simplement le lancer en indiquant le chemin de l'exécutable dans l'appel à exec lui-même.

exec '/etc/hostapd-1.0/hostapd/hostapd', '/etc/hostapd-1.0/hostapd/hostapd.conf'; 

Par ailleurs, dans ton message d'origine tu dis que tu utilises "system", puis subitement, tu parles après de "exec". Tu dois avoir tes raisons pour utiliser "exec", qui n'est absolument pas équivalent de "system" :

https://perldoc.perl.org/functions/exec

The exec function executes a system command and never returns; use system instead of exec if you want it to return.

Enfin, si tu dois vraiment modifier le PATH pour une raison qui m'échappe, et que tu as des problèmes d'exécution en postfixant ta modification, essaye en la préfixant :

$ENV{PATH} = "/etc/hostapd-1.0/hostapd/:" . $ENV{PATH};

Dal
0