Sådan ser du, hvad brugerne har gang i
hvis du administrerer en server, er det godt at være klar med en række kommandoer, som du kan bruge til at kontrollere brugeraktivitet – når dine brugere logger ind, og hvor ofte, hvilke grupper de tilhører, hvor meget diskplads de bruger, hvilken kommando de kører, hvor meget diskplads de besætter, hvis de læser deres mail og mere.
i dette indlæg ser vi på et antal kommandoer, der kan hjælpe dig med at forstå, hvem din bruger er, og hvordan de fungerer.
finger
en praktisk kommando til at få en brugerprofil er finger. Det giver dig mulighed for at se, hvem der er logget ind eller fokusere på en enkelt bruger for at se deres sidste login, hvor de loggede ind fra, hvor længe de har været inaktive (hvor længe siden de kørte en kommando) osv. I denne kommando ser vi på brugeren 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 fulde navn, hjemmekatalog og shell. Vi kan også se Nemos seneste login-og e-mail-aktivitet. Office -, office-og hjemmetelefonnumre er kun inkluderet, hvis de er defineret i filen /etc/adgangskode i feltet fulde navn. For eksempel:
nemo:x:1001:1001:Nemo Demo,11,540-222-2222,540-333-3333:/home/nemo:/bin/bash).
outputtet ovenfor indikerer også, at nemo ikke har en “plan”, men det betyder bare, at han ikke har oprettet en .Planlæg fil og læg noget tekst ind i det; Dette er slet ikke usædvanligt.
uden argumenter viser finger en liste over aktuelle logins i formatet vist nedenfor. Du kan se, hvornår de loggede ind, den IP-adresse, de loggede ind fra, den pseudo-terminal, der er i brug (f.eks. pts/1), og hvor længe de har været inaktiv.
$ 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
h
kommandoen H giver også en pænt formateret liste over aktuelt aktive brugere inklusive inaktiv tid og hvilken kommando de senest kørte. Det viser også i den øverste linje, hvor længe systemet har været oppe og giver belastningsgennemsnit, der angiver, hvor travlt systemet er. I dette tilfælde (0, 00 i de sidste 1, 5 og 15 minutter) er systemet stort set 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 id-kommandoen kan du se en brugers numeriske ID og gruppe-ID sammen med hvilke grupper brugeren er medlem af. Disse oplysninger er hentet fra/etc /adgangskode og/etc / gruppe filer. Uden argumenter rapporterer id oplysningerne til din 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 yank oplysninger fra /var/log/auth.logfil med kommandoer som grep. For at vise den seneste loginaktivitet ved hjælp af auth.log data, du kan køre en kommando som denne:
$ 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.
sidste
den sidste kommando er nok den bedste til at se på de seneste logins for alle brugere eller en enkeltperson. Husk bare, at sidste viser den seneste aktivitet først, da dette er de oplysninger, som de fleste administratorer er mest interesserede i.
$ 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-kommandoen rapporterer, hvor meget plads hver brugers hjemmemappe bruger, hvis den køres mod hver mappe i / hjem som denne:
$ 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 rapporteres størrelserne i enheder på 1024 bytes.
ps og historie
for brugere, der er logget ind, kan du altid bruge kommandoer som ps-ef | grep ^nemo for at se, hvilke kommandoer og processer en bruger kører i øjeblikket. For at se kommandoer, der tidligere er kørt, kan du prøve at undersøge brugernes historikfiler (f .eks.,.bash_history), men bemærk, at brugerne kan konfigurere deres konti, så visse kommandoer ikke fanges i deres historiefiler, og de kan også redigere disse filer, hvis de vælger det.
optælling af logins
hvis du vil se, hvor mange gange hver af dine brugere har logget ind, siden filen/var / log / vtmp sidst rullede over, kan du bruge en kommando som denne:
$ for USER in `ls /home`> do> cnt=`last $USER | grep ^$USER | wc -l` # count logins> echo $USER: $cnt # show login count> done
udgangen vil se sådan ud:
dorothy: 0dory: 0eel: 8gino: 0jadep: 102nemo: 39shark: 50shs: 105tadpole: 0
hvis du vil have flere detaljer, kan du sammensætte et mere komplekst script, der kan tilføje nogle yderligere oplysninger som loginoplysninger og 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
scriptet ovenfor begrænser de viste data til de seneste fem logins, men du kan nemt ændre det, hvis du vil. Sådan formateres dataene for en bruger:
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)
kontrol af sudo-forsøg
hvis du gerne vil se, om nogen af dine brugere prøver at bruge sudo, når de ikke er konfigureret til at have dette privilegium, kan du køre en kommando som denne:
$ grep "NOT in sudoers" /var/log/auth.log | awk '{print }'nemo
hvis du nogensinde har prøvet at bruge sudo i en situation, hvor du ikke er autoriseret til at hæve dine privilegier og havde systemet truer dig med “brugernavn er ikke i sudoers-filen. Denne hændelse vil blive rapporteret, ” du kan nyde at vide, at denne log post er essensen af denne rapport. Medmindre admin gør en indsats for at lede efter sudo overtrædelser, de vil gå ubemærket hen.
indpakning
der er mange kommandoer på Linuks-systemer, der kan hjælpe dig med at kontrollere brugeraktivitet. Jeg håber, at nogle af dem, der præsenteres i dette indlæg, vil vise sig nyttige.