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 :

Authentification sous python


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 327
    Par défaut Authentification sous python
    Bonjour a tous,

    Voila, comme son nom l'indique, je cherche à créer un script d'authentification sous linux via python, le pincipe est simple : la machine lance au démarrage du système le script python demandant les identifiants et mot de passe, mais voila, je n'arrive absolument pas à savoir commen m'y prendre.

    Au départ, j'ai pensé vérifier manuellement les fichiers /etc/passwd et /etc/shadow, mais les passwords sont codés et je ne sais pas en quoi :S
    Je me suis également dit qu'aller verifier obligerai mon script a être administrateur et donc pourait comporter, je pense, des risques de sécrité

    Enfin bref, si vous avez la moindre idée de comment je pourrai commencer mon script, je suis à votre entière disposition...

    Merci d'avance à tous

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 159
    Par défaut
    Salut,
    Si je devais faire ça, je suppose que je jetterais un coup d'œil sur le module python pam.

  3. #3
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 327
    Par défaut
    Je viens de voir le site de python pam, d'après la description, tout correspond à mes attentes.

    Je vais regarder, faire des tests et je vous tiens au courant si tout est exact

    Merci beaucoup à vous...

  4. #4
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 327
    Par défaut
    Re bonjour,

    Alors je n'ai pas trouvé sa directement sur le site de pam, mais il est vrai qu'avec les bons mots clé, sa peut aider, j'ai trouvé ce petit script qui vérifie juste les identifiants et renvoie tru si c'est okai:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    import pexpect
    def pam(username, password):
            '''Accepts username and password and tried to use PAM for authentication'''
            try:
                    child = pexpect.spawn('/bin/su - %s'%(username))
                    child.expect('Password:')
                    child.sendline(password)
                    result=child.expect(['su: Authentication failure',username])
                    child.close()
            except Exception as err:
                    child.close()
                    print ("Error authenticating. Reason: "%(err))
                    return False
            if result == 0:
                    print ("Authentication failed for user %s."%(username))
                    return False
            else:
                    print ("Authentication succeeded for user %s."%(username))
                    return True
     
    if __name__ == '__main__':
            print pam(username='user',password='pass')
    Merci, si vous avez d'autres idées, d'autres scripts, n'hésitez pas à le rajouter en dessous.

    Merci encore valAa

  5. #5
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 327
    Par défaut
    Bonsoir,

    Désolé de vous redéranger, malheureusement, j'ai un petit soucis, le script ci-dessus permet de vérifier que l'athentification est éxacte mais mon problème reste le meme.

    Je m'explique, mon but était donc de créer un script d'authentification au lancement de la machine, mais lorsque je lance le script, une fois qu'il a vérifié que l'authentification était possible, il ne me lance pas les sous-processus avec le nouvel utilisateur, du coup, sa continue a lancer mes proc en mode système.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    import pexpect
    import os
    def pam(username, password):
            '''Accepts username and password and tried to use PAM for authentication'''
            try:
                    child = pexpect.spawn('/bin/su - %s'%(username))
                    child.expect('Password:')
                    child.sendline(password)
                    result=child.expect(['su: Authentication failure',username])
                    child.close()
            except Exception as err:
                    child.close()
                    print ("Error authenticating. Reason: "%(err))
                    return False
            if result == 0:
                    print ("Authentication failed for user %s."%(username))
                    return False
            else:
                    print ("Authentication succeeded for user %s."%(username))
                    return True
     
    os.system("test.py")
    pam(username='user',password='pass')
    os.system("test.py")
    Le test.py :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    import os
    print os.getlogin()
    Au final:
    >> root
    >> root <- Il me faudrai "user"
    Comment peut on lancer la commande sous un autre utilisateur, faut-il partir du pexpect crée ?

    Merci

  6. #6
    Membre Expert
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 941
    Par défaut
    essaie avec os.seteuid()

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

Discussions similaires

  1. [phpMyAdmin] problème d'authentification sous PhpMyAdimin 2.9.0.2
    Par legrec dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 19/10/2006, 13h59
  2. [10g] Authentification sous DBConsole
    Par guigui_cwoco dans le forum Oracle
    Réponses: 1
    Dernier message: 29/05/2006, 18h30
  3. Fonction addslashes sous Python ?
    Par ecocentric dans le forum Général Python
    Réponses: 2
    Dernier message: 28/01/2006, 18h27
  4. Existe-t-il un rad sous python?
    Par sloshy dans le forum EDI/RAD
    Réponses: 6
    Dernier message: 03/10/2005, 09h26
  5. Avertissement authentification sous ssh
    Par jean-jacques varvenne dans le forum Réseau
    Réponses: 5
    Dernier message: 12/01/2005, 15h50

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