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

Shell et commandes GNU Discussion :

Script expiration du mot de passe


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2013
    Messages : 3
    Par défaut Script expiration du mot de passe
    Bonjour à tous,
    je me permets de vous solliciter ce matin car je cherche à faire un script shell qui me permettrait de gérer l'expiration des mots de passe.
    Ce que je voudrais faire, c'est un script qui change le mot de passe d'un utilisateur lorsque le mot de passe est expiré.

    Pour le moment, je patauge un peu...

    Je cherche et j'essaie des choses mais sans succès donc j'ai besoin de votre aide

    Merci.

  2. #2
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 288
    Par défaut
    Bonjour

    Je ne pense pas que ça existe nativement.

    Si le but est de forcer l'utilisateur à changer de mot de passe, man passwd donnera toutes les indications nécessaires.

    Si c'est pour forcer le changement à l'insu de l'intéressé, il faudra le faire à la main.
    Soit en étant présent, soit par un cron job.

    Pour le script proprement dit, pourquoi ne pas récupérer la date par un passwd -S ?
    Si l'expiration a eu lieu, on change le mot de passe.

  3. #3
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2013
    Messages : 3
    Par défaut
    Bonjour,

    en fait le but c'est que nous utilisons une solutions de déploiements automatisés des applications et lors de ces déploiements nous nous servons des comptes applicatifs pour effectuer des actions mais si le compte est expiré, le déploiement plante.
    Le but c'est de jouer un script de vérification de l'expiration des comptes pendant le déploiement afin de changer le mot de passe du compte expiré si il y a besoin afin de ne pas faire planté le déploiement.
    Nous ne nous connectons jamais sur les machines.

    J'ai déjà un script qui me permet de changer le mot de passe d'un compte mais ce script ne me permet pas vérifier si le compte est expiré ou non.

  4. #4
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 288
    Par défaut
    L'expiration provoque le plantage. Donc tu veux réactiver tous les comptes existant le temps du déploiement.
    Tous les comptes n'ont pas forcément de mot de passe.

    As-tu fais la liste des comptes et leur bilan pour le mot de passe?

    Voici ce que j'ai fait ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    cut -d':' -f1 /etc/passwd |xargs -ITT passwd -S TT
    root P 08/30/2012 0 99999 7 -1
    daemon L 08/30/2012 0 99999 7 -1
    bin L 08/30/2012 0 99999 7 -1
    sys L 08/30/2012 0 99999 7 -1
    sync L 08/30/2012 0 99999 7 -1
    (...)

  5. #5
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2013
    Messages : 3
    Par défaut
    En fait ça dépend des machines, des projets pour les comptes.
    Concernant le mot de passe, si ils ont tous un mot de passe avec une date d'expiration.

    Cette commande "cut -d':' -f1 /etc/passwd |xargs -ITT passwd -S TT" te donne effectivement des infos sur le compte du user, notamment la date de création du user ou le nombre de jours max durant lequel le mot de passe est valide mais pour que je puisse vérifier si le compte est expiré ou non, il faudrait que j'arrive à sortir la date à laquelle le compte arrive à expiration au format dd/mm/aaaa pour le comparer à la date du jour.

    Pour ce qui est de faire le bilan des comptes sur les machines ça me parait impossible avec environ 1500 serveurs... C'est pour cela qu'un script serait idéal

  6. #6
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 288
    Par défaut
    Il n'a jamais été question de le faire à la main.

    Ensuite, tu n'as pas lu. La date n'est pas la date de création de compte mais la date de dernière modification de mot de passe.
    D'autre part, il est plus pratique d'utiliser le nombre de secondes depuis l'epoch pour comparer deux dates que la date au format que tu cites.

    En ajoutant le nombre de jours avant expiration, tu obtiens ton resultat. Il ne reste plus qu'à comparer deux dates.

    Exemple des techniques:

    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
    26
    27
    28
    #/bin/bash
     
    # Date du jour
    date_aujourdhui=$( date +"%s")
     
    # Extraction des infos de date du mot de passe:
    read -a infos_date_mdp < <( passwd -S )
     
    # Repartition du resultat:
    date_depart=${infos_date_mdp[2]}
    jours_valides=${infos_date_mdp[4]}
     
    if [ "$jours_valides" = "99999" ]
    then 
        echo "compte valide! (99999)"
    else
        # Calcul date expiration
        date_expiration=$( date --date="$date_depart $jours_valides days" +"%s" )
     
        echo "De "$date_depart" pendant "$jours_valides" jours jusqu'à "$date_expiration" (aujourd'hui = "$date_aujourdhui")"
     
        if [ $date_expiration -le $date_aujourdhui ]
        then
    	echo "compte expiré!"
        else
    	echo "compte valide!"
        fi
    fi

Discussions similaires

  1. Script identification utilisateur/mot de passe
    Par Rony Rauzduel dans le forum Langage
    Réponses: 8
    Dernier message: 12/03/2013, 15h22
  2. Problème script vbs changement mot de passe
    Par doomhammer dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 12/09/2012, 17h39
  3. Prevenir une expiration de mot de passe.
    Par jmjmjm dans le forum Développement
    Réponses: 0
    Dernier message: 05/01/2011, 11h17
  4. [SAMBA + OpenLDAP] Expiration des mots de passe de clients Linux
    Par slymira dans le forum Administration système
    Réponses: 1
    Dernier message: 09/11/2010, 21h58
  5. Script rman sans mot de passe
    Par antarus74 dans le forum Recovery Manager
    Réponses: 0
    Dernier message: 08/05/2009, 19h01

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