Page 1 sur 1

[resolu] droit acces pour programme php

Posté : dim. 3 mai 2015 19:14
par guillaume9344
Bonjour, j ai créé un programme en c "nrf24l01" pour interagir avec un nrf24l01, ca fonctionne trés bien en consol.
j 'ai mis le fichier issue de la compilation dans le dossier usr\local\bin pour pouvoir l 'appeler de n 'importe où, j'ai également débloqué tous les droit(chmod 777)
Pour pouvoir y accéder depuis une page en php j' écrit la commande exec( "nrf24l01") sans réussite.
mais dans le log de apache, j 'ai l erreur suivante: unable to open \dev\mem : permission denied.
j'ai également créé un fichier dans etc\sudoers.d avec à l intérieur :
www-data ALL=(ALL) NOPASSWD:ALL (si j 'ai bien compris ca ouvre tous les droits sans mot de passe à l 'utilisateur www, bon ca crée un problème de sécurité mais j affinerais ca plus tard).

je pense que c'est un problème de droits pour lancer un programme depuis php , mais là je patauge totalement dans ces histoires de droits.
si vous avez des pistes pour attribuer des droits.....
a votre bon cœur messieurs dames

@+

Re: droit acces pour programme php

Posté : lun. 4 mai 2015 14:14
par Korhm
Bonjour,

Il faut que tu lances la commande avec sudo pour que l'édition du fichier des sudoers ai un intérêt
exec( "nrf24l01") => exécute la commande en tant que www-data sans autre droits que les siens
exec( "sudo nrf24l01") => exécute la commande en tant que www-data, et en lui accordant des droits plus important (avec notamment l''accès a /dev/mem que nécessite ton programme nrf24l01

Tu as peut-être déjà testé ce point mais ce n'est pas précisé dans ton post.

Re: droit acces pour programme php

Posté : lun. 4 mai 2015 18:08
par guillaume9344
CQFD
c'est bien ça , d'autant plus que en local j'appelai le programme avec sudo ..........
Comme quoi au bout de plusieurs heures la tete dans les codes , on voit plus rien, et j 'avai testé aussi avec sudo mais avant de modifier les fichiers sudoers.
Par contre maintenant pour le fichier de config sudoers, au lieu de www-data ALL=(ALL) NOPASSWD:ALL , par quoi je remplace all , par le chemin de dev\mem ou par le chemin de nrf24l01?

@+

Re: droit acces pour programme php

Posté : lun. 4 mai 2015 18:17
par domi
Salut guillaume,

Comme je suis fainéant ;-)
Je vais te donner un lien vers un Post ou j'expliquais comment faire, tu as juste à changer les chemins.

En Bref, tu crées un Alias des commandes autorisées, puis tu informes que www-data à droit d'exécuter les commandes de ton Alias avec Sudo.

Voir le post : viewtopic.php?f=71&t=285&start=20#p4634

Je suis certain que tu t'en sortiras avec ces explications ;)