ianuarie 29, 2022

cum să vedeți ce fac utilizatorii în Linux

Dacă gestionați un server Linux, este bine să fiți gata cu o serie de comenzi pe care le puteți utiliza pentru a verifica activitatea utilizatorului – Când utilizatorii dvs. se conectează și cât de des, din ce grupuri aparțin, cât spațiu pe disc consumă, ce comandă rulează, cât spațiu pe disc ocupă, dacă își citesc corespondența și multe altele.

în această postare, vom analiza o serie de comenzi care vă pot ajuta să înțelegeți cine sunt utilizatorii dvs. și cum funcționează.

finger

o comandă la îndemână pentru obținerea unui profil de utilizator este finger. Vă permite să vedeți cine este conectat sau să vă concentrați pe un singur utilizator pentru a vizualiza ultima autentificare, de unde s-au conectat, cât timp au fost inactiv (cât timp au rulat o comandă) etc. În această comandă, ne uităm la utilizatorul 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.

putem vedea numele complet al lui nemo, directorul de acasă și shell-ul. De asemenea, putem vedea cea mai recentă activitate de conectare și e-mail a lui nemo. Numerele de telefon Office, office phone și home sunt incluse numai dacă sunt definite în fișierul /etc/passwd din câmpul Nume complet. De exemplu:

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

rezultatul de mai sus indică, de asemenea, că nemo nu are un „plan”, dar acest lucru înseamnă doar că nu a creat un .planificați fișierul și puneți un text în el; acest lucru nu este deloc neobișnuit.

fără argumente, finger va afișa o listă de autentificări curente în formatul prezentat mai jos. Puteți vedea când s-au conectat, adresa IP de la care s-au conectat, pseudo-terminalul utilizat (de exemplu, pts/1) și cât timp au fost inactivi.

$ 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

comanda w oferă, de asemenea, o listă frumos formatată a utilizatorilor activi în prezent, inclusiv timpul inactiv și ce comandă au rulat cel mai recent. De asemenea, afișează în linia de sus cât timp sistemul a fost ridicat și oferă medii de încărcare care indică cât de ocupat este sistemul. În acest caz (0,00 pentru Ultimele 1, 5 și 15 minute), sistemul este în mare parte inactiv.

$ 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

cu comanda id, puteți vizualiza ID-ul numeric al unui utilizator și ID-ul grupului împreună cu grupurile din care utilizatorul este membru. Aceste informații sunt extrase din fișierele/etc /passwd și/etc / group. Fără argumente, id raportează informațiile pentru contul dvs.

$ 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

puteți extrage informații din /var/log/auth.fișier jurnal cu comenzi precum grep. Pentru a afișa cea mai recentă activitate de conectare utilizând auth.jurnal de date, puteți rula o comandă ca aceasta:

$ 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.

ultima

ultima comandă este probabil cea mai bună pentru a privi conectările recente pentru toți utilizatorii sau pentru o persoană. Amintiți-vă că ultima arată cea mai recentă activitate mai întâi, deoarece aceasta este informația pe care majoritatea administratorilor sunt cei mai interesaț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

comanda du va raporta cât spațiu utilizează directorul de domiciliu al fiecărui utilizator dacă rulează împotriva fiecărui director din / home ca acesta:

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

în mod implicit, dimensiunile sunt raportate în unități de 1024 octeți.

ps și istoric

pentru utilizatorii conectați în prezent, puteți utiliza întotdeauna comenzi precum ps-ef | grep ^nemo pentru a vedea ce comenzi și procese rulează în prezent un utilizator. Pentru a vizualiza comenzile rulate anterior, puteți încerca să căutați în fișierele istorice ale utilizatorilor (de exemplu, .bash_history), dar rețineți că utilizatorii își pot configura conturile astfel încât anumite comenzi să nu fie capturate în fișierele lor istorice și, de asemenea, pot edita aceste fișiere dacă aleg acest lucru.

numărarea autentificărilor

dacă doriți să vedeți de câte ori fiecare dintre utilizatorii dvs. s-a conectat de la ultima rulare a fișierului /var/log/wtmp, puteți utiliza o comandă ca aceasta:

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

ieșirea va arăta cam așa:

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

dacă doriți mai multe detalii, puteți pune împreună un script mai complex care poate adăuga câteva informații suplimentare, cum ar fi detaliile de conectare și formatarea.

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

scriptul de mai sus limitează datele afișate la cele mai recente cinci Conectări, dar puteți schimba cu ușurință acest lucru dacă doriți. Iată cum ar fi formatate datele pentru un utilizator:

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)

verificarea încercărilor sudo

dacă doriți să vedeți dacă vreunul dintre utilizatorii dvs. încearcă să utilizeze sudo atunci când nu este configurat să aibă acest privilegiu, puteți rula o comandă ca aceasta:

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

dacă ați încercat vreodată să utilizați sudo într-o situație în care nu sunteți autorizat să vă ridicați privilegiile și dacă sistemul vă amenință cu „numele de utilizator nu este în fișierul sudoers. Acest incident va fi raportat: „s-ar putea să vă placă să știți că această intrare în jurnal este esența acelui raport. Cu excepția cazului în care administratorul face un efort pentru a căuta încălcări sudo, acestea vor trece neobservate.

Wrap-up

există o mulțime de comenzi pe sistemele Linux care vă pot ajuta să verificați activitatea utilizatorului. Sper că unele dintre cele prezentate în acest post se vor dovedi utile.

cum se utilizează comanda bmon: sfaturi Linux de 2 Minute

Lasă un răspuns

Adresa ta de email nu va fi publicată.