Comment voir ce que les utilisateurs font dans Linux
Si vous gérez un serveur Linux, il est bon d’être prêt avec un certain nombre de commandes que vous pouvez utiliser pour vérifier l’activité des utilisateurs – lorsque vos utilisateurs se connectent et à quelle fréquence, à quels groupes ils appartiennent, combien d’espace disque ils consomment, quelle commande ils exécutent, combien d’espace disque ils occupent, s’ils lisent leur courrier et plus encore.
Dans cet article, nous examinerons un certain nombre de commandes qui peuvent vous aider à comprendre qui sont vos utilisateurs et comment ils fonctionnent.
finger
Une commande pratique pour obtenir un profil utilisateur est finger. Il vous permet de voir qui est connecté ou de vous concentrer sur un seul utilisateur pour afficher sa dernière connexion, d’où il s’est connecté, depuis combien de temps il est inactif (depuis qu’il a exécuté une commande), etc. Dans cette commande, nous regardons l’utilisateur nemo.
$ finger nemoLogin: nemo Name: Nemo DemoDirectory: /home/nemo Shell: /bin/bashOn since Fri Jun 19 12:58 (EDT) on pts/1 from 192.168.0.6 7 minutes 47 seconds idleNew mail received Wed Jun 17 18:31 2020 (EDT) Unread since Sat Jun 13 18:03 2020 (EDT)No Plan.
Nous pouvons voir le nom complet, le répertoire personnel et le shell de nemo. Nous pouvons également voir l’activité de connexion et d’e-mail la plus récente de nemo. Les numéros de bureau, de téléphone de bureau et de téléphone à domicile ne sont inclus que s’ils sont définis dans le fichier /etc/passwd dans le champ nom complet. Par exemple:
nemo:x:1001:1001:Nemo Demo,11,540-222-2222,540-333-3333:/home/nemo:/bin/bash).
La sortie ci-dessus indique également que nemo n’a pas de « plan », mais cela signifie simplement qu’il n’en a pas créé.planifier le fichier et y mettre du texte; ce n’est pas du tout inhabituel.
Sans arguments, finger affichera une liste des connexions actuelles dans le format indiqué ci-dessous. Vous pouvez voir quand ils se sont connectés, l’adresse IP à partir de laquelle ils se sont connectés, le pseudo terminal utilisé (par exemple, pts / 1) et combien de temps ils sont inactifs.
$ fingerLogin Name Tty Idle Login Time Office Office Phonenemo Nemo Demo pts/1 1:24 Jun 19 12:58 (192.168.0.6)shs Sandra Henry-Stocker pts/0 Jun 19 12:57 (192.168.0.60
w
La commande w fournit également une liste bien formatée des utilisateurs actuellement actifs, y compris le temps d’inactivité et la commande qu’ils ont exécutée le plus récemment. Il affiche également dans la ligne supérieure combien de temps le système a été en place et fournit des moyennes de charge qui indiquent à quel point le système est occupé. Dans ce cas (0,00 pour les 1, 5 et 15 dernières minutes), le système est en grande partie inactif.
$ w 14:23:19 up 1 day, 20:24, 2 users, load average: 0.00, 0.00, 0.00USER TTY FROM LOGIN@ IDLE JCPU PCPU WHATshs pts/0 192.168.0.6 12:57 0.00s 0.14s 0.01s wnemo pts/1 192.168.0.6 12:58 1:24m 0.03s 0.03s -bash
id
Avec la commande id, vous pouvez afficher l’ID numérique et l’ID de groupe d’un utilisateur ainsi que les groupes dont l’utilisateur est membre. Ces informations sont extraites des fichiers /etc/passwd et /etc/group. Sans arguments, id rapporte les informations de votre compte.
$ iduid=1000(shs) gid=1000(shs) groups=1000(shs),4(adm),11(admin),24(cdrom),27(sudo),30(dip),46(plugdev),118(lpadmin),128(sambashare),500(devops)$ id nemouid=1001(nemo) gid=1001(nemo) groups=1001(nemo),16(fish)
auth.log
Vous pouvez extraire des informations du fichier /var/log/auth.fichier journal avec des commandes comme grep. Pour afficher l’activité de connexion la plus récente à l’aide d’auth.log data, vous pouvez exécuter une commande comme celle-ci:
$ grep "New session" /var/log/auth.log | awk '{print ,,,}' | tail -5Jun 17 17:22:38 shs.Jun 17 17:58:43 gdm.Jun 17 18:09:58 shs.Jun 19 12:57:36 shs.Jun 19 12:58:44 nemo.
last
La dernière commande est probablement la meilleure pour consulter les connexions récentes de tous les utilisateurs ou d’un individu. N’oubliez pas que last affiche en premier l’activité la plus récente car il s’agit de l’information qui intéresse le plus la plupart des administrateurs.
$ last | head -5nemo pts/1 192.168.0.6 Fri Jun 19 12:58 still logged inshs pts/0 192.168.0.6 Fri Jun 19 12:57 still logged inshs pts/0 192.168.0.6 Wed Jun 17 18:10 - 18:42 (00:32)reboot system boot 5.4.0-37-generic Wed Jun 17 17:58 still runningshs pts/2 192.168.0.6 Wed Jun 17 17:22 - 17:57 (00:34)$ last nemo | head -5
nemo pts/1 192.168.0.6 Fri Jun 19 12:58 - 16:21 (03:22)
nemo pts/2 192.168.0.6 Sat Jun 13 17:49 - 19:05 (01:16)
nemo pts/1 192.168.0.6 Thu Jun 4 17:33 - 17:44 (00:10)
nemo pts/1 192.168.0.19 Mon May 11 19:04 - 19:57 (00:52)
nemo pts/1 192.168.0.19 Tue May 5 12:46 - 17:49 (05:02)
du
La commande du rapportera la quantité d’espace utilisée par le répertoire personnel de chaque utilisateur si elle est exécutée sur chaque répertoire dans /home comme ceci:
$ sudo du -sk /home/*289 /home/dorothy116 /home/dory88 /home/eel28 /home/gino28 /home/jadep12764 /home/nemo732 /home/shark418046 /home/shs108 /home/tadpole
Par défaut, les tailles sont indiquées en unités de 1024 octets.
ps et historique
Pour les utilisateurs actuellement connectés, vous pouvez toujours utiliser des commandes comme ps-ef/grep^nemo pour voir quelles commandes et processus un utilisateur est en cours d’exécution. Pour afficher les commandes précédemment exécutées, vous pouvez essayer de consulter les fichiers d’historique des utilisateurs (par exemple, .bash_history), mais notez que les utilisateurs peuvent configurer leurs comptes afin que certaines commandes ne soient pas capturées dans leurs fichiers d’historique, et ils peuvent également modifier ces fichiers s’ils le souhaitent.
comptage des connexions
Si vous souhaitez voir combien de fois chacun de vos utilisateurs s’est connecté depuis la dernière reprise du fichier /var/log/wtmp, vous pouvez utiliser une commande comme celle-ci:
$ for USER in `ls /home`> do> cnt=`last $USER | grep ^$USER | wc -l` # count logins> echo $USER: $cnt # show login count> done
La sortie ressemblera à ceci:
dorothy: 0dory: 0eel: 8gino: 0jadep: 102nemo: 39shark: 50shs: 105tadpole: 0
Si vous souhaitez plus de détails, vous pouvez assembler un script plus complexe qui peut ajouter des informations supplémentaires telles que les détails de connexion et le formatage.
#!/bin/bashsepline="===================="for USER in `ls /home`do len=`echo $USER | awk '{print length()}'` # get length of username echo $USER sep="${sepline:1:$len}" # set separator echo $sep # print separator cnt=`last $USER | grep ^$USER | wc -l` # count logins echo logins: $cnt # show login count last $USER | grep ^$USER | head -5 # show most recent logins echodone
Le script ci-dessus limite les données affichées aux cinq connexions les plus récentes, mais vous pouvez facilement les modifier si vous le souhaitez. Voici comment les données d’un utilisateur seraient formatées:
shs===logins: 105shs pts/0 192.168.0.6 Fri Jun 19 12:57 still logged inshs pts/0 192.168.0.6 Wed Jun 17 18:10 - 18:42 (00:32)shs pts/2 192.168.0.6 Wed Jun 17 17:22 - 17:57 (00:34)shs pts/0 192.168.0.25 Wed Jun 17 17:20 - 17:57 (00:36)shs pts/1 192.168.0.6 Wed Jun 17 15:19 - 17:57 (02:38)
vérification des tentatives sudo
Si vous souhaitez voir si l’un de vos utilisateurs essaie d’utiliser sudo lorsqu’ils ne sont pas configurés pour avoir ce privilège, vous pouvez exécuter une commande comme celle-ci:
$ grep "NOT in sudoers" /var/log/auth.log | awk '{print }'nemo
Si vous avez déjà essayé d’utiliser sudo dans une situation où vous n’êtes pas autorisé à augmenter vos privilèges et que le système vous a menacé avec « le nom d’utilisateur n’est pas dans le fichier sudoers. Cet incident sera signalé: « vous apprécierez peut-être de savoir que cette entrée de journal est l’essence de ce rapport. À moins que l’administrateur ne fasse un effort pour rechercher des transgressions sudo, elles passeront inaperçues.
Récapitulatif
Il existe de nombreuses commandes sur les systèmes Linux qui peuvent vous aider à vérifier l’activité de l’utilisateur. J’espère que certaines de celles présentées dans ce post se révéleront utiles.