Une commande très puissante et cool dans Bash est l'histoire. En termes simples, par défaut, Bash stockera un historique de toutes les commandes que vous tapez. La valeur de la variable HISTSIZE détermine le nombre d'événements conservés dans l'historique au cours d'une session. Bien que la valeur par défaut de HISTSIZE soit 500, vous souhaiterez peut-être la définir sur une valeur plus pratique, telle que 10000. Lorsque vous quittez le shell, les commandes les plus récemment exécutées sont enregistrées dans le fichier fourni par la variable HISTFILE (la valeur par défaut est .bash_history dans votre répertoire personnel). Cet article décrit les étapes pour enregistrer l'historique des commandes d'un utilisateur spécifique sous Linux.
1. Créez un nouveau moniteur de groupe. Ajouter des utilisateurs doit être surveillé en tant que groupe secondaire.
# groupadd monitor # usermod -a -G monitor [user]
Par exemple :
# usermod -a -G monitor opc # id opc uid=1000(opc) gid=1000(opc) groups=1000(opc),1002(admins),1003(monitor)
2. Créez le répertoire /var/log/shelllogs où l'historique du shell sera sauvegardé.
# mkdir /var/log/shelllogs # chown root:monitor /var/log/shelllogs # chmod 770 /var/log/shelllogs # chmod +t /var/log/shelllogs
3. Créez un script dans /etc/profile.d avec un format d'historique modifié afin qu'il soit exporté à chaque connexion de l'utilisateur.
# cat /etc/profile.d/history.sh export HISTSIZE=10000 export HISTTIMEFORMAT='%F %T ' export HISTFILE=/var/log/shelllogs/$(who am i | awk '{print $1}';exit)-as-$(whoami)-$(date +%F-%T) export PROMPT_COMMAND='history -a'
4. Modifiez /etc/bashrc et ajoutez la ligne suivante à la fin du fichier.
test "$(ps -ocommand= -p $PPID | awk '{print $1}')" == 'script' || (script -f /var/log/shelllogs/$(who am i | awk '{print $1}';exit)-as-$(whoami)-$(date +%F-%T)_console.log)
Connectez-vous au même serveur via une autre session ssh/putty pour vous assurer que les fichiers sont en cours de création.