Ștergerea unui cont de utilizator în Linux este o operațiune mai complexă decât s-ar putea crede inițial. În rolul de administrator de sistem, este esențial să te asiguri că elimini complet toate urmele contului și accesul acestuia din sistem. Acest articol te va ghida prin pașii necesari pentru a realiza acest lucru în mod eficient.
Dacă scopul tău este doar eliminarea contului de utilizator, fără a te preocupa de închiderea proceselor active sau de alte sarcini de curățare, poți urma instrucțiunile din secțiunea „Ștergerea contului de utilizator”. Reține că vei utiliza comanda `deluser` pe distribuțiile bazate pe Debian și comanda `userdel` pe celelalte distribuții Linux.
Gestionarea conturilor de utilizator în Linux
Încă de la apariția primelor sisteme de partajare a timpului, la începutul anilor ’60, care permiteau mai multor utilizatori să lucreze simultan pe același computer, a devenit necesară izolarea și compartimentarea fișierelor și a datelor fiecărui utilizator. Astfel, s-au născut conturile de utilizator, împreună cu mecanismele de autentificare prin parolă.
Conturile de utilizator implică o anumită sarcină administrativă. Ele trebuie create atunci când un utilizator are nevoie de acces la sistem și eliminate când accesul nu mai este necesar. În Linux, procesul de eliminare a unui utilizator, a fișierelor și a contului său trebuie să urmeze o serie de pași metodici și bine definiți.
În calitate de administrator de sistem, această responsabilitate îți revine. Iată cum trebuie să procedezi:
Scenariul nostru de lucru
Există diverse motive pentru care un cont de utilizator trebuie șters. Un angajat se poate muta într-o altă echipă sau părăsește compania. Sau contul ar fi putut fi creat pentru o colaborare temporară cu un vizitator. Colaborările sunt frecvente în mediul academic, unde proiectele de cercetare pot implica mai multe departamente, universități sau chiar entități comerciale. La finalizarea proiectului, administratorul de sistem este responsabil de curățarea și eliminarea conturilor care nu mai sunt necesare.
Cel mai dificil caz apare când un angajat părăsește compania în circumstanțe nefavorabile. Aceste evenimente au loc, de obicei, neașteptat, lăsând administratorul de sistem cu puțin timp de pregătire și o nevoie urgentă de a bloca, închide și șterge contul – dar și de a salva o copie de rezervă a fișierelor utilizatorului, în eventualitatea unei investigații.
În scenariul nostru, vom presupune că un utilizator, pe nume Eric, a comis o acțiune care necesită îndepărtarea sa imediată din sediu. În momentul de față, el este încă conectat la sistem și lucrează. Odată ce îi dai semnalul de plecare echipei de securitate, acesta va fi escortat afară din clădire.
Totul este pregătit, iar ochii tuturor sunt ațintiți asupra ta.
Verificarea autentificării
Să verificăm dacă Eric este cu adevărat autentificat și, dacă da, câte sesiuni are active. Comanda `who` va afișa sesiunile curente:
who
Eric este conectat o singură dată. Să vedem ce procese rulează.
Vizualizarea proceselor utilizatorului
Pentru a vizualiza procesele rulate de Eric, vom folosi comanda `ps`. Opțiunea `-u` (utilizator) ne permite să filtrăm ieșirea, afișând doar procesele deținute de acel cont de utilizator:
ps -u eric
Putem vizualiza aceleași procese, cu mai multe informații, folosind comanda `top`. Aceasta are opțiunea `-U` (Utilizator) care permite restricționarea ieșirii la procesele unui singur utilizator. Observă că de data aceasta, `U` este majuscul:
top -U eric
Observăm utilizarea memoriei și a procesorului pentru fiecare sarcină. Este indicat să verifici rapid dacă există procese suspecte. Înainte de a forța închiderea proceselor, este bine să verifici dacă alți utilizatori nu vor fi afectați de această acțiune.
Eric nu pare să facă multe, doar vizualizează un fișier. Putem continua. Dar, înainte de a închide procesele, vom bloca contul, pentru a-i suspenda accesul.
Blocarea contului
Vom bloca contul înainte de a închide procesele, deoarece odată ce acestea sunt închise, utilizatorul va fi deconectat. Dacă îi schimbăm parola, el nu se va putea reconecta.
Parolele criptate ale utilizatorilor sunt stocate în fișierul `/etc/shadow`. În mod normal, nu ar fi necesari pașii următori, dar, pentru a înțelege ce se întâmplă în fișierul `/etc/shadow` când blocăm contul, vom face o scurtă incursiune în acesta. Vom folosi următoarea comandă pentru a examina primele două câmpuri ale intrării pentru utilizatorul Eric:
sudo awk -F: '/eric/ {print $1,$2}' /etc/shadow
Comanda `awk` procesează câmpurile din fișiere text și, opțional, le modifică. Opțiunea `-F` (separator de câmpuri) îi spune lui `awk` că fișierul utilizează două puncte (`:`) pentru a separa câmpurile. Vom căuta o linie care conține șablonul „eric”. Pentru liniile care corespund, vom afișa primul și al doilea câmp, care reprezintă numele contului și parola criptată.
Intrarea pentru contul lui Eric este afișată.
Pentru a bloca contul, vom utiliza comanda `passwd`. Vom folosi opțiunea `-l` (blocare) și numele contului de utilizator care trebuie blocat:
sudo passwd -l eric
Dacă verificăm din nou fișierul `/etc/passwd`, vom observa ce s-a întâmplat:
sudo awk -F: '/eric/ {print $1,$2}' /etc/shadow
Un semn de exclamare a fost adăugat la începutul parolei criptate. Nu suprascrie primul caracter, ci este adăugat la începutul parolei. Aceasta este tot ce este necesar pentru a împiedica utilizatorul să se mai conecteze la cont.
Acum, că am împiedicat utilizatorul să se reconecteze, putem să-i închidem procesele și să-l deconectăm.
Închiderea proceselor
Există mai multe moduri de a închide procesele unui utilizator, dar comanda prezentată aici este larg disponibilă și este o abordare mai modernă decât altele. Comanda `pkill` va identifica și va închide procesele. Vom trimite semnalul `KILL` și vom folosi opțiunea `-u` (utilizator):
sudo pkill -KILL -u eric
Ați revenit la promptul de comandă. Pentru a ne asigura că s-a întâmplat ceva, vom verifica din nou utilizatorii conectați, cu comanda `who`:
who
Sesiunea lui a dispărut. A fost deconectat și procesele sale au fost oprite. Acest lucru ne permite să ne relaxăm puțin și să continuăm cu restul operațiunilor, în timp ce echipa de securitate se ocupă de îndepărtarea lui Eric din sediu.
Arhivarea directorului home al utilizatorului
Într-un scenariu ca acesta, accesul la fișierele utilizatorului poate fi necesar în viitor, fie în cadrul unei investigații, fie pentru ca înlocuitorul său să poată consulta munca predecesorului. Vom folosi comanda `tar` pentru a arhiva întregul său director personal.
Opțiunile pe care le vom folosi sunt:
- `c`: Creează un fișier arhivă.
- `f`: Specifică numele fișierului pentru arhivă.
- `j`: Folosește compresia bzip2.
- `v`: Oferă informații detaliate pe măsură ce arhiva este creată.
sudo tar cfjv eric-20200820.tar.bz /home/eric
O mulțime de linii vor fi afișate în fereastra terminalului. Pentru a verifica dacă arhiva a fost creată, folosește comanda `ls`. Folosim opțiunile `-l` (format lung) și `-h` (lizibil pentru oameni):
ls -lh eric-20200802.tar.bz
A fost creat un fișier de 722 MB. Acesta poate fi copiat într-o locație sigură pentru revizuire ulterioară.
Eliminarea sarcinilor cron
Este bine să verificăm dacă există sarcini `cron` programate pentru contul utilizatorului Eric. O sarcină `cron` este o comandă care este executată la anumite momente sau intervale. Putem verifica existența unor astfel de sarcini folosind comanda `ls`:
sudo ls -lh /var/spool/cron/crontabs/eric
Dacă există ceva în această locație, înseamnă că există sarcini `cron` programate pentru acel cont de utilizator. Le putem șterge folosind comanda `crontab`. Opțiunea `-r` (eliminare) va elimina sarcinile, iar opțiunea `-u` (utilizator) îi spune comenzii `crontab` ale cui sarcini trebuie eliminate:
sudo crontab -r -u eric
Sarcinile sunt șterse în mod silențios. Dacă Eric ar fi suspectat că va fi evacuat, ar fi putut programa o sarcină cu intenții malițioase. Acest pas este o măsură de precauție.
Eliminarea sarcinilor de imprimare
Poate că utilizatorul a avut sarcini de imprimare în așteptare. Pentru a fi siguri, putem goli coada de imprimare de orice sarcini care aparțin contului de utilizator Eric. Comanda `lprm` elimină sarcinile din coada de imprimare. Opțiunea `-U` (nume de utilizator) îți permite să elimini sarcinile care aparțin contului de utilizator specificat:
lprm -U eric
Sarcinile sunt eliminate și vei reveni la linia de comandă.
Ștergerea contului de utilizator
Am făcut deja copii de rezervă ale fișierelor din directorul `/home/eric/`, așa că putem trece la ștergerea contului de utilizator și a directorului `/home/eric/` în același timp.
Comanda pe care o vei utiliza depinde de distribuția Linux pe care o folosești. Pentru distribuțiile bazate pe Debian, comanda este `deluser`, iar pentru restul lumii Linux, este `userdel`.
Pe Ubuntu, ambele comenzi sunt disponibile. M-aș fi așteptat ca una să fie un alias al celeilalte, dar sunt binare distincte.
type deluser
type userdel
Deși ambele sunt disponibile, se recomandă folosirea comenzii `deluser` pe distribuțiile derivate din Debian:
„`userdel` este un utilitar de nivel scăzut pentru eliminarea utilizatorilor. Pe Debian, administratorii ar trebui să folosească `deluser(8)` în schimb.”
Este suficient de clar, așa că pe acest sistem Ubuntu vom folosi comanda `deluser`. Deoarece dorim ca și directorul său personal să fie eliminat, vom folosi opțiunea `–remove-home`:
sudo deluser --remove-home eric
Comanda echivalentă pentru distribuțiile non-Debian este `userdel`, cu opțiunea `–remove`:
sudo userdel --remove eric
Toate urmele contului de utilizator Eric au fost șterse. Putem verifica dacă directorul `/home/eric/` a fost eliminat:
ls /home
Grupul `eric` a fost, de asemenea, eliminat, deoarece contul de utilizator `eric` era singura intrare din acesta. Putem verifica acest lucru, filtrând conținutul `/etc/group` cu `grep`:
sudo less /etc/group | grep eric
Finalizarea operațiunii
Pentru faptele sale, Eric a dispărut din sistem. Echipa de securitate îl scoate din clădire, tu i-ai securizat și arhivat fișierele, i-ai șters contul și ai curățat sistemul de orice urme.
Precizia este mai importantă decât viteza. Asigură-te că ai luat în considerare fiecare pas înainte de a acționa. Nu vrei ca cineva să vină la tine și să îți spună „Nu, era vorba de celălalt Eric”.