Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 19/07/2012, à 20:06

Arfghl

Execution lors d'une erreur de login

Bonsoir,

Je souhaiterais executer un script bash lorsque l'utilisateur se trompe de mot de passe lorsqu'il souhaite se logguer.
Je n'ai pas trouvé d'option possible à l'aide de crontab pour réaliser ceci et je ne vois pas vraiment comment capturer l'évènement "erreur de login".
Si vous avez des idées je suis preneur smile

Bonne soirée wink

Hors ligne

#2 Le 19/07/2012, à 20:37

Spitfire 95

Re : Execution lors d'une erreur de login

Regarde les codes du sudo tu trouveras peut-être quelque chose du coté de l'option insults du sudoers.


Trisquel GNU/Linux 6.0 / Fedora 19 & rawhide.
joueur ryzom et wesnoth
Développeur livewallpaper
Membre déserteur et traître de la brigade des S.

Hors ligne

#3 Le 19/07/2012, à 20:38

Haleth

Re : Execution lors d'une erreur de login

Si c'est avec sudo, tu peux vérifier le code de retour ($?)
Si c'est plus général, regarde PAM


Ubuntu is an ancien African word which means "I can't configure Debian"

Because accessor & mutator are against encapsulation (one of OOP principles), good OOP-programmers do not use them. Obviously, procedural-devs do not. In fact, only ugly-devs are still using them.

Hors ligne

#4 Le 19/07/2012, à 20:41

Spitfire 95

Re : Execution lors d'une erreur de login

Haleth a écrit :

Si c'est avec sudo, tu peux vérifier le code de retour ($?)

Après les trois essais de mot de passe, $? retournera normalement l'erreur. Mais si on veut relever l'erreur si on se trompe à un essai, je doute qu'on puisse en tirer quelque chose.


Trisquel GNU/Linux 6.0 / Fedora 19 & rawhide.
joueur ryzom et wesnoth
Développeur livewallpaper
Membre déserteur et traître de la brigade des S.

Hors ligne

#5 Le 19/07/2012, à 20:53

Arfghl

Re : Execution lors d'une erreur de login

Je ne connaissais pas insults de sudoers, c'est assez désopilant smile
Mais apparemment les insultes sont codées en dur dans l'executable hmm
Du coup executer un autre quelconque script me semble quelque peu difficile non ?

Hors ligne

#6 Le 19/07/2012, à 23:42

nesthib

Re : Execution lors d'une erreur de login

Alors ce que tu cherches à faire, si tu parles bien de la connexion d'un utilisateur (login) et non de l'augmentation de privilèges (via sudo), n'a rien à voir avec avec sudo et encore moins avec crontab.
Les connexions échouées sont notifiées dans /var/log/auth.log, dont tu peux suivre l'évolution avec :

tail -f /var/log/auth.log

lors d'une erreur de connexion, tu devrais voir apparaître une ligne du style :

date … FAILED LOGIN (1) on '…' FOR '…', Authentication failure

un exemple rapide :

while read line;
do
  grep -q 'FAILED LOGIN' && echo 'attention connexion échouée'
done < <(tail -n0 -f /var/log/auth.log)

Dernière modification par nesthib (Le 19/07/2012, à 23:45)


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#7 Le 19/07/2012, à 23:45

Haleth

Re : Execution lors d'une erreur de login

Exec du code en fonction des logs, c'est une bonne idée
Tu peux regarder du coté d'inotify pour faire une attente passive sur le fichier


Ubuntu is an ancien African word which means "I can't configure Debian"

Because accessor & mutator are against encapsulation (one of OOP principles), good OOP-programmers do not use them. Obviously, procedural-devs do not. In fact, only ugly-devs are still using them.

Hors ligne

#8 Le 19/07/2012, à 23:46

nesthib

Re : Execution lors d'une erreur de login

j'ai ajouté un exemple de mise en œuvre ci dessus.


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#9 Le 30/07/2012, à 17:39

Arfghl

Re : Execution lors d'une erreur de login

Merci pour votre aide c'est exactement ce que je voulais.
Je ne connaissais pas l'existence de ce fichier de log smile
D'après ce que j'ai compris PAM est utilisé par LightDM lors d'une notification de login (Je suis sous Ubuntu12.04)
J'ai donc téléchargé les sources de PAM à cette adresse: http://linux-pam.org/library/
Et j'essaie de voir à quel moment PAM écrit dans le fichier /var/log/auth.log afin de le modifier
Ma démarche est-elle correcte ?

Hors ligne

#10 Le 30/07/2012, à 18:19

nesthib

Re : Execution lors d'une erreur de login

Étant donné ce que tu cherches à faire au post #1, je ne vois pas ce que vient faire PAM et encore moins ses sources ici.
Si tu veux lancer un script en cas d'échec de connexion utilise l'exemple que je t'ai donné. Au lieu du « echo … » lance le script…

while read line;
do
  if grep -q 'FAILED LOGIN' <<<${line}
  then
    utilisateur=$(sed "s/.* FOR '\([^']*\)'.*/\1/" <<<${line})
    echo "attention connexion échouée pour ${utilisateur}"
    echo "on lance une commande"
    ma_commande avec des arguments et même que si je veux je peux utiliser la variable ${utilisateur}
  fi
done < <(tail -n0 -f /var/log/auth.log)

sinon, essaie de préciser ce que tu cherches à faire.

NB. utilisateur contiendra UNKNOWN en cas de mauvais nom d'utilisateur, tu peux donc rajouter un test là dessus.


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#11 Le 30/07/2012, à 18:38

Arfghl

Re : Execution lors d'une erreur de login

Oui ton programme correspond à ce que je souhaiterais faire.
Il me resterait simplement qu'à l'executer à chaque modification du fichier /var/log/auth.log.
Mais j'aurais aimé aller plus loin en modifiant directement le programme qui écrit dans ce fichier auth.log en y incorporant mon script ?
Est-ce possible ?

Hors ligne

#12 Le 30/07/2012, à 19:05

nesthib

Re : Execution lors d'une erreur de login

Je crois que tu ne fais pas bien attention et que tu n'as pas testé mon script… Il fait exactement ce que tu demandes dans ton dernier post, nul besoin de surveiller les modifications du fichier de log, c'est déjà ce qu'il fait. Pour t'en rendre compte je te suggère de le laisser tourner (enlève la ligne avec ma_commande) dans un terminal et de simuler des échecs de connexion en console (ctrl+alt+F1 ; ctrl+alt+F7 pour revenir en graphique).

Modifier le programme qui écrit dans le fichier de log est possible (tout est possible) mais c'est une extrêmement mauvaise idée, car tu risques de tout casser, d'introduire des bugs. De surcroît tu auras à recompiler ton binaire et c'est beaucoup moins portable qu'un simple script.

Maintenant, si quelque chose ne te conviens pas avec mon exemple, je te suggère d'expliquer précisément ce que tu cherches à faire (quel script veux-tu lancer en cas d'échec de connexion ? pourquoi ?) pour que l'on puisse t'aider au mieux.


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#13 Le 30/07/2012, à 19:27

Arfghl

Re : Execution lors d'une erreur de login

Ha désolé je n'avais en effet pas bien compris ton programme notamment l'option -f de tail x]
Je n'ai jamais recompiler un binaire et cela me semblait être une bonne occasion pour tester cela tout simplement wink
Je vais donc tester de ce pas smile

Hors ligne

#14 Le 30/07/2012, à 21:44

nesthib

Re : Execution lors d'une erreur de login

Si tu veux compiler pour t'amuser et apprendre, je t'encourage à le faire. En revanche je maintiens qu'en pratique c'est une très mauvaise solution pour ce que tu cherches à faire wink
Pour récupérer les sources d'un paquet tu peux utiliser la commande « apt-get source … », ce qui sera préférable puisque tu auras aussi tout ce qu'il faut pour construire le paquet et installer ton programme proprement.

Afin de garder une cohérence dans ce fil, je te conseille (si tu estimes ton premier problème résolu) de modifier ton premier message pour ajouter [résolu] au début du titre et d'ouvrir un nouveau fil dans Développement et programmation. Si tu le souhaites tu peux mettre ici un lien vers le nouveau fil.


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne