Како избрисати корисника на Линук-у (и уклонити сваки траг)

Uklanjanje korisničkog naloga na Linux sistemu zahteva više pažnje nego što se na prvi pogled čini. Za administratore sistema, ključno je da se osigura potpuno uklanjanje svih tragova korisničkog naloga i njegovog pristupa sistemu. U nastavku ćemo detaljno opisati sve neophodne korake.

Ako vam je cilj samo izbrisati korisnički nalog sa sistema, bez brige o prekinutim procesima i dodatnom čišćenju, možete slediti korake navedene u odeljku „Brisanje korisničkog naloga“. Za Debian bazirane distribucije, koristićemo komandu `deluser`, dok se na drugim distribucijama Linuxa koristi komanda `userdel`.

Korisnički nalozi na Linuxu

Od pojave prvih sistema za deljenje vremena ranih 1960-ih, koji su omogućili istovremeni rad više korisnika na jednom računaru, ukazala se potreba za izolacijom i razdvajanjem datoteka i podataka svakog korisnika. Tako su nastali korisnički nalozi i lozinke.

Korisnički nalozi zahtevaju administrativno održavanje. Potrebno ih je kreirati kada korisniku prvi put treba pristup računaru, i ukloniti kada taj pristup više nije potreban. Na Linuxu postoji niz koraka koje treba slediti kako biste pravilno uklonili korisnika, njegove datoteke i nalog sa računara.

Kao administrator sistema, vi ste odgovorni za ovaj proces. U nastavku je detaljno objašnjeno kako se to radi.

Naš scenario

Postoji mnogo razloga za brisanje korisničkog naloga. Zaposleni može preći u drugi tim ili napustiti kompaniju. Nalog je možda bio privremen za saradnju sa spoljnim saradnikom. Timski projekti su uobičajeni u akademskim krugovima, gde istraživanja mogu uključivati različite odseke, univerzitete, pa čak i komercijalne subjekte. Po završetku projekta, administrator sistema treba da ukloni nepotrebne naloge.

Najgori scenario je kada neko napusti kompaniju zbog kršenja pravila. Takvi događaji su obično iznenadni i nepredviđeni, što administratoru sistema ostavlja malo vremena za planiranje. U takvim situacijama, prioritet je hitno zaključavanje, gašenje i brisanje naloga, uz obaveznu izradu rezervne kopije korisničkih datoteka za eventualnu forenziku.

U našem scenariju, pretpostavićemo da je korisnik, Erik, učinio nešto što zahteva njegovo trenutno uklanjanje sa sistema. On još uvek radi i prijavljen je. Čim obavestite obezbeđenje, on će biti ispraćen iz zgrade.

Sve je spremno. Sve oči su uprte u vas.

Provera prijavljenih sesija

Proverićemo da li je Erik zaista prijavljen i, ako jeste, koliko sesija je aktivno. Komanda `who` će prikazati aktivne sesije.

who

Erik je prijavljen jednom. Sada ćemo pogledati koje procese trenutno pokreće.

Pregled korisničkih procesa

Koristimo komandu `ps` da prikazemo procese koje ovaj korisnik pokreće. Opciona oznaka `-u` (korisnik) omogućava nam da ograničimo prikaz procesa samo na one koji se izvršavaju pod ovim korisničkim nalogom.

ps -u eric

Možemo videti iste procese sa više informacija koristeći komandu `top`. Komanda `top` takođe ima opciju `-U` (korisnik) za ograničavanje prikaza na procese u vlasništvu jednog korisnika. Obratite pažnju da se ovde koristi veliko slovo „U“.

top -U eric

Ovde možemo videti upotrebu memorije i CPU-a za svaki zadatak, te brzo uočiti bilo kakvu sumnjivu aktivnost. Pre nego što nasilno prekinemo sve njegove procese, dobro je da odvojite trenutak za pregled procesa i osigurati da drugi korisnici neće biti ometani gašenjem procesa korisničkog naloga Erik.

Čini se da Erik ne radi ništa posebno, samo pregleda fajl. Možemo nastaviti sa procedurom, ali pre nego što prekinemo procese, zamrznućemo nalog zaključavanjem lozinke.

Zaključavanje naloga

Zaključićemo nalog pre nego što prekinemo procese, jer će gašenje procesa odjaviti korisnika. Ako smo već promenili lozinku, on se više neće moći prijaviti.

Šifrovane korisničke lozinke se čuvaju u datoteci `/etc/shadow`. Obično ne biste morali da se zamarate ovim koracima, ali da biste videli šta se događa u datoteci `/etc/shadow` kada zaključate nalog, napravićemo mali odmak. Koristićemo sledeću komandu da prikažemo prva dva polja za Erik korisnički nalog.

sudo awk -F: '/eric/ {print $1,$2}' /etc/shadow

Komanda `awk` analizira polja iz tekstualnih datoteka i opcionalno njima manipuliše. Opciona oznaka `-F` (separator polja) govori komandi `awk` da datoteka koristi dvotačku „:“ kao separator polja. Tražimo liniju koja sadrži obrazac „eric“. Za tu liniju, štampamo prvo i drugo polje, a to su ime naloga i šifrovana lozinka.

Podaci za korisnički nalog Erik su prikazani.

Za zaključavanje naloga koristimo komandu `passwd`. Koristićemo opciju `-l` (zaključaj) i ime korisničkog naloga koji želimo zaključati.

sudo passwd -l eric

Ako ponovo pogledamo datoteku `/etc/shadow`, videćemo šta se dogodilo.

sudo awk -F: '/eric/ {print $1,$2}' /etc/shadow

Uzvičnik je dodat na početak šifrovane lozinke. Nije prepisan prvi znak, već je dodat na početak. To je dovoljno da se spreči ponovno prijavljivanje korisnika na taj nalog.

Sada kada smo sprečili korisnika da se ponovo prijavi, možemo prekinuti njegove procese i odjaviti ga.

Prekidanje procesa

Postoji nekoliko načina za prekidanje procesa korisnika, ali komanda prikazana ovde je široko dostupna i predstavlja moderniju implementaciju u odnosu na neke alternative. Komanda `pkill` će pronaći i prekinuti procese. Prosleđujemo `KILL` signal i koristimo opciju `-u` (korisnik).

sudo pkill -KILL -u eric

Vratili ste se u komandnu liniju na antikliaktičan način. Da bismo bili sigurni da se nešto dogodilo, ponovo ćemo pokrenuti `who`:

who

Njegova sesija je nestala. Odjavljen je i njegovi procesi su zaustavljeni. To je donekle smanjilo hitnost situacije. Sada možemo malo da se opustimo i nastavimo sa ostatkom čišćenja dok obezbeđenje ide ka Erikovom stolu.

Arhiviranje korisničkog home direktorijuma

Moguće je da će u budućnosti biti potreban pristup korisničkim fajlovima, bilo kao deo istrage, ili jednostavno zato što će njegov naslednik možda morati da pogleda prethodni rad. Koristićemo komandu `tar` da arhiviramo ceo njegov home direktorijum.

Opcije koje koristimo su:

c: Kreiranje arhivskog fajla.
f: Korišćenje navedenog imena za arhivski fajl.
j: Korišćenje bzip2 kompresije.
v: Pružanje detaljnog ispisa tokom kreiranja arhive.

sudo tar cfjv eric-20200820.tar.bz /home/eric

Mnogo izlaznih poruka će se pojaviti u terminalu. Da biste proverili da li je arhiva kreirana, koristite komandu `ls`. Koristimo opcije `-l` (dugi format) i `-h` (čitljivo za ljude).

ls -lh eric-20200802.tar.bz

Kreiran je fajl od 722 MB. Ovaj fajl se može kopirati na sigurno mesto za kasniji pregled.

Uklanjanje cron poslova

Dobro je proveriti da li postoje cron poslovi zakazani za Erik korisnički nalog. Cron posao je komanda koja se izvršava u određenim vremenskim intervalima. Možemo proveriti da li postoje cron poslovi zakazani za ovaj korisnički nalog koristeći `ls`:

sudo ls -lh /var/spool/cron/crontabs/eric

Ako postoji bilo šta na ovoj lokaciji, to znači da postoje cron poslovi koji čekaju izvršenje za taj korisnički nalog. Možemo ih izbrisati pomoću komande `crontab`. Opciona oznaka `-r` (ukloni) će ukloniti poslove, a opcija `-u` (korisnik) govori komandi `crontab` čije poslove ukloniti.

sudo crontab -r -u eric

Poslovi se tiho brišu. Ako je Erik posumnjao da će biti uklonjen, mogao je zakazati neki zlonamerni posao. Ovaj korak je preporučena praksa.

Uklanjanje zadataka za štampanje

Možda je korisnik imao zadatke za štampanje koji čekaju izvršenje? Da bismo bili sigurni, možemo očistiti red za štampanje od svih poslova koji pripadaju Erik korisničkom nalogu. Komanda `lprm` uklanja poslove iz reda za štampanje. Opciona oznaka `-U` (korisničko ime) vam omogućava da uklonite poslove koji pripadaju datom korisničkom nalogu:

lprm -U eric

Poslovi se uklanjaju i vraćate se u komandnu liniju.

Brisanje korisničkog naloga

Već smo napravili rezervnu kopiju datoteka iz `/home/eric/` direktorijuma, tako da možemo izbrisati korisnički nalog i istovremeno izbrisati direktorijum `/home/eric/`.

Komanda koju koristite zavisi od toga koju distribuciju Linuxa koristite. Za Linux distribucije zasnovane na Debianu, komanda je `deluser`, i za ostatak Linux sveta, to je `userdel`.

U stvari, na Ubuntuu su dostupne obe komande. Očekivali smo da je jedna pseudonim za drugu, ali to su različite binarne datoteke.

type deluser
type userdel

Iako su obe komande dostupne, preporuka je da koristite `deluser` na distribucijama izvedenim iz Debiana:

„`userdel` je uslužni program niskog nivoa za uklanjanje korisnika. Na Debianu, administratori obično treba da koriste `deluser(8)`.“

To je dovoljno jasno, stoga je komanda koja se koristi na ovom Ubuntu računaru `deluser`. Budući da takođe želimo da uklonimo njegov home direktorijum, koristimo oznaku `–remove-home`:

sudo deluser --remove-home eric

Komanda koja se koristi za ne-Debian distribucije je `userdel`, sa oznakom `–remove`:

sudo userdel --remove eric

Svi tragovi korisničkog naloga Erik su izbrisani. Možemo proveriti da li je direktorijum `/home/eric/` uklonjen:

ls /home

Grupa Erik je takođe uklonjena, jer je korisnički nalog Erik bio jedini unos u njoj. To možemo lako proveriti tako što ćemo sadržaj datoteke `/etc/group` proslediti kroz `grep`:

sudo less /etc/group | grep eric

Završeno

Erik je, zbog svojih grehova, otišao. Obezbeđenje ga još uvek izvodi iz zgrade, a vi ste već osigurali i arhivirali njegove fajlove, izbrisali njegov nalog i očistili sistem od svih zaostalih tragova.

Preciznost je uvek važnija od brzine. Dobro razmislite o svakom koraku pre nego što ga preduzmete. Ne želite da vam neko priđe i kaže „Ne, drugi Erik“.