IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C++ Discussion :

lancer une commande root.


Sujet :

C++

  1. #1
    Membre éclairé Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 762
    Par défaut lancer une commande root.
    bonjour,

    dans mon prog en c++ sous nux, avec interface graphique, j'aurais besoin de lancer des commandes systemes qui necessitent d'etre root.
    mais je n'ai pas la moindre idee de comment faire cela.

    si quelqu'un a une piste, je suis preneur ;-)

    merci d'avance,
    tres cordialement,

    lostsoul

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 119
    Billets dans le blog
    148
    Par défaut
    Bonjour,

    Vous pouvez soit essayer d'utiliser "sudo" sachant que vous serez amener à taper le mot de passe.
    Soit vous lancer votre programme en tant que root ( :s )

    Soit ... euh il doit y avoir une documentation ... quelque part pour faire passer un programme en root ... :s mais je ne connais pas
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre éclairé Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 762
    Par défaut
    je ne sais pas comment utiliser sudo dans le prog pour que l'utilisateur tappe son mot de passe. je trouve pas de doc.
    par contre, j'ai trouve libsudo, faut voir ce que ça peut donner.

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 119
    Billets dans le blog
    148
    Par défaut
    Citation Envoyé par lostsoul Voir le message
    je ne sais pas comment utiliser sudo dans le prog pour que l'utilisateur tappe son mot de passe. je trouve pas de doc.
    par contre, j'ai trouve libsudo, faut voir ce que ça peut donner.
    Bah, je ne sais pas vraiment comment vous lancez vos commandes systèmes.
    Car si c'était un system("sudo commande") j'imagine que le système demande le mot de passe.
    Sinon la libsudo semble une piste très intéressante.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    Membre éclairé Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 762
    Par défaut
    oui, mais il faut que se soit avec une interface graphique, et pas en ligne de commande.

  6. #6
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 474
    Par défaut
    Bonjour,

    Citation Envoyé par lostsoul Voir le message
    bonjour, dans mon prog en c++ sous nux, avec interface graphique, j'aurais besoin de lancer des commandes systemes qui necessitent d'etre root.
    Avant toute chose, quels sont ces fameuses commandes système ? Si tu es contraint d'en arriver là, c'est qu'il y a probablement une erreur de conception dans ton programme.

    Si ce n'est pas le cas, ce n'est pas au programme de « passer root » mais à l'utilisateur de lancer ce programme depuis un compte disposant des privilèges adéquats.

    Citation Envoyé par LittleWhite
    Soit ... euh il doit y avoir une documentation ... quelque part pour faire passer un programme en root ... :s mais je ne connais pas
    Il n'y a pas, à ma connaissance, de moyen de provoquer une « escalade de privilèges » sous Unix (de manière licite, je veux dire). Les programmes comme sudo ou password sont « setuidés » root à la base. Le système lance donc directement ces exécutables avec les bons privilèges et ce sont eux qui, une fois les privilèges vérifiés, décident de lancer l'exécutable sollicité par l'utilisateur.

  7. #7
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 119
    Billets dans le blog
    148
    Par défaut
    Citation Envoyé par Obsidian Voir le message
    Il n'y a pas, à ma connaissance, de moyen de provoquer une « escalade de privilèges » sous Unix (de manière licite, je veux dire). Les programmes comme sudo ou password sont « setuidés » root à la base. Le système lance donc directement ces exécutables avec les bons privilèges et ce sont eux qui, une fois les privilèges vérifiés, décident de lancer l'exécutable sollicité par l'utilisateur.
    Je ne parle pas d'escalade de privilège (qui serait une faille). Je parle juste d'un moyen pour faire dans notre programme, un prompt de login (securisé) et d'avoir donc le privilège une fois le mot de passe entrée.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  8. #8
    Membre éclairé Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 762
    Par défaut
    non ce n'etait pas une erreur de conception.
    mais finalement, je vais faire autrement, et plus besoin d'etre root.

  9. #9
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 474
    Par défaut
    Citation Envoyé par lostsoul Voir le message
    non ce n'etait pas une erreur de conception.
    mais finalement, je vais faire autrement, et plus besoin d'etre root.
    Donc… c'était une erreur de conception ! :-)

  10. #10
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 474
    Par défaut
    Citation Envoyé par LittleWhite Voir le message
    Je ne parle pas d'escalade de privilège (qui serait une faille). Je parle juste d'un moyen pour faire dans notre programme, un prompt de login (securisé) et d'avoir donc le privilège une fois le mot de passe entrée.
    C'est bien ce que je te dis : tu ne peux pas le faire sans avoir les droits root au départ. Le seul moyen de s'en sortir si on n'est pas lancé en root dès le départ est de faire appel à un exécutable tiers setuidé root.

  11. #11
    Membre éclairé Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 762
    Par défaut
    non, pas d'erreur. je voulais recuperer des infos sur le materiel, sous gnu/linux. et je pensais passer par un script utilisant dmidecode, qui necessite root. mais en fait, avec d'autres commandes, je recuperer aussi pas mal d'infos, et pas besoin de root. donc, finalement, pas de root ;-)

  12. #12
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 474
    Par défaut
    Citation Envoyé par lostsoul Voir le message
    non, pas d'erreur. je voulais recuperer des infos sur le materiel, sous gnu/linux. et je pensais passer par un script utilisant dmidecode, qui necessite root. mais en fait, avec d'autres commandes, je recuperer aussi pas mal d'infos, et pas besoin de root. donc, finalement, pas de root ;-)
    Donc … c'était bel et bien une erreur de conception ! :-)

    C'est un point très important que tu soulèves là car la conception d'un programme commence au moment où l'on établit ses grandes lignes, avant même d'entrer dans la technique, et demande d'avoir une compréhension précise de ce qui est légal ou pas au sein d'un système d'exploitation multitâche. En l'occurrence, il n'y avait pas d'erreur technique dans ton programme mais le fait même d'avoir à considérer que tu devais passer par dmidecode alors ces informations sont disponibles par ailleurs sans privilège est une erreur qui peut avoir de lourdes conséquences.

    Ce qui me pose problème, c'est le cheminement qui t'a poussé à penser que tes besoins étaient parfaitement légitimes. Ils peuvent l'être, mais penser que « J'ai besoin de dmidecode, dmidecode a besoin d'être root, donc j'ai besoin d'être root » ne devrait pas te venir à l'esprit. En tout cas, pas aussi directement.

    C'est ce genre de déduction fallacieuse qui a engendré un jour l'affaire des pilotes d'impressions unifiés Samsung sous Linux, qui a fini par faire le tour du monde.

    D'une manière générale, il faut garder à l'esprit qu'un programme « ne passe pas root » et ne peut pas le faire. Il doit être lancé par un processus qui l'est et, en principe, c'est à l'utilisateur de le faire manuellement, et donc en toute connaissance de cause.

    Le problème, c'est que depuis sudo et certains bureaux tels que GNOME, certaines applications sont conçues pour inviter l'utilisateur à saisir son mot de passe pour lancer sudo à la main et rappeler l'application. C'est une faille assez critique, car elle est autant technique que sociale : d'abord parce que la chaîne de processus entre la boîte de dialogue et l'application effectivement lancée en root est généralement très mal sécurisée. Ensuite, parce que c'est une très mauvaise idée de faire prendre l'habitude à l'utilisateur de saisir son mot de passe à tout bout de champ : au bout de la quinzième fois, il suffit d'ouvrir une fausse boîte pour que celui-ci le rentre machinalement et hop, on pirate une machine sans effraction.

    Le meilleur comportement à adopter, donc, est de considérer au niveau du programme qu'une donnée sera toujours lisible, et de faire échouer l'application dans le cas contraire. Tu peux éventuellement ajouter un message « need to be root » dans ce cas — et encore — mais certainement pas demande à se faire filer le mot de passe pour faire le travail soi-même.

Discussions similaires

  1. aide moi svp:lancer une commande en mode root
    Par mahmecha dans le forum Général Java
    Réponses: 3
    Dernier message: 28/06/2010, 16h24
  2. Deplacement de /root - impossible de lancer une commande
    Par photorelief dans le forum Solaris
    Réponses: 2
    Dernier message: 18/01/2010, 23h33
  3. lancer une commande avec un user autre que root
    Par rootdaoud dans le forum Unix
    Réponses: 2
    Dernier message: 26/03/2008, 16h43
  4. Lancer une commande en C.
    Par ronan99999 dans le forum Windows
    Réponses: 2
    Dernier message: 26/07/2004, 16h25
  5. Réponses: 1
    Dernier message: 30/04/2004, 11h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo