Exécuter un Script Bash automatiquement lors de la connexion
J'ai écrit un script qui envoie la date et le nom d'utilisateur de la personne qui se connecte à un fichier journal pour garder une trace de qui a ouvert une session. Je me demande comment pouvez-vous définir ce script à exécuter automatiquement lorsqu'un utilisateur se connecte plutôt que d'avoir à l'exécuter manuellement dans le terminal. REMARQUE: le nom d'utilisateur est l'utilisateur actuel est connecté.
mon code:
#!/bin/bash
printf "$(date) $HOSTNAME booted!\n" >> /home/USERNAME/boot.log
Existe-il des considérations de sécurité? Faites-vous confiance à l'utilisateur? En particulier, est-il si l'utilisateur a la possibilité de désactiver la journalisation, ou de falsifier un enregistrement existant de ses connexions?
OriginalL'auteur Jason Gagnon | 2012-03-12
Vous devez vous connecter pour publier un commentaire.
Une façon plus élégante de résoudre ce problème est de lire des fichiers de log qui sont déjà écrites et ne peut pas être modifié par l'utilisateur. Personne ne peut dire mieux que Bjørne Malmanger dans sa réponse:
Une belle façon de le faire est le
last
de commande, qui est grande, car il a soigneusement affiche toutes les connexions: Graphique, la console et le SSH.Moins élégant, mais encore sûr moyen est de faire un grep sur /var/log/auth.journal. Sur mon Gnome/Ubuntu système, je peux l'utiliser pour suivre graphique connexions:
Le bon modèle pour votre machine doit être trouvé pour chaque type de connexion: graphique, la console et le SSH. C'est gênant, mais vous pourriez avoir besoin de le faire si vous avez besoin d'informations qui va de plus à l'arrière de
last
atteint.Pour répondre directement à votre question:
Vous pouvez modifier le script de ce genre pour obtenir le nom d'utilisateur
Et ajoutez cette ligne à /etc/profile
Ce n'est pas bien sûr, car l'utilisateur sera en mesure de modifier son propre journal
Bon point. Connaître toutes les alternatives, en dehors de suivi auth.journal?
Je pense que ça marcherait bien dans /etc/profile. Il ne fait que s'exécuter lorsqu'une nouvelle connexion se produit, pas quand un nouveau shell est ouvert.
j'ai trouvé que si vous éditez le/etc / rc.d/rc.script local il permettra l'exécution du script à chaque fois que le système démarre et se connecte.
Grâce gpojd! Autre petit unix sagesse acquise 🙂
OriginalL'auteur cmc
Le mettre dans ~/.bash_profile. Il sera exécuté à chaque fois qu'ils se connectent.
Plus d'informations sont disponibles à les droits de la femme page (c'est à dire
man bash
).OriginalL'auteur gpojd
Pourquoi n'utilisez-vous pas le
last
commande?Je ne ferais pas confiance à l'utilisateur, pour vous DONNER les informations. En tant que root vous PRENDRE 😉
OriginalL'auteur Bjørne Malmanger