hur man ser vad användarna gör i Linux
om du hanterar en Linux – server är det bra att vara redo med ett antal kommandon som du kan använda för att kontrollera användaraktivitet-när användarna loggar in och hur ofta, vilka grupper de tillhör, hur mycket diskutrymme de konsumerar, vilket kommando de kör, hur mycket diskutrymme de upptar, om de läser sin e-post och mer.
i det här inlägget tittar vi på ett antal kommandon som kan hjälpa dig att förstå vem din användare är och hur de fungerar.
finger
ett praktiskt kommando för att få en användarprofil är finger. Det låter dig se vem som är inloggad eller fokusera på en enda användare för att se deras senaste inloggning, var de loggade in från, hur länge de har varit inaktiva (hur länge sedan de körde ett kommando) etc. I det här kommandot tittar vi på användaren 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.
vi kan se Nemos fullständiga namn, hemkatalog och skal. Vi kan också se Nemos senaste inloggnings-och e-postaktivitet. Kontors -, kontors-och hemtelefonnummer ingår endast om de är definierade i filen /etc/passwd i fältet Fullständigt namn. Till exempel:
nemo:x:1001:1001:Nemo Demo,11,540-222-2222,540-333-3333:/home/nemo:/bin/bash).
utgången ovan indikerar också att nemo inte har en ”plan”, men det betyder bara att han inte har skapat en .planera filen och lägg lite text i den; Detta är inte alls ovanligt.
utan argument kommer finger att visa en lista över aktuella inloggningar i det format som visas nedan. Du kan se när de loggade in, IP-adressen de loggade in från, pseudoterminalen som används (t.ex. pts/1) och hur länge de har varit inaktiva.
$ 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
w-kommandot ger också en snyggt formaterad lista över för närvarande aktiva användare inklusive ledig tid och vilket kommando de senast körde. Den visar också i den översta raden hur länge systemet har varit upp och ger belastningsmedelvärden som anger hur upptagen systemet är. I det här fallet (0,00 för de senaste 1, 5 och 15 minuterna) är systemet i stort sett inaktivt.
$ 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
med kommandot id kan du visa en användares numeriska ID och grupp-ID tillsammans med vilka grupper användaren är medlem i. Denna information hämtas från/etc /passwd och/etc / gruppfiler. Utan argument rapporterar id informationen för ditt 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
du kan ryck information från /var/log/auth.loggfil med kommandon som grep. För att visa den senaste inloggningsaktiviteten med auth.loggdata, du kan köra ett kommando som det här:
$ 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.
senaste
det sista kommandot är förmodligen det bästa för att titta på senaste inloggningar för alla användare eller en individ. Kom bara ihåg att sist visar den senaste aktiviteten först eftersom det här är den information som de flesta administratörer är mest intresserade av.
$ 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
du-kommandot rapporterar hur mycket utrymme varje användares hemkatalog använder om det körs mot varje katalog i / hem så här:
$ sudo du -sk /home/*289 /home/dorothy116 /home/dory88 /home/eel28 /home/gino28 /home/jadep12764 /home/nemo732 /home/shark418046 /home/shs108 /home/tadpole
som standard rapporteras storlekarna i enheter på 1024 byte.
ps och historik
för inloggade användare kan du alltid använda kommandon som ps-ef | grep ^nemo för att se vilka kommandon och processer en användare kör för närvarande. Om du vill visa kommandon som tidigare körts kan du försöka titta på användarnas historikfiler (t .ex.,.bash_history), men observera att användare kan ställa in sina konton så att vissa kommandon inte fångas i sina historikfiler, och de kan också redigera dessa filer om de så önskar.
räkna inloggningar
om du vill se hur många gånger var och en av dina användare har loggat in sedan/var / log / wtmp-filen senast rullade över kan du använda ett kommando som det här:
$ for USER in `ls /home`> do> cnt=`last $USER | grep ^$USER | wc -l` # count logins> echo $USER: $cnt # show login count> done
utgången kommer att se ut så här:
dorothy: 0dory: 0eel: 8gino: 0jadep: 102nemo: 39shark: 50shs: 105tadpole: 0
om du vill ha mer information kan du lägga till ett mer komplext skript som kan lägga till ytterligare information som inloggningsuppgifter och formatering.
#!/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
skriptet ovan begränsar data som visas till de senaste fem inloggningarna, men du kan enkelt ändra det om du vill. Så här formateras data för en användare:
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)
kontrollera efter sudo-försök
om du vill se om någon av dina användare försöker använda sudo när de inte är inställda för att ha detta privilegium kan du köra ett kommando så här:
$ grep "NOT in sudoers" /var/log/auth.log | awk '{print }'nemo
om du någonsin har försökt använda sudo i en situation där du inte har behörighet att höja dina privilegier och hade systemet hotar dig med ”användarnamn finns inte i sudoers-filen. Denna incident kommer att rapporteras, ” du kan njuta av att veta att den här loggposten är kärnan i den rapporten. Om inte administratören försöker leta efter sudoöverträdelser, kommer de att gå obemärkt.
Wrap-up
det finns många kommandon på Linux-system som kan hjälpa dig att kontrollera användaraktivitet. Jag hoppas att några av de som presenteras i det här inlägget kommer att vara användbara.