Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 18/07/2013, à 23:02

jibe

[RESOLU] Commande en root depuis programme C++

Salut,

J'ai besoin, dans un petit programme en C++, de lancer une commande console en tant que root. J'ai tout bêtement (peut-être est-ce vraiment le terme exact ?) fait un

system("gksudo -- macommande > /tmp/ResultatDeMaCommande.txt")

mais j'obtiens un message "Impossible de verrouiller votre souris".

Pourtant, quand je lance cela dans un terminal, tout fonctionne bien... Que faire ?

Dernière modification par jibe (Le 28/07/2013, à 23:01)


Il y a deux manières de paraitre supérieur : en montrant sa valeur ou en dévalorisant les autres.

Hors ligne

#2 Le 19/07/2013, à 18:20

Haleth

Re : [RESOLU] Commande en root depuis programme C++

Utilise sudo, plutôt (parcque gksu c'est pas jouli)

Mieux: change ton uid pour devenir root, avec setuid(2) et consort (ce qui élimine la dépendance à sudo)


Ubuntu is an ancien African word which means "I can't configure Debian"

Because accessor & mutator are against encapsulation (one of OOP principles), good OOP-programmers do not use them. Obviously, procedural-devs do not. In fact, only ugly-devs are still using them.

Hors ligne

#3 Le 20/07/2013, à 15:24

jibe

Re : [RESOLU] Commande en root depuis programme C++

Salut,

Merci pour tes suggestions intéressantes smile

Cependant, je ne pense pas que setuid soit une bonne solution pour moi, parce que je n'ai besoin de passer en root que sur demande de l'utilisateur, en principe de manière assez exceptionnelle.

Pour ce qui est de sudo, il me paraissait plus logique, puisqu'on est en mode graphique et que je n'ouvre pas de terminal, d'utiliser gksudo ? En tous cas, je viens de faire l'essai, et ça ne fonctionne pas. Est-ce parce que je n'ouvre pas de terminal ? Aucun mot de passe ne m'est demandé, et la commande semble ne pas s'executer, en tous cas ne retourne aucun résultat ni message d'erreur...


Il y a deux manières de paraitre supérieur : en montrant sa valeur ou en dévalorisant les autres.

Hors ligne

#4 Le 27/07/2013, à 22:29

jibe

Re : [RESOLU] Commande en root depuis programme C++

Salut,

Il doit bien y avoir quelqu'un qui a déjà fait ou essayé de faire ça ?

A tout hasard, je reformule mon besoin : lancer une commande normalement utilisée en ligne de commande depuis un programme C++ en mode graphique. Ceci de manière "cachée" (sans ouvrir de terminal). Jusque là, tout va bien, je sais faire et ça fonctionne nickel. Mais, pour des utilisateurs autorisés (figurant comme sudoers), il faut pouvoir de temps en temps lancer cette commande en tant que root. Ceci représente moins de 10% des cas, et pourrait se comparer à "ouvrir en tant qu'administrateur" qu'on trouve dans Nautilus.

Donc, dans ce cas, il me faut lancer la commande avec (gk)sudo, en demandant le mot de passe, si possible avec une interface graphique. Un truc qui me semblait tout simple, mais que je ne sais pas faire fonctionner...


Il y a deux manières de paraitre supérieur : en montrant sa valeur ou en dévalorisant les autres.

Hors ligne

#5 Le 28/07/2013, à 07:41

ssdg

Re : [RESOLU] Commande en root depuis programme C++

a tout hasard, qu'est ce que ça donne avec "-g" après gksudo ?

(Si ça marche, sâche que ça prends 2 minutes de trouver ça dans "The Fu*!§ng Manual": man gksudo )


s'il n'y a pas de solution, c'est qu'il n'y a pas de problème... ou pas.

Hors ligne

#6 Le 28/07/2013, à 23:01

jibe

Re : [RESOLU] Commande en root depuis programme C++

Salut,

Effectivement, il ne m'est pas venu à l'esprit qu'une option de gksudo pourrait résoudre le problème, et je n'ai donc pas pensé à RTFM !

J'aurais dû : effectivement, le rôle de l'option -g est bien décrit et clair dans le man, et l'essai confirme que c'est bien ça qu'il fallait.

Merci ssdg !

Donc, pour ceux qui ont un besoin similaire, il suffit de faire un

system("gksudo -g -- macommande");

Pour info, le double signe moins après l'option -g sert à ce que la suite ne soit pas prise comme des paramètres ou des options de gksudo mais bien comme la commande à lancer avec les droits root. Il y a probablement des cas où il est inutile, mais comme il ne gêne pas, je préfère le mettre systématiquement : ainsi, aucun risque en cas de modif ou de reprise de code wink


Il y a deux manières de paraitre supérieur : en montrant sa valeur ou en dévalorisant les autres.

Hors ligne