-
Ping seulement pour root
Bonjour,
J'ai écrit un programme qui envoi un ping.
Seulement, j'ai une erreur à l'appel du ping comme quoi seulement Root peut pinger !?
Y a t-il une solution pour que je puisse pinger sans être root ? D'autant que je n'ai pas ce problème si je fait un "ping" en ligne de commande.
D'avance merci.
-TSalm
-
Si tu regardes bien les droits du ping (le vrai), tu risques de voir un truc genre "r-sr-xr-x". Le premier caractère "s" est très important, c'est le setuid bit.
Ce setuid bit indique au système que ce binaire s'exécute avec les droits du propriétaire du fichier et non pas les droits de l'utilisateur. Ping s'exécute donc en tant que "root".
Le fonctionnement de ping fait qu'il utilise des raw socket. L'utilisation des raw socket n'est autorisée que pour l'utilisateur "root". Un utilisateur normal n'a pas le droit de faire du raw socket.
Donc si ton programme veut avoir le droit de pinguer (je suppose que tu as réécrit la mécanique de ping en raw socket), il faut qu'il soit exécuté par root ou bien que le setuid bit soit positionné.
-
Merci pour ta réponse.
Si je comprends bien, la meilleurs solution serait d'appeler directement la commande ping.