Codeblock probleme de droit ?

Hello

J’ai un souci , j’ai besoins que mon code soit exécuter en root, car sa touche le réseaux j’utilise la libpcap, pour sniffer les paquet etc.

Évidement codeblock est lancer en simple utilisateur.
Je ne vais quand même pas le lancer en root, si ??

j’ai bien regarder certaine option de compilation mai,
je ne voir pas trop comment changer les droit de façons a ce que cela ne me demande pas le mots passe de root.
Car si a chaque fois que l’exécute sa me le demande j’ai pas finis de le taper :S

je verrai bien un sudo (après la configuration qui va bien…) placer dans les option de compilation mai ou ?
mai je ne suis même pas sur que sa marche ?

Merci d’avance

Les droits d’exécution ne se définissent pas à la compilation. Sinon, ce serait un peu facile de compiler n’importe quel programme et de lui donner les droits root.
En revanche un programme peut être exécuté avec les droits de son propriétaire (et non de l’utilisateur qui l’exécute) s’il a la permission SUID. Si le propriétaire est root, alors le programme est exécuté en tant que root.

Salut.
Je présumes que c’est sur codeblocks (sa sonne vraiment différent et sa fait bizarre quand on est habitué avec le s).

Dans “settings” -> “environment settings”, en bas de fenêtre tu as deux entré:
Shell to run command in: (/bin/sh -c) et Terminal to launch console programs: (xterm -T $TITLE -e).

En modifiant, tu pourras lancé quelque chose en root, avec gksu ou autres techniques je vous laisse le choix.

[quote=“kripteks”]Salut.
Je présumes que c’est sur codeblocks (sa sonne vraiment différent et sa fait bizarre quand on est habitué avec le s).

Dans “settings” -> “environment settings”, en bas de fenêtre tu as deux entré:
Shell to run command in: (/bin/sh -c) et Terminal to launch console programs: (xterm -T $TITLE -e).

En modifiant, tu pourras lancé quelque chose en root, avec gksu ou autres techniques je vous laisse le choix.[/quote]

Edit:

j’ai ceci par défauts:

j’ai essayer:
/bin/sh -c sudo -u root
/bin/sh sudo -u root

message:

Compiling: cClassLibcap.cpp
usage: sudo [-D level] -h | -K | -k | -V
usage: sudo -v [-AknS] [-D level] [-g groupname|#gid] [-p prompt] [-u user
            name|#uid]
usage: sudo -l[l] [-AknS] [-D level] [-g groupname|#gid] [-p prompt] [-U user
            name] [-u user name|#uid] [-g groupname|#gid] [command]
usage: sudo [-AbEHknPS] [-r role] [-t type] [-C fd] [-D level] [-g
            groupname|#gid] [-p prompt] [-u user name|#uid] [-g groupname|#gid]
            [VAR=value] [-i|-s] [<command>]
usage: sudo -e [-AknS] [-r role] [-t type] [-C fd] [-D level] [-g
            groupname|#gid] [-p prompt] [-u user name|#uid] file ...

mai sa passe pas. j’ai bien configurer /etc/sudoers.

je vois pas qu’elle paramètre je devrai lui passer ??

Visiblement il s’agit de l’environnement dans lequel le programme va être compilé, et non celui dans lequel il va être exécuté (ce qui n’aurait aucun intérêt, à moins de toujours l’exécuter depuis Codeblocks).

Moi je pensais et penses toujours, que la partie “xterm -T $TITLE -e” serait plus approprié, car c’est cet commande qui lance l’application.

j’ai bien tester "xterm -T $TITLE -e sudo -u root"
il me demande le mots de passe a lexecution : :017 :017

Executing: xterm -T wrapper_libcap -e sudo -u root /home/key_usb_16/code_block/bin/cb_console_runner LD_LIBRARY_PATH=$LD_LIBRARY_PATH:. /bin/Debug/wrapper_libcap  (in /libcap/.)

j’ai abréger les chemins du code il lui faut une variable pour la ligne de commande?
car en console sudo /chemin/complet marche sans souci. donc sudo est configurer de manière appropriée ?

PascalHambourg:
dans codebock je peux compiler puis exécuter , donc les 2 son indissociable. sinon l’ide perd son intérêt , si c est bien ta question ?

Merci pour votre patience , une idée je suis preneur :slightly_smiling:

D’accord, mais ce programme n’a pas vocation a être exécuté seulement depuis Codeblocks, non ?

j’ai bien tester "xterm -T $TITLE -e sudo -u root"
il me demande le mots de passe a lexecution : :017 :017

Executing: xterm -T wrapper_libcap -e sudo -u root /home/key_usb_16/code_block/bin/cb_console_runner LD_LIBRARY_PATH=$LD_LIBRARY_PATH:. /bin/Debug/wrapper_libcap  (in /libcap/.)

j’ai abréger les chemins du code il lui faut une variable pour la ligne de commande?
car en console sudo /chemin/complet marche sans souci. donc sudo est configurer de manière appropriée ?
[/quote]

N’est-ce pas normal de demandé un mot de passe root, si on demande d’utiliser une commande avec les droits root (sudo -u root) ?
Si je me trompes pas, sudo est ciblé directement à une commande précis, donc t’as pas le choix, à moins que tu ajoutes la commande de ton logiciel dans la config de sudo.

j’ai bien tester "xterm -T $TITLE -e sudo -u root"
il me demande le mots de passe a lexecution : :017 :017

Executing: xterm -T wrapper_libcap -e sudo -u root /home/key_usb_16/code_block/bin/cb_console_runner LD_LIBRARY_PATH=$LD_LIBRARY_PATH:. /bin/Debug/wrapper_libcap  (in /libcap/.)

j’ai abréger les chemins du code il lui faut une variable pour la ligne de commande?
car en console sudo /chemin/complet marche sans souci. donc sudo est configurer de manière appropriée ?
[/quote]

N’est-ce pas normal de demandé un mot de passe root, si on demande d’utiliser une commande avec les droits root (sudo -u root) ?
Si je me trompes pas, sudo est ciblé directement à une commande précis, donc t’as pas le choix, à moins que tu ajoutes la commande de ton logiciel dans la config de sudo.[/quote]

alors:
sudo -u root
ou
sudo lacomande
dans un terminal ne change rien car :

#/etc/sudoers
monuser ALL=NOPASSWD:/chemin/direct/ver_le_binaire_compiler/bin/Debug/bin_libcap
D'accord, mais ce programme n'a pas vocation a être exécuté seulement depuis Codeblocks, non ?

depuis un autres endroit que Codeblocks ,c’est même certain oui ?

Je sais pas faire des essayes avec sudo car je suis sous ubuntu en ce moment pour divers raisons.

Mais avec gksu, sa marche, application lancé au nom de “root”: xterm -T $TITLE -e gksu
Avec sudo simple aussi, application lancé au nom de “root”: xterm -T $TITLE -e sudo (pas sudo -u root)

Pour gksu, j’ai une fenêtre (fait par gksu) demandant mon mot de passe root.
(Sa marche sous ubuntu, que si on assigne un mot de passe root, mais sous debian, c’est déjà par défaut.)

Pour sudo, j’ai une console ouverte avec le lancement de l’application, et en premier lieu il me demande mon mot de passe.

A savoir que codeblocks à plusieurs type: console application, gui application.
Avec console application, via sudo, il te demandera le mot de passe et l’application sera lancé en tant que root.
Avec gui application, tu n’auras pas de console ouverte, et donc pas de demande de mot de passe, et au final, l’application est lancé en tant qu’utilisateur normal.

Pour changer le type, tu dois ouvrir ton projet, aller dans menu “Projets” -> propriété -> deuxième onglet “build targets” -> dedans -> type: (sélection).