Skip to main content

Cyber AI România

Cum configurezi grupuri Linux pentru acces controlat la foldere de proiect

Pe un server Linux folosit de mai multe persoane, una dintre cele mai importante reguli este să nu dai acces „la grămadă”. Dacă mai mulți colegi trebuie să lucreze în același folder de proiect, soluția corectă nu este să pui totul pe 777, ci să folosești grupuri Linux, proprietari corecți și permisiuni clare.

Scopul este simplu: utilizatorii care fac parte din proiect trebuie să poată citi și modifica fișierele din acel folder, iar restul utilizatorilor de pe server să nu aibă acces inutil.

Situația practică

Să presupunem că ai un proiect în:

/var/www/proiect1

și trei utilizatori care trebuie să lucreze acolo:

  • ion
  • maria
  • alex

Vrei ca ei să poată crea, modifica și șterge fișiere în folderul proiectului, fără să le dai acces administrativ pe tot serverul.

Pasul 1: creează grupul proiectului

Mai întâi creezi un grup dedicat:

sudo groupadd proiect1

Verifici că grupul există:

getent group proiect1

Este o idee bună să creezi câte un grup separat pentru fiecare proiect, nu un grup generic pentru toate site-urile sau toate aplicațiile.

Pasul 2: adaugă utilizatorii în grup

Acum adaugi utilizatorii care trebuie să lucreze în proiect:

sudo usermod -aG proiect1 ion
sudo usermod -aG proiect1 maria
sudo usermod -aG proiect1 alex

Verifici:

groups ion
groups maria
groups alex

Atenție la opțiunea -aG. Dacă uiți -a și folosești doar -G, poți scoate utilizatorul din alte grupuri existente.

După adăugare, utilizatorul trebuie uneori să se reconecteze ca să își încarce noua apartenență la grup.

Pasul 3: setează grupul pe folderul proiectului

Acum trebuie ca folderul proiectului să aparțină grupului proiect1:

sudo chown -R root:proiect1 /var/www/proiect1

Aici:

  • root rămâne proprietarul principal;
  • proiect1 devine grupul asociat folderului.

Poți verifica:

ls -ld /var/www/proiect1

Rezultatul va arăta ceva de tipul:

drwxr-xr-x 5 root proiect1 4096 iul 15 12:00 /var/www/proiect1

Pasul 4: setează permisiunile corecte

Dacă vrei ca membrii grupului să poată scrie în proiect, setează:

sudo chmod -R 775 /var/www/proiect1

Asta înseamnă:

  • proprietarul: citire, scriere, executare;
  • grupul: citire, scriere, executare;
  • ceilalți: doar citire și executare.

Dacă nu vrei ca alți utilizatori să poată nici măcar citi conținutul proiectului, poți merge pe:

sudo chmod -R 770 /var/www/proiect1

Acesta este adesea mai potrivit pentru proiecte interne sau aplicații care nu trebuie expuse altor utilizatori locali.

Pasul 5: activează setgid pe folder

Aici apare un detaliu foarte important. Dacă nu setezi setgid pe folder, fișierele noi create de utilizatori pot ajunge cu grupul principal al fiecăruia, nu cu grupul proiectului.

Ca să forțezi moștenirea grupului proiect1, rulează:

sudo chmod g+s /var/www/proiect1

Verifici cu:

ls -ld /var/www/proiect1

Vei vedea ceva de tipul:

drwxrws--- 5 root proiect1 4096 iul 15 12:00 /var/www/proiect1

Litera s în zona grupului arată că setgid este activ.

Asta înseamnă că fișierele și subfolderele noi create în acel director vor moșteni grupul proiect1. Este exact ce vrei pe un folder colaborativ.

Pasul 6: controlează și permisiunile fișierelor noi

Chiar dacă grupul este moștenit corect, permisiunile fișierelor noi depind și de umask. În multe sisteme, fișierele noi pot apărea cu permisiuni de tip 644, iar folderele cu 755.

Asta poate fi suficient pentru citire, dar nu întotdeauna pentru colaborare completă. Dacă vrei control mai fin, mai ales în echipe, poți folosi ACL.

Pasul 7: folosește ACL pentru control mai precis

Dacă vrei să te asiguri că grupul are acces complet inclusiv pe fișierele noi, instalează ACL dacă nu este deja prezent:

sudo apt install acl

Setezi acces explicit pentru grup:

sudo setfacl -R -m g:proiect1:rwx /var/www/proiect1

Apoi setezi ACL implicit pentru fișierele și folderele create în viitor:

sudo setfacl -R -d -m g:proiect1:rwx /var/www/proiect1

Verifici:

getfacl /var/www/proiect1

ACL este foarte util când permisiunile clasice Linux nu sunt suficiente sau când ai nevoie de reguli mai clare pentru echipe.

Exemplu complet de configurare

Dacă vrei să faci toată configurarea de bază dintr-o bucată:

sudo groupadd proiect1
sudo usermod -aG proiect1 ion
sudo usermod -aG proiect1 maria
sudo usermod -aG proiect1 alex
sudo chown -R root:proiect1 /var/www/proiect1
sudo chmod -R 2770 /var/www/proiect1

Observă 2770:

  • 2 activează setgid;
  • 770 dă acces complet proprietarului și grupului, fără acces pentru ceilalți.

Este una dintre cele mai curate configurații pentru un folder de proiect partajat.

Ce să nu faci

Nu folosi:

chmod -R 777 /var/www/proiect1

Aceasta oferă scriere tuturor utilizatorilor și este o greșeală clasică.

Nu da sudo utilizatorilor doar pentru că nu pot scrie într-un folder. Problema trebuie rezolvată prin grupuri și permisiuni, nu prin acces administrativ general.

Nu amesteca mai multe proiecte fără logică în același grup dacă vrei control real.

Concluzie

Pentru acces controlat la foldere de proiect, rețeta corectă este: grup dedicat, utilizatori adăugați în grup, proprietar și grup setate corect, permisiuni 770 sau 775, plus setgid. Dacă ai nevoie de control mai fin, adaugi ACL.

Așa păstrezi serverul ordonat, reduci riscurile și eviți soluțiile nesigure de tip 777. În administrarea Linux, permisiunile bine făcute de la început economisesc mult timp și multe probleme mai târziu.

Surse folosite

The Linux Documentation Project — Linux Filesystem Hierarchy și permisiuni de bază
Linux man-pages — groupadd, usermod, chmod, chown
Linux man-pages — setfacl și getfacl
Debian Administrator’s Handbook — Users, Groups and Permissions

Facebook
X
WhatsApp

Te-ar putea interesa si: