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

Langage C++ Discussion :

Vérifier la possession de droits administrateur sous Linux


Sujet :

Langage C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 36
    Par défaut Vérifier la possession de droits administrateur sous Linux
    Salut à tous

    Je voudrais savoir comment faire pour que mon application (sous Linux) vérifie qu'elle a les droits administrateur. J'ai pensé à utiliser la fonction getuid() pour vérifier si l'UID est à 0 mais je pense qu'il y a un moyen plus propre de faire la vérification.

    D'avance merci

  2. #2
    Membre chevronné Avatar de Jenna
    Inscrit en
    Décembre 2009
    Messages
    272
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Décembre 2009
    Messages : 272
    Par défaut
    pourquoi ? c'est propre getuid().

  3. #3
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 487
    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 487
    Par défaut
    +1 pour Jenna.

    Cela dit, pourquoi as-tu besoin de faire cela ? Il n'y a pas de « droits administrateur » à proprement parler sous Unix. Il y a root qui a tous les pouvoirs sans exception, et les utilisateurs ordinaires. La distribution des droits se fait alors à l'aide des droits sur les fichiers ordinaires ou spéciaux car, sous Unix, « tout est fichier » (enfin, en principe, parce qu'avec le temps et les différents systèmes environnements tel que GNOME qui veulent tous vivre leur vie, le paradigme est de moins en moins suivi).

    Par contre, « root » n'est absolument pas la même chose que le compte « Administrateur » de Windows.

    Enfin, il est très rare que l'application ait à vérifier elle-même si elle a le droit ou pas d'accéder à une ressource. C'est quelque chose qui doit être complètement indépendant et relever de l'administration du système. Heureusement car, dans le cas contraire, cela voudrait dire que la gestion des droits est consultative et qu'il suffirait d'écrire une application C pour les contourner.

    Cela signifie également que tu risques d'empêcher l'utilisateur d'utiliser ton application dans des situations légitimes si tu ne les as pas explicitement prévues à l'avance.

    Si tu veux jouer avec getuid(), alors il faut aussi surveiller geteuid(), car c'est le seul état qui soit modifié lors de l'utilisation du « bit setuid » (chmod u+s) sur un exécutable, alors que c'est la manière la plus propre d'autoriser un utilisateur ordinaire de lancer un programme avec des privilèges.

    Dis-nous exactement ce que tu veux faire, histoire que l'on t'oriente vers la meilleure solution.

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par défaut
    Enfin, il est très rare que l'application ait à vérifier elle-même si elle a le droit ou pas d'accéder à une ressource. C'est quelque chose qui doit être complètement indépendant et relever de l'administration du système. Heureusement car, dans le cas contraire, cela voudrait dire que la gestion des droits est consultative et qu'il suffirait d'écrire une application C pour les contourner.
    Euh? Peux-tu t'expliquer? J'ai du mal à comprendre comment le fait qu'une application puisse vérifier si elle a le droit de faire quelque chose lui permettrait de contourner les restrictions...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 487
    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 487
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Euh? Peux-tu t'expliquer? J'ai du mal à comprendre comment le fait qu'une application puisse vérifier si elle a le droit de faire quelque chose lui permettrait de contourner les restrictions...
    C'est un raccourci un peu rapide de ma part, désolé : je voulais dire que si l'application DEVAIT faire elle-même ce genre de contrôles, dans le sens où si le manuel du système spécifiait que l'on devait développer ainsi, cela laisserait à penser que ce contrôle n'est pas fait ailleurs, typiquement en amont, ce qui serait un problème… Ça ne veut pas dire qu'une application n'a pas le droit de faire cette vérification.

    Cela dit, cette situation n'est pas si improbable qu'on le pense. L'exemple le plus flagrant concerne les mandatory locks.

    Il en reste que je suis bien curieux de savoir pourquoi user25 a besoin de savoir à l'avance si l'on est root ou pas, surtout qu'il parle de droits « Administrateur ».

  6. #6
    Membre chevronné Avatar de Jenna
    Inscrit en
    Décembre 2009
    Messages
    272
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Décembre 2009
    Messages : 272
    Par défaut
    Citation Envoyé par Obsidian Voir le message
    Il en reste que je suis bien curieux de savoir pourquoi user25 a besoin de savoir à l'avance si l'on est root ou pas, surtout qu'il parle de droits « Administrateur ».
    Peut être par exemple pour permettre à une application d'avoir un comportement différent suivant que le setuid bit est positionné ou non.

    S'il est positionné et que j'ai hérité des droits root, j'ai le droit de faire cela, s'il n'est pas positionné et que je ne suis pas root, je ne le fait pas ou j'affiche un message d'erreur ou encore je n'active pas le menu "Administration". C'est un exemple.

Discussions similaires

  1. Les droits sous linux.
    Par fred61 dans le forum Administration système
    Réponses: 6
    Dernier message: 13/06/2008, 17h38
  2. Réponses: 3
    Dernier message: 06/04/2007, 15h34
  3. [Droit sous linux]
    Par Gaaaga dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 18/05/2006, 16h31
  4. change administrateur sous linux
    Par jean christophe dans le forum Requêtes
    Réponses: 4
    Dernier message: 19/04/2004, 10h46
  5. Réponses: 5
    Dernier message: 06/03/2003, 13h27

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