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 29/04/2019, à 14:22

DonutMan75

[RESOLU] Execution script après login

Bonjour à tous,
je souhaiterais que le script mon_script.sh soit exécuté automatiquement lors du login de tous les utilisateurs.
Ceci devrait être totalement transparent et, surtout, non modifiable par les utilisateurs.

Contexte : dans le cas d'un serveur ssh, je souhaiterais que ce dernier m'envoie un petit mail lors d'une connection (pas plus d'une ou deux connections par semaine). Idéalement même les échecs de connections devraient être transmis... Je pourrais ensuite enjoliver le tout pour recevoir des mails du type

connection utilisateur TOTO depuis l'IP XXX.XXX.XXX.XXX, date : 28 avril 2019, 16h34

- Modifier les bashrc n'est pas idéal puisque les utilisateurs pourraient le voir et (pire) le modifier..
- Modifier /etc/profile est un peu mieux mais on est toujours shell-dependant ?
- Modifier /etc/passwd pour pointer vers un executable qui lancerait mon_script PUIS bash est un peu trop compliqué (et il doit y avoir plus propre non ?)
- Eventuellement, il y a le force command de ssh pour executer un truc du style "mon_script.sh & /bin/bash" mais du coup, je perds la possibilité de faire par exemple "ssh mon_serveur whoami"
- Sinon j'ai aussi vu qu'on pouvait lancer des trucs dans /etc/sshrc mais est-ce vraiment l'endroit ? (d'après la doc, c'est plus l'endroit pour initialiser des variables d'environnement perso et surtout la doc indique qu'il peut être by-passé par ~/.ssh/sshrc....)
- Je me renseigne du côté de loginctl et logind.conf mais je ne retrouve pas mes petits...

Merci d'avance pour vos retours et désolé si c'est un sujet redondant (mais je n'ai rien trouvé de concluant sur le forum... hmm)

Donut

Dernière modification par DonutMan75 (Le 03/05/2019, à 06:17)

Hors ligne

#2 Le 29/04/2019, à 15:14

erresse

Re : [RESOLU] Execution script après login

Bonjour,
Tu peux peut-être placer un script dans "/etc/profile.d" pour qu'il s'exécute lors du login d'un utilisateur et, comme ce répertoire est système, il ne serait pas modifiable par l'utilisateur (pour autant que ce dernier ne dispose pas de "sudo" évidemment).
Il semble que le script "/etc/profile" examine si des scripts personnalisés existent dans "/etc/profile.d/*.sh" et les exécute si c'est le cas.


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois le problème solutionné, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#3 Le 29/04/2019, à 15:21

DonutMan75

Re : [RESOLU] Execution script après login

Bonjour erresse,
merci pour ton retour, je vais faire des tests dans ce sens là !
Je suis également en train de regarder la doc de systemd (et notamment la création de services "one shot"), mais je n'arrive pas à trouver le paramètre qui dirait au système "exécute ce service au moment du login de l'utilisateur"...
Je vous tiens au courant, quoiqu'il en soit merci pour ton retour smile

Donut

Hors ligne

#4 Le 30/04/2019, à 14:57

DonutMan75

Re : [RESOLU] Execution script après login

Re-bonjour à tous,
premier test avec la suggestion de erresse :

$ more /etc/profile.d/donut_login.sh 
echo "$(whoami) vient de se connecter depuis $SSH_CONNECTION : $(date)" >> /tmp/testlogin

Auquel cas, et pour peu que /tmp/testlogin soit accessible en écriture par tout le monde, j'obtiens bien les infos que je souhaite :

$ cat /tmp/testlogin
donut vient de se connecter depuis 192.168.0.1 50216 192.168.0.2 22 : mardi 30 avril 2019, 15:45:51 (UTC+0200)
test vient de se connecter depuis 192.168.0.1 50218 192.168.0.2 22 :  mardi 30 avril 2019, 15:45:58 (UTC+0200)

Reste à faire une petite fonction qui envoie un mail au lieu d'écrire dans /tmp/testlogin

Toutefois, je vois deux limites à cette méthode :

1) on ne détecte que les login réussis (notamment j'aimerais savoir quand quelqu'un tente un ssh admin@mon_serveur, par exemple)

2) on passe à côté si on bypass le login shell, ce qui arrive si on fait :

$ ssh mon_serveur whoami
$ rsync mon_serveur:/repertoire/a/sauvegarder/ /mon_backup/

Enfin en tout cas, j'avance smile
Si vous avez des idées/suggestions, je suis preneur !

Donut

P.S : j'ai épluché la doc de systemd. Y'a encore plein de trucs qui me paraissent un peu flous, mais à aucun moment j'ai vu qu'on pouvait lancer un script one-shot après le login.... sad

Hors ligne

#5 Le 30/04/2019, à 15:18

DonutMan75

Re : [RESOLU] Execution script après login

Tiens, une autre solution que je n'avais pas envisagée..
A creuser....

http://blog.th-neumeier.de/2011/02/send … using-pam/

Donut

Hors ligne

#6 Le 01/05/2019, à 13:48

LeoMajor

Re : [RESOLU] Execution script après login

bonjour,

autre variante;

apt-file search pam_mail.so
libpam-modules: /lib/x86_64-linux-gnu/security/pam_mail.so

man pam_mail

si tu as un MTA local

Hors ligne

#7 Le 03/05/2019, à 06:17

DonutMan75

Re : [RESOLU] Execution script après login

Bonjour Leomajor,
super ! merci pour cette idée, ça semble parfaitement répondre à mon besoin !
Je vais potasser la doc.

Bonne journée à tous !

D.

Hors ligne