În Linux, o investigație de securitate începe frecvent cu trei întrebări: ce fișier s-a modificat, cine are acces la el și ce proces îl folosește. Dacă nu poți interpreta corect rezultatul comenzilor ls, stat, chmod, ps sau systemctl, riști fie să ratezi o problemă, fie să strici permisiunile unui sistem funcțional.
Comenzile din acest ghid pot fi testate pe Ubuntu, Debian, Kali și majoritatea distribuțiilor Linux. Pentru exerciții, folosește contul obișnuit, nu o sesiune permanentă de root.
Creează un laborator fără să atingi fișierele sistemului
Deschide terminalul și creează un director separat:
mkdir -p ~/linux-cyber-lab/{public,private,logs}
cd ~/linux-cyber-lab
echo "informatii publice" > public/readme.txt
echo "date interne" > private/clienti.txt
echo "2026-07-20 login successful" > logs/auth-demo.log
Verifică structura:
find ~/linux-cyber-lab -maxdepth 2 -type f -print
Ar trebui să vezi cele trei fișiere create.
Află utilizatorul și grupurile contului curent:
whoami
id
Comanda id afișează identificatorul utilizatorului, grupul principal și grupurile suplimentare din care face parte contul. Aceste informații sunt importante deoarece accesul la fișiere poate fi acordat proprietarului, grupului sau tuturor celorlalți utilizatori.
Citește corect permisiunile unui fișier
Rulează:
ls -l private/clienti.txt
Un rezultat posibil este:
-rw-r--r-- 1 alex alex 13 Jul 20 14:10 clienti.txt
Prima parte se interpretează astfel:
- rw- r-- r--
tip owner group others
Caracterul inițial arată tipul obiectului:
- fișier obișnuit
d director
l legătură simbolică
Următoarele nouă caractere sunt împărțite în trei grupuri:
r = read, citire
w = write, modificare
x = execute, executare
În exemplul anterior, proprietarul poate citi și modifica fișierul, iar membrii grupului și ceilalți utilizatori îl pot doar citi. ls -l afișează inclusiv tipul, permisiunile, proprietarul și grupul fișierului.
Pentru informații mai exacte folosește:
stat private/clienti.txt
stat afișează permisiunile în format simbolic și numeric, proprietarul, grupul, dimensiunea și momentele asociate fișierului.
Permisiunile directoarelor nu înseamnă exact același lucru
Pentru un director:
rpermite listarea numelor din director;wpermite crearea, ștergerea sau redenumirea intrărilor;xpermite traversarea directorului și accesarea elementelor din interior.
Un director poate avea permisiunea de citire, dar fără x utilizatorul nu poate accesa normal fișierele din el.
Verifică permisiunile laboratoarelor:
ls -ld public private logs
Protejează directorul privat astfel încât numai proprietarul să îl poată accesa:
chmod 700 private
chmod 600 private/clienti.txt
Verifică rezultatul:
ls -ld private
ls -l private/clienti.txt
Ar trebui să apară:
drwx------ private
-rw------- clienti.txt
chmod modifică biții de acces ai fișierelor și directoarelor. Permisiunile pot fi exprimate simbolic sau numeric.
Cum funcționează valorile 755, 750, 640 și 600
Valorile numerice sunt construite din:
r = 4
w = 2
x = 1
Suma se calculează separat pentru proprietar, grup și ceilalți:
7 = rwx
6 = rw-
5 = r-x
4 = r--
0 = ---
Exemple utile:
600 proprietarul citește și scrie; nimeni altcineva nu are acces
640 proprietarul citește și scrie; grupul poate citi
700 director privat, accesibil doar proprietarului
750 proprietarul are acces complet; grupul poate citi și traversa
755 director sau program accesibil tuturor, modificabil doar de proprietar
Ubuntu oferă, de asemenea, exemplul 600 pentru un fișier accesibil numai proprietarului.
Nu folosi chmod 777 ca soluție universală pentru o eroare de acces. 777 permite tuturor utilizatorilor să citească, modifice și execute obiectul respectiv. Rezolvă problema de proprietar sau grup, nu elimina toate restricțiile.
Schimbă proprietarul numai când este necesar
Vezi proprietarul curent:
stat -c 'Owner: %U | Group: %G | Permissions: %A' private/clienti.txt
Pentru a schimba proprietarul și grupul:
sudo chown nume_utilizator:nume_grup private/clienti.txt
Exemplu:
sudo chown alex:analisti private/clienti.txt
chown schimbă proprietarul și, opțional, grupul asociat unui fișier. Folosirea recursivă cu -R afectează toate elementele din director și trebuie verificată cu atenție.
Înainte de o modificare recursivă, listează ce va fi afectat:
find /cale/catre/director -maxdepth 2 -ls
Nu executa direct comenzi precum:
sudo chown -R user:user /
sudo chmod -R 777 /var/www
Prima poate modifica proprietatea întregului sistem. A doua poate expune codul și configurațiile site-ului la modificări neautorizate.
Verifică fișierele cu permisiuni riscante
Caută fișiere modificabile de orice utilizator în laborator:
find ~/linux-cyber-lab -type f -perm -0002 -ls
Dacă nu apare nimic, nu există fișiere world-writable în acel director.
Creează unul pentru test:
touch public/test-riscant.txt
chmod 666 public/test-riscant.txt
find ~/linux-cyber-lab -type f -perm -0002 -ls
Corectează-l:
chmod 644 public/test-riscant.txt
find poate căuta fișiere după tip, proprietar, dată și permisiuni într-o întreagă ierarhie de directoare.
Pentru o verificare read-only a sistemului:
sudo find / -xdev \( -nouser -o -nogroup \) -ls 2>/dev/null
Aceasta caută fișiere al căror UID sau GID nu mai corespunde unui utilizator ori grup existent. Pot apărea după ștergerea unui cont sau restaurarea unui backup.
Poți inventaria și fișierele SUID:
sudo find / -xdev -type f -perm -4000 -print 2>/dev/null
Prezența unui fișier SUID nu înseamnă automat compromitere. Salvează lista normală a sistemului și investighează elementele noi, locațiile neobișnuite sau fișierele care nu aparțin unui pachet cunoscut.
Controlează permisiunile implicite cu umask
Vezi valoarea curentă:
umask
Pentru o sesiune în care vrei fișiere private pentru proprietar și lizibile pentru grup:
umask 027
Creează un test:
touch test-umask.txt
mkdir test-umask-dir
ls -ld test-umask.txt test-umask-dir
În mod obișnuit, vei obține:
-rw-r----- test-umask.txt
drwxr-x--- test-umask-dir
Setarea se aplică procesului shell curent și proceselor pornite din el. Nu modifica global umask pe un server înainte să verifici ce aplicații depind de permisiunile existente.
Vezi ce procese rulează
Un proces este o instanță activă a unui program. Fiecare are un PID, un utilizator, un proces părinte și o comandă de pornire.
Listează procesele:
ps aux
Vezi primele procese după consumul CPU:
ps aux --sort=-%cpu | head -n 15
Pentru o vedere mai utilă într-o investigație:
ps -eo pid,ppid,user,%cpu,%mem,etime,cmd --sort=-%cpu | head -n 20
Coloanele importante sunt:
PID identificatorul procesului
PPID procesul părinte
USER contul sub care rulează
%CPU consumul procesorului
%MEM consumul memoriei
ETIME timpul de când rulează
CMD comanda completă
ps citește informații despre procese și permite alegerea coloanelor și sortarea rezultatelor.
Caută un proces după nume:
pgrep -a ssh
pgrep -a nginx
pgrep -a apache2
Opțiunea -a afișează și linia de comandă, nu doar PID-ul.
Investighează un PID înainte să îl oprești
Presupunem că PID-ul suspect este 4321. Nu îl opri imediat. Verifică:
ps -p 4321 -o pid,ppid,user,lstart,etime,%cpu,%mem,cmd
Află executabilul real:
sudo readlink -f /proc/4321/exe
Vezi directorul de lucru:
sudo readlink -f /proc/4321/cwd
Vezi comanda cu care a fost pornit:
sudo tr '\0' ' ' < /proc/4321/cmdline
echo
Verifică procesul părinte:
ps -p "$(ps -o ppid= -p 4321)" -o pid,ppid,user,cmd
Directorul virtual /proc/PID expune informații despre fiecare proces, inclusiv executabilul, comanda și directorul său de lucru, în limita permisiunilor utilizatorului.
Semne care merită investigate:
- proces executat din
/tmp,/var/tmpsau un director ascuns din home; - nume asemănător unui serviciu legitim, dar cu o literă schimbată;
- proces de rețea care rulează sub un utilizator neașteptat;
- comandă foarte lungă cu Base64,
curl,wgetsau shell redirection; - executabil șters de pe disc, dar încă activ;
- proces fără legătură clară cu aplicațiile instalate.
Un singur semn nu confirmă malware. Compară procesul cu serviciile instalate, logurile și pachetele sistemului.
Oprește procesul gradual
Trimite mai întâi semnalul normal de terminare:
kill -TERM 4321
Verifică dacă mai rulează:
ps -p 4321
Numai dacă procesul nu răspunde și ai confirmat că poate fi oprit:
kill -KILL 4321
SIGTERM îi permite programului să închidă fișiere și conexiuni controlat. SIGKILL oprește procesul imediat și nu poate fi gestionat de aplicație. Comanda kill trimite semnale către procesele indicate.
Pentru un serviciu administrat de systemd, folosește systemctl, nu omorî direct procesul principal:
sudo systemctl status ssh
sudo systemctl restart ssh
Pe alte distribuții, serviciul poate fi numit sshd:
sudo systemctl status sshd
systemctl este instrumentul standard pentru verificarea și controlul unităților administrate de systemd.
Leagă procesul de logurile sale
Listează serviciile active:
systemctl list-units --type=service --state=running
Vezi logurile serviciului SSH din ziua curentă:
sudo journalctl -u ssh --since today
Urmărește logurile în timp real:
sudo journalctl -u ssh -f
Pentru ultimele erori ale sistemului:
sudo journalctl -p err --since "1 hour ago"
journalctl interoghează jurnalele colectate de systemd-journald și poate filtra după serviciu, prioritate, boot sau interval de timp.
Un mini-checklist pentru o analiză Linux
Când găsești un fișier sau proces necunoscut, urmează aceeași ordine:
# Fișierul
ls -la /cale/catre/fisier
stat /cale/catre/fisier
file /cale/catre/fisier
sha256sum /cale/catre/fisier
# Procesul
ps -p PID -o pid,ppid,user,lstart,etime,%cpu,%mem,cmd
sudo readlink -f /proc/PID/exe
sudo readlink -f /proc/PID/cwd
# Serviciul și logurile
systemctl status nume-serviciu
sudo journalctl -u nume-serviciu --since "2 hours ago"
Nu modifica permisiunile și nu șterge fișierul până nu ai păstrat calea, proprietarul, hash-ul, timpul modificării și procesul asociat. Într-o investigație, aceste informații pot fi mai valoroase decât eliminarea rapidă a obiectului suspect.
Fișierele, permisiunile și procesele nu sunt capitole separate. Ele formează același lanț: un utilizator pornește un proces, procesul citește sau modifică fișiere, iar permisiunile stabilesc dacă operația este permisă. Înțelegerea acestui lanț este baza pentru administrarea sigură, analiza logurilor, hardening și răspunsul la incidente în Linux.
Surse folosite
Linux man-pages – ls, stat, chmod, chown, find, ps, pgrep, kill și /proc
Ubuntu Server Documentation – Welcome to the Terminal
Ubuntu Manpages – systemctl
Linux man-pages – journalctl și systemd-journald

















































