Dozvole datoteka na Linuxu: kako postaviti i razumjeti CHMOD i CHOWN

Article Image

Zašto su dozvole datoteka važne i šta ćete naučiti

Na Linux sistemima, pristup datotekama i direktorijumima kontroliše se pomoću sklopova dozvola. Ako želite da bezbedno delite fajlove, pokrenete servis ili sprečite neželjene izmene, razumevanje dozvola je ključno. U ovom delu ćete naučiti osnovni model dozvola (vlasnik, grupa, ostali), značenje bitova r/w/x i osnovne razlike između simboličkog i numeričkog zapisa. Takođe ćete dobiti kratak pregled komandi chmod i chown — njihova uloga i najčešći primeri primene.

Kako sistem posmatra vlasništvo i pristup

Svaka datoteka i direktorijum u Linuxu ima tri primarna atributa koja definišu ko i kako može da im pristupi:

  • Vlasnik (owner) — korisnik koji poseduje fajl; obično je to kreator fajla ili korisnik kome je dodeljeno vlasništvo.
  • Grupa (group) — grupa korisnika kojoj fajl pripada; članovi grupe imaju zajednički skup dozvola.
  • Ostali (others) — svi ostali korisnici na sistemu koji nisu vlasnik ni član grupe.

Ove tri kategorije zatim imaju po tri vrste dozvola: čitanje (r), pisanje (w) i izvršavanje (x). Za direktorijume, dozvola izvršavanja (x) znači da možete “ući” u direktorijum i pristupati datotekama u njemu ako imate i odgovarajuće druge dozvole.

Simbolički vs. numerički zapis dozvola

Dozvole se često prikazuju na dva načina:

  • Simbolički — niz od devet karaktera podeljenih u tri grupe, npr. rwxr-xr--. Prvih tri znaka su dozvole vlasnika, sledeća tri su za grupu, a poslednja tri za ostale.
  • Numerički (oktalni) — tri cifre koje predstavljaju svaku grupu dozvola: 4 za čitanje, 2 za pisanje, 1 za izvršavanje. Saberate vrednosti za dobijanje broja (npr. 6 = 4+2 → čitanje+pisanje). Primer: 644 znači vlasnik ima čitanje i pisanje (6), grupa ima samo čitanje (4), ostali imaju samo čitanje (4).

Razumevanje oba zapisa olakšava rad sa komandama i tumačenje izlaza komande ls -l, kojom ćete često proveravati trenutne dozvole.

Osnovna ideja iza chmod i chown

chmod menja dozvole fajlova i direktorijuma — bilo simboličkim izrazima (npr. chmod g+w file) ili numeričkim vrednostima (npr. chmod 755 script.sh). chown menja vlasnika i/ili grupu (npr. chown user:group file). U sledećem delu ćemo detaljno pokazati sintaksu, praktične primere i najčešće zamke pri korišćenju ovih komandi, kao i kada treba koristiti sudo privilegije.

Detaljna sintaksa chmod — simbolički operatori, numerički primeri i specijalni bitovi

Komanda chmod nudi fleksibilan skup opcija. Osim osnovnih numeričkih vrednosti (npr. 644, 755), često ćete koristiti simbolički zapis koji kombinuje subjekte (u — owner, g — group, o — others, a — all) i operatore (+, -, =).

  • Dodavanje privilegije: chmod g+w file — daje grupi pravo pisanja.
  • Uklanjanje privilegije: chmod o-x script.sh — uklanja pravo izvršavanja za ostale.
  • Precizno postavljanje: chmod u=rwx,g=rx,o=r file — postavlja tačno definisane dozvole.
  • Svi korisnici: chmod a+X dir — velika X daje izvršenje samo direktorijumima (ili fajlovima koji već imaju x za nekog), korisno pri rekurzivnoj promeni.

Rekurzivna promena dozvola se postiže opcijom -R: chmod -R 750 /srv/project. Pažnja — opasno je bez razmišljanja primeniti -R na kritične direktorijume jer menja sve fajlove i poddirektorijume.

Postoje i specijalni bitovi koji se često zaboravljaju:

  • setuid (4xxx) — izvršavanje fajla sa privilegijama vlasnika (često root). Numerički primer: 4755 za program koji treba da radi sa root privilegijama.
  • setgid (2xxx) — kod fajlova sličan setuid, kod direktorijuma čini da novi fajlovi nasledjuju grupu direktorijuma (2775 za deljene projekte).
  • sticky bit (1xxx) — na direktorijumu sprečava brisanje fajlova od strane korisnika koji nisu vlasnici; primer je 1777 (kao /tmp).

U oktalnom obliku, specijalni bitovi se nalaze kao četvrta (vodilna) cifra: npr. chmod 2775 /shared postavlja setgid i dozvole 775.

Article Image

Korišćenje chown i chgrp — promena vlasništva i grupa

Komanda chown menja vlasnika i grupu. Osnovna sintaksa je chown user:group file. Neke varijante:

  • chown alice:developers project/ — postavlja vlasnika alice i grupu developers na projekat (direktorijum).
  • chown alice: file ili chown alice file — menja samo vlasnika, zadržava postojeću grupu.
  • chown :developers file — menja samo grupu.
  • chown -R alice:developers /var/www/site — rekurzivno menja vlasništvo (zahteva root privilegije kad menjate vlasnika).

Za promenu samo grupe možete koristiti i chgrp: chgrp developers file. Treba imati u vidu da promena vlasnika obično zahteva root; za to koristite sudo chown …. Još jedna korisna opcija je --reference=otherfile koja postavlja vlasnika/grupu po uzoru na drugi fajl: chown --reference=/etc/hostname myfile.

Praktični primeri primene i najčešće greške koje treba izbegavati

Primeri iz prakse olakšavaju razumevanje:

  • Web fajlovi: content i konfiguracije često treba da imaju 644, a izvršni skripti 755. Direktori obično 755 (ili 775 ako grupa treba da piše).
  • Deljeni projekti: postavite chmod -R 2775 /srv/project i obavezno podesite grupu; setgid će osigurati da novi fajlovi nasleđuju grupu.
  • Korišćenje chmod +x za skripte: chmod u+x deploy.sh — samo vlasniku dodajete izvršenje bez menjanja drugih dozvola.

Najčešće greške i zamke:

  • Nepromišljeno korišćenje chmod -R 777 — otvara sistem bezbednosnim rizicima i često je nepotrebno; izbegavajte u produkciji.
  • Mijenjanje vlasništva sistemskih fajlova (/etc, /bin) može zabraniti boot ili pokretanje servisa — uvek proverite pre promena.
  • Na mrežnim fajl sistemima (NFS, CIFS) vlasništvo i prava mogu zavisiti od mount opcija; promena pomoću chown možda neće imati efekta bez odgovarajuće konfiguracije servera ili mount parametara.
  • Ne zaboravite umask — utiče na početne dozvole kreiranih fajlova i može “prepisati” očekivanja pri deljenju fajlova.

Za selektivne promene koristite find (npr. find . -type f -exec chmod 644 {} ; ili find . -type d -exec chmod 755 {} ;) — bezbedniji način nego globalni -R.

Article Image

Saveti za dalje

  • Vežbajte promene dozvola na test okruženju pre nego što ih primenite u produkciji — promena vlasništva ili rekuzivnih dozvola može uzrokovati prekide servisa.
  • Kada treba finija kontrola pristupa, razmotrite ACL (setfacl/getfacl) i sigurnosne mehanizme kao što su SELinux ili AppArmor umesto davanja širokih dozvola.
  • Koristite find za selektivne promene (fajlovi naspram direktorijuma) i izbegavajte opštu primenu chmod -R bez provere.
  • Održavajte backup važnih konfiguracionih fajlova pre nego što menjate vlasništvo ili dozvole.

Završne napomene

Dozvole i vlasništvo su delikatni deo administracije sistema: daju moć da ograničite ili omogućite pristup, ali i rizik ako se koriste neoprezno. Fokusirajte se na princip najmanjih privilegija, testirajte promene i koristite grupne postavke ili ACL kada želite selektivno deljenje bez otvaranja sistema. Za dublje razumevanje sintakse i dodatnih opcija pogledajte Detaljnu dokumentaciju chmod.

Frequently Asked Questions

Da li mogu bezbedno koristiti chmod -R 777 da rešim problem sa pristupom?

Ne preporučuje se. chmod -R 777 daje svima čitanje, pisanje i izvršavanje i predstavlja veliki bezbednosni rizik. Umesto toga, podesite pravog vlasnika i grupu, koristite setgid za deljene direktorijume ili ACL da biste dali određenim korisnicima potrebne privilegije.

Šta tačno radi sticky bit i kada treba koristiti 1777?

Sticky bit na direktorijumu sprečava korisnike koji nisu vlasnici fajla (ili root) da brišu ili preimenjuju fajlove koje poseduje drugi korisnik unutar tog direktorijuma. Tipičan primer je /tmp koji ima dozvole 1777 — svako može stvarati fajlove, ali može brisati samo svoje.

Da li običan korisnik može promeniti vlasništvo datoteke pomoću chown?

Obično ne. Promena vlasnika datoteke zahteva root privilegije na većini sistema; korisnici mogu promeniti grupu fajla u grupu kojoj pripadaju (ako sistem to dozvoljava) pomoću chgrp. Za promenu vlasnika koristite sudo chown ili zatražite od administratora.