Januar 29, 2022

How to see what users are up to in Linux

Wenn Sie einen Linux–Server verwalten, sollten Sie mit einer Reihe von Befehlen ausgestattet sein, mit denen Sie die Benutzeraktivität überprüfen können – wann und wie oft sich Ihre Benutzer anmelden, welchen Gruppen sie angehören, wie viel Speicherplatz sie belegen, welchen Befehl sie ausführen, wie viel Speicherplatz sie belegen, ob sie ihre E-Mails lesen und vieles mehr.

In diesem Beitrag werden wir uns eine Reihe von Befehlen ansehen, die Ihnen helfen können, zu verstehen, wer Ihre Benutzer sind und wie sie funktionieren.

finger

Ein praktischer Befehl zum Abrufen eines Benutzerprofils ist finger. Sie können sehen, wer angemeldet ist, oder sich auf einen einzelnen Benutzer konzentrieren, um dessen letzte Anmeldung anzuzeigen, von wo aus er sich angemeldet hat, wie lange er im Leerlauf war (wie lange er einen Befehl ausgeführt hat) usw. In diesem Befehl betrachten wir den Benutzer 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.

Wir können Nemos vollständigen Namen, das Home-Verzeichnis und die Shell sehen. Wir können auch nemos neueste Login- und E-Mail-Aktivitäten sehen. Büro-, Bürotelefon- und private Telefonnummern sind nur enthalten, wenn sie in der Datei / etc/passwd im Feld vollständiger Name definiert sind. Zum Beispiel:

nemo:x:1001:1001:Nemo Demo,11,540-222-2222,540-333-3333:/home/nemo:/bin/bash).

Die obige Ausgabe zeigt auch an, dass nemo keinen „Plan“ hat, aber das bedeutet nur, dass er keinen erstellt hat .Plandatei und legen Sie etwas Text hinein; Das ist überhaupt nicht ungewöhnlich.

Ohne Argumente zeigt finger eine Liste der aktuellen Anmeldungen im unten gezeigten Format an. Sie können sehen, wann sie sich angemeldet haben, von welcher IP-Adresse aus sie sich angemeldet haben, welches Pseudoterminal verwendet wird (z. B. pts / 1) und wie lange sie inaktiv waren.

$ 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

Der Befehl w enthält auch eine schön formatierte Liste der derzeit aktiven Benutzer, einschließlich der Leerlaufzeit und des zuletzt ausgeführten Befehls. Es zeigt auch in der oberen Zeile an, wie lange das System aktiv ist, und liefert Lastdurchschnitte, die angeben, wie ausgelastet das System ist. In diesem Fall (0,00 für die letzten 1, 5 und 15 Minuten) ist das System weitgehend im Leerlauf.

$ 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

Mit dem Befehl id können Sie die numerische ID und die Gruppen-ID eines Benutzers sowie die Gruppen anzeigen, denen der Benutzer angehört. Diese Informationen werden aus den Dateien /etc/passwd und /etc/group abgerufen. Ohne Argumente meldet id die Informationen für Ihr Konto.

$ 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

Sie können Informationen aus /var/log/auth .log-Datei mit Befehlen wie grep. Um die neueste Anmeldeaktivität mit auth anzuzeigen.log-Daten, können Sie einen Befehl wie diesen ausführen:

$ 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

Der letzte Befehl ist wahrscheinlich der beste, um die letzten Anmeldungen für alle Benutzer oder eine Person anzuzeigen. Denken Sie daran, dass last zuerst die neueste Aktivität anzeigt, da dies die Informationen sind, an denen die meisten Administratoren am meisten interessiert sind.

$ 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

Der Befehl du meldet, wie viel Speicherplatz das Home-Verzeichnis jedes Benutzers belegt, wenn er für jedes Verzeichnis in /home wie folgt ausgeführt wird:

$ sudo du -sk /home/*289 /home/dorothy116 /home/dory88 /home/eel28 /home/gino28 /home/jadep12764 /home/nemo732 /home/shark418046 /home/shs108 /home/tadpole

Standardmäßig werden die Größen in Einheiten von 1024 Byte angegeben.

ps und Verlauf

Für aktuell angemeldete Benutzer können Sie jederzeit Befehle wie ps -ef | grep ^nemo verwenden, um zu sehen, welche Befehle und Prozesse ein Benutzer gerade ausführt. Um zuvor ausgeführte Befehle anzuzeigen, können Sie versuchen, in die Verlaufsdateien der Benutzer zu schauen (z. B., .bash_history), aber beachten Sie, dass Benutzer ihre Konten so einrichten können, dass bestimmte Befehle nicht in ihren Verlaufsdateien erfasst werden, und sie können diese Dateien auch bearbeiten, wenn sie dies wünschen.

Anmeldungen zählen

Wenn Sie anzeigen möchten, wie oft sich jeder Ihrer Benutzer seit dem letzten Rollover der Datei /var/log/wtmp angemeldet hat, können Sie einen Befehl wie diesen verwenden:

$ for USER in `ls /home`> do> cnt=`last $USER | grep ^$USER | wc -l` # count logins> echo $USER: $cnt # show login count> done

Die Ausgabe wird ungefähr so aussehen:

dorothy: 0dory: 0eel: 8gino: 0jadep: 102nemo: 39shark: 50shs: 105tadpole: 0

Wenn Sie mehr Details wünschen, können Sie ein komplexeres Skript zusammenstellen, das einige zusätzliche Informationen wie Anmeldedaten und Formatierung hinzufügen kann.

#!/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

Das obige Skript beschränkt die angezeigten Daten auf die letzten fünf Anmeldungen, aber Sie können dies leicht ändern, wenn Sie möchten. So werden die Daten für einen Benutzer formatiert:

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)

überprüfen auf Sudo-Versuche

Wenn Sie sehen möchten, ob einer Ihrer Benutzer versucht, sudo zu verwenden, wenn er nicht für diese Berechtigung eingerichtet ist, können Sie einen Befehl wie diesen ausführen:

$ grep "NOT in sudoers" /var/log/auth.log | awk '{print }'nemo

Wenn Sie jemals versucht haben, sudo in einer Situation zu verwenden, in der Sie nicht berechtigt sind, Ihre Berechtigungen zu erhöhen, und das System Sie mit „Benutzername ist nicht in der Sudoers-Datei“ bedroht hat. Dieser Vorfall wird gemeldet werden,“ Sie könnten genießen zu wissen, dass dieser Protokolleintrag die Essenz dieses Berichts ist. Wenn der Administrator sich nicht bemüht, nach Sudo-Verstößen zu suchen, werden sie unbemerkt bleiben.

Zusammenfassung

Auf Linux-Systemen gibt es viele Befehle, mit denen Sie die Benutzeraktivität überprüfen können. Ich hoffe, dass sich einige der in diesem Beitrag vorgestellten als nützlich erweisen werden.

Verwendung des Befehls bmon: 2-minütige Linux-Tipps

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.