hoe te zien wat gebruikers van plan zijn in Linux
als je een Linux server beheert, is het goed om klaar te zijn met een aantal commando ‘ s die je kunt gebruiken om gebruikersactiviteit te controleren – wanneer je gebruikers inloggen en hoe vaak, tot welke groepen ze behoren, hoeveel schijfruimte ze consumeren, welk commando ze draaien, hoeveel schijfruimte ze innemen, of ze hun mail lezen en meer.
in dit bericht zullen we een aantal commando ‘ s bekijken die u kunnen helpen begrijpen wie uw gebruiker is en hoe ze werken.
finger
een handig commando voor het verkrijgen van een gebruikersprofiel is finger. Hiermee kunt u zien wie is ingelogd of zich richten op een enkele gebruiker om hun laatste login te bekijken, waar ze ingelogd vanaf, hoe lang ze inactief zijn geweest (hoe lang sinds ze een opdracht hebben uitgevoerd), enz. In dit commando kijken we naar de gebruiker 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.
we kunnen nemo ‘ s Volledige Naam, home directory en shell zien. We kunnen ook nemo ‘ s meest recente login en e-mail activiteit bekijken. Office, office phone en home phone nummers zijn alleen opgenomen als ze zijn gedefinieerd in het /etc/passwd bestand in het volledige naam veld. Bijvoorbeeld::
nemo:x:1001:1001:Nemo Demo,11,540-222-2222,540-333-3333:/home/nemo:/bin/bash).
de output hierboven geeft ook aan dat nemo geen “plan” heeft, maar dit betekent gewoon dat hij geen “plan” heeft gemaakt .plan het bestand en zet er wat tekst in; dit is helemaal niet ongebruikelijk.
zonder argumenten zal finger een lijst van huidige aanmeldingen tonen in het onderstaande formaat. U kunt zien wanneer ze ingelogd, het IP-adres waar ze ingelogd vanaf, de pseudo-terminal in gebruik (bijvoorbeeld, pts / 1) en hoe lang ze inactief zijn geweest.
$ 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
het commando w biedt ook een mooi opgemaakte lijst van actieve gebruikers, inclusief de inactieve tijd en het commando dat ze het laatst hebben uitgevoerd. Het geeft ook in de bovenste regel hoe lang het systeem is up en biedt belasting gemiddelden die aangeven hoe druk het systeem is. In dit geval (0,00 voor de laatste 1, 5 en 15 minuten), is het systeem grotendeels inactief.
$ 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
met het commando id kunt u de numerieke ID en groep ID van een gebruiker bekijken samen met de groepen waarvan de gebruiker lid is. Deze informatie komt uit de bestanden /etc/passwd en /etc/group. Zonder argumenten rapporteert id de informatie voor uw account.
$ 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
u kunt informatie yank uit de / var/log / auth.logbestand met commando ‘ s als grep. Om de meest recente login activiteit te tonen met behulp van auth.log data, U kunt een commando als deze uitvoeren:
$ 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
het laatste commando is waarschijnlijk het beste voor het bekijken van recente logins voor alle gebruikers of één individu. Vergeet niet dat laatste toont de meest recente activiteit eerst omdat dit de informatie die de meeste admins zijn het meest geïnteresseerd in.
$ 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
het commando du zal rapporteren hoeveel ruimte de persoonlijke map van elke gebruiker gebruikt als het op deze manier wordt uitgevoerd tegen elke map in / home:
$ sudo du -sk /home/*289 /home/dorothy116 /home/dory88 /home/eel28 /home/gino28 /home/jadep12764 /home/nemo732 /home/shark418046 /home/shs108 /home/tadpole
standaard worden de groottes gerapporteerd in eenheden van 1024 bytes.
PS en geschiedenis
voor momenteel ingelogde gebruikers kunt u altijd commando ’s als ps-ef | grep ^nemo gebruiken om te zien welke commando’ s en processen een gebruiker momenteel draait. Om commando’ s te bekijken die eerder zijn uitgevoerd, kunt u proberen te kijken naar de geschiedenisbestanden van gebruikers (bijv. .bash_history), maar merk op dat gebruikers hun accounts kunnen instellen, zodat bepaalde commando ‘ s niet worden vastgelegd in hun geschiedenis bestanden, en ze kunnen ook deze bestanden bewerken als ze dat willen.
het tellen van logins
als u wilt zien hoe vaak elk van uw gebruikers zich heeft aangemeld sinds het/var/log / wtmp-bestand voor het laatst is omgedraaid, kunt u een commando als dit gebruiken:
$ for USER in `ls /home`> do> cnt=`last $USER | grep ^$USER | wc -l` # count logins> echo $USER: $cnt # show login count> done
de uitvoer zal er ongeveer zo uitzien:
dorothy: 0dory: 0eel: 8gino: 0jadep: 102nemo: 39shark: 50shs: 105tadpole: 0
als u meer details wilt, kunt u een complexer script samenstellen dat extra informatie kan toevoegen, zoals logingegevens en opmaak.
#!/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
het bovenstaande script beperkt de getoonde gegevens tot de meest recente vijf aanmeldingen, maar u kunt dit eenvoudig wijzigen als u dat wilt. Hier is hoe de gegevens voor een gebruiker zou worden geformatteerd:
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)
controleren op sudo-pogingen
als u wilt zien of een van uw gebruikers sudo probeert te gebruiken als ze niet zijn ingesteld om deze bevoegdheid te hebben, kunt u een commando als dit uitvoeren:
$ grep "NOT in sudoers" /var/log/auth.log | awk '{print }'nemo
als u sudo ooit hebt geprobeerd te gebruiken in een situatie waarin u niet gemachtigd bent om uw privileges te verhogen en het systeem u bedreigde met “gebruikersnaam staat niet in het sudoers-bestand. Dit incident zal worden gemeld, ” je zou kunnen genieten van de wetenschap dat deze log vermelding is de essentie van dat rapport. Tenzij de admin een poging doet om te zoeken naar sudo overtredingen, zullen ze onopgemerkt blijven.
Wrap-up
er zijn veel commando ‘ s op Linux systemen die je kunnen helpen bij het controleren van de gebruikersactiviteit. Ik hoop dat sommige van die gepresenteerd in deze post nuttig zal blijken.