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

Python Discussion :

Savoir si on est en mode Super Utilisateur


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut Savoir si on est en mode Super Utilisateur
    Bonjour,
    tout est dans le titre. Comment peut-on savoir si le script Python a été lancé ou non en mode Super Utilisateur ?

    Existe-t-il une solution marchant sous Linux, Windaube et Mac O$ ?

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Sous les U*X, le group id devrait donner l'information.

    Pour Windows et les modèles de sécurité "modernes", le droit adhoc a été donné ou pas à l'utilisateur, au process,...
    Dans ce cas, vous avez aussi une primitive système permettant de savoir si vous avez le droit d'accès/modification de l'objet X.
    Normalement, try...except... et un message d'erreur "suffisent".

    Pourquoi voulez vous faire plus que "good enough"?
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre Expert Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Par défaut
    Sous linux/unix/macOsX, tu vas avoir l'info via os.getuid.

    Mais attention : 'super utilisateur', c'est vague. Sous MacOSX, beaucoup de taches d'administration se font sous le username 'admin' et pas forcément 'root'.

    De plus, getuid te retourne un entier : 0 pour root, mais pour admin ? (pas de macosx sous la main, là, tout de suite). Si, pour admin, ça peut varier d'une machine à l'autre, il te faudra faire l'association entre le no retourné et le username 'admin'

    Et comment réagit os.getuid lors d'un lancement via "sudo" ? faut essayer

    sous ubuntu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    plx@satellite:~$ more getuid.py
    import os
    print os.getuid()
    plx@satellite:~$ 
    plx@satellite:~$ python getuid.py 
    1000
    plx@satellite:~$ id
    uid=1000(plx) gid=1000(plx) groupes=1000(plx),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),110(lpadmin),123(sambashare)
    plx@satellite:~$ 
    plx@satellite:~$ sudo python getuid.py 
    [sudo] password for plx:
    0
    plx@satellite:~$

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,
    Citation Envoyé par plxpy Voir le message
    Mais attention : 'super utilisateur', c'est vague. Sous MacOSX, beaucoup de taches d'administration se font sous le username 'admin' et pas forcément 'root'.
    Sous UNIX/Posix le super user est root et son (uid, gid) est (0, 0).
    Tout le reste est "customisé" en fonction de la distro (OSX est un parent lointain de BSD) ou d'un historique de la "sécurité" spécifique à chaque client.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Dans les linux traditionnels, root a un uid de 0. Mais il me semble que dans les OS actuels, la mode est plutôt à attribuer ou pas les privilèges d'administrateur à un utilisateur "normal". Ce qui explique que sous Windows, Linux Ubuntu (et dérivés) et Mac OX X, les tâches d'administrations ne demande que le mot de passe utilisateur.

    Sous Ubuntu, je crois que les privilèges administrateur sont donnés à un utilisateur "normal" par son appartenance au groupe "sudo", et c'est le fichier /etc/sudoer qui définit les droits.

    Avec Ubuntu, il faudrait donc tester si l'utilisateur est soit root (qui peut exister sous Ubuntu), soit appartient au groupe sudo.

    Pour Windows ou Mac OS X je ne sais pas, mais il y a peut-être des astuces similaires.

  6. #6
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonsoir,

    Pourquoi ne pas tester "l'interdit" ?
    touch /root/test.txt
    touch: impossible de faire un touch «/root/test.txt»: Permission non accordée
    Il suffit de définir ce qui est 'only root' pour chaque système et try/except passeras très bien (Bien que... sudo rm /root/test.txt).

    @+

  7. #7
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    Merci pour vos réponses.

    Citation Envoyé par wiztricks Voir le message
    Normalement, try...except... et un message d'erreur "suffisent". Pourquoi voulez vous faire plus que "good enough"?
    A la base je cherchais une méthode propre en espérant qu'un module ad hoc proposerait cela.

    Citation Envoyé par PauseKawa Voir le message
    Pourquoi ne pas tester "l'interdit" ?

    Il suffit de définir ce qui est 'only root' pour chaque système et try/except passeras très bien (Bien que... sudo rm /root/test.txt).
    Pas idiot car là on peut passer par subprocess pour voir si une erreur est renvoyée. Dans ce cas, quelle commande interdite et non invasive peut-on utiliser sous Windaube ? Cette question m'intéresse même si j'ai dû opter pour des try... except... en particularisant mes messages d'erreur ce qui est pénible à gérer.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/08/2007, 08h27
  2. Savoir si le kernel est en mode multicast
    Par lia dans le forum Administration système
    Réponses: 4
    Dernier message: 09/07/2006, 01h16
  3. Comment savoir si on est en Mode ajout ?
    Par GERO99 dans le forum Access
    Réponses: 3
    Dernier message: 11/05/2006, 10h00
  4. Réponses: 1
    Dernier message: 22/04/2006, 16h26

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