#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... )
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
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
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....
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