Upravljanje datotekama Linux za developere i sysadmine

Article Image

Zašto poznavanje datotečnog sistema ubrzava dnevni rad

Kao developer ili sysadmin, rad sa datotekama u Linuxu nije samo osnovna veština — to je ključ za produktivnost, bezbednost i automatizaciju. Vi upravljate konfiguracijama, skriptama, izvorom koda i logovima koji su svi organizovani kroz jedinstveni hijerarhijski datotečni sistem. Razumevanje gde se šta nalazi, kako se pristupa i kako se kontrolišu permisije omogućava vam brže rešavanje problema, sigurnije deploy-e i manje grešaka pri automatizaciji.

U ovom delu radićemo kroz osnovne koncepte koji vam trebaju odmah: struktura direktorijuma, tipovi datoteka, rad sa putanjama i osnovne komande koje koristite svakodnevno. Fokusiraćemo se na praktičan, komandno-line pristup koji olakšava automatizaciju i rad u server okruženjima.

Osnovna mapa datotečnog sistema i značenje putanja

Standardne lokacije koje treba odmah naučiti

Linux koristi stabilnu hijerarhiju koja se relativno retko menja. Evo ključnih direktorijuma koje ćete stalno koristiti:

  • / — korenski direktorijum; sve počinje ovde.
  • /home — korisnički direktorijumi; vaš radni prostor obično je /home/vaš_korisnik.
  • /etc — konfiguracione datoteke sistema i servisa (npr. nginx, sshd).
  • /var — promenjivi podaci: logovi (/var/log), baze (/var/lib), privremene datoteke.
  • /usr — aplikacije i binarni fajlovi koji nisu neophodni za boot (npr. /usr/bin).
  • /mnt i /media — privremena mount tačke za diskove i uređaje.

Razlika između apsolutnih i relativnih putanja je presudna: apsolutna putanja počinje sa / i uvek vodi do istog mesta, dok se relativna putanja računa u odnosu na trenutni direktorijum (pwd). U svakodnevnom radu koristite ~ kao skraćenicu za vaš home direktorijum i .. za povratak za jedan nivo gore.

Osnovne komande i brzi radni tokovi

Slobodno vežbajte ove komande dok čitate — one su osnova svakog shell skripta i manualnog rada:

  • ls — listanje sadržaja direktorijuma; koristite -la za skrivene fajlove i detaljan prikaz.
  • cd — promena direktorijuma; koristite cd – da se vratite u prethodni.
  • cp, mv, rm — kopiranje, premeštanje i brisanje; uvek proverite pre brisanja, koristite -i za interaktivno.
  • mkdir, rmdir — kreiranje i uklanjanje direktorijuma; mkdir -p stvara međupostojeće foldere.
  • find i locate — traženje fajlova: find daje moćne kriterijume (ime, veličina, tip), a locate je brz indeksni alat.
  • ln -s — kreiranje simboličkih linkova za deljene resurse i verzionisanje konfiguracija.

U praksi ćete kombinovati ove komande u skriptama i pipama. Sledeći deo će detaljno objasniti rad sa permisijama, vlasništvom i kako bezbedno upravljati pristupom datotekama na serverima.

Article Image

Permisije i vlasništvo — praktično, jasno i bez iznenađenja

Osnovni model permisija u Linuxu deli pristup na tri klase: vlasnik (user), grupa (group) i ostali (others). Svaka klasa ima tri bit-a: čitati (r), pisati (w) i izvršavati (x). U svakodnevnom radu koristite:

  • chmod za menjanje permisija — brojčano (npr. chmod 755 fajl) i simbolički (npr. chmod u=rwx,g=rx,o=r fajl).
  • chown za promenu vlasnika i chgrp za promenu grupe (ili chown korisnik:grupa fajl).
  • ls -l za proveru i stat za detaljnije informacije (stat -c “%U %G %a %n” fajl).

Praktican primer: ako želite da direktorijum bude čitljiv i izvršiv samo za vlasnika i grupu, koristite chmod 750 direktorijum. Kada menjate rekursivno, dodajte -R, ali budite pažljivi: chmod -R 777 može otvoriti sistem za zloupotrebe. Pre izvršenja komandi koje menjaju mnogo fajlova, prvo testirajte find . -maxdepth 2 -type f -name ‘*.conf’ -print.

Posebni bitovi i umask — kontrola nasleđivanja i sigurnosti zajedničkih foldera

Postoje posebni bitovi koji menjaju ponašanje fajlova i direktorijuma:

  • setuid (s na korisničkom bitu) — izvršna datoteka se pokreće sa pravima vlasnika; pazite, često je izvor sigurnosnih problema (pronađite setuid fajlove: find / -perm /4000 -type f -ls).
  • setgid (s na grupnom bitu) — izvršni fajl se pokreće sa grupnim pravima; na direktorijumu postavljanje setgid (chmod g+s dir) osigurava da novi fajlovi naslede grupu direktorijuma (korisno za timske projekte).
  • sticky bit (t) — na zajedničkim direktorijumima (npr. /tmp) dozvoljava brisanje samo vlasniku fajla ili root-u (chmod +t dir).

Umask definiše koje bita će biti isključeni kada se kreira novi fajl/direktorijum. Tipične vrednosti su 022 (nova datoteka 644, direktorijum 755) i 002 (za timske okoline, nova datoteka 664, direktorijum 775). Postavite umask u shell profilu (~/.profile, /etc/profile) ili sistemski u /etc/login.defs, zavisno od potreba.

Napredne kontrole: ACL, capabilities i praktični deploy saveti

Kada standardne permisije nisu dovoljne, koristite ACL (Access Control Lists). Komande getfacl i setfacl omogućavaju fino podešavanje pristupa bez menjanja standardnih bitova. Primer: setfacl -m u:alice:rwx projekat dozvoljava korisnici alice puna prava, dok getfacl projekat prikazuje sve ACL unose. Default ACL (-d) na direktorijumu osigurava da novi fajlovi naslede ACL pravila.

Umesto setuid za elevaciju privilegija, razmislite o capabilities (setcap). Na primer, setcap ‘cap_net_bind_service=+ep’ /usr/bin/myapp omogućava bind na niske portove bez pokretanja binarnog fajla kao root.

Za deploy i sinhronizaciju zadržite permisije i vlasništvo: rsync -a (–archive) čuva većinu atributa, dok tar -p ili tar –same-permissions čuva permisije pri pakovanju. Ako kopirate između mašina, koristite root ili odgovarajuće mapiranje korisnika da biste sačuvali vlasništvo.

Na proizvodnim serverima imajte na umu dodatne sigurnosne slojeve: SELinux ili AppArmor mogu nadjačati Unix permisije. Provera: getenforce ili sestatus (SELinux) i aa-status (AppArmor). Ako su uključeni, naučite kako koristiti restorecon/chcon i setsebool ili profile za AppArmor umesto da menjate samo Unix permisije.

Na kraju — pravilo za sysadmine i developere: uvek dokumentujte i automatizujte pravila za permisije u vašim deploy skriptama i CI/CD procesima. Ručne izmene na proizvodnji su izvor grešaka; bolje je imati reproducibilne korake koji postavljaju vlasništvo, permisije, ACL i capabilities dosledno.

Za brzi prelaz iz teorije u praksu, postavite lokalni sandbox (VM ili kontejner), napravite nekoliko korisničkih i grupnih scenarija, testirajte umask, setgid i ACL na direktorijumu projekta, i automatizujte korake pomoću skripti ili Ansible playbook-a. Korišćenje verzionog repozitorijuma za konfiguracione fajlove i dokumentovanje pravila olakša vraćanje i auditovanje promena.

Article Image

Završne napomene i sledeći koraci

U radu sa datotekama prioritizujte automatizaciju i reproducibilnost: napišite skripte koje postavljaju permisije, vlasništvo i ACL-ove dosledno na svim okruženjima, uključite provere u CI i koristite monitoring za otkrivanje neočekivanih promena. Za dublje razumevanje hijerarhije datotečnog sistema i preporučene prakse, pogledajte FHS specifikaciju. Nastavite sa malim eksperimentima u izolovanom okruženju i dokumentujte pravila da biste smanjili rizik u produkciji.

Frequently Asked Questions

Kako bezbedno promeniti permisije na velikom broju fajlova?

Prvo uradite probni run koristeći find sa -print ili -ls da vidite ciljne fajlove, zatim koristite find … -exec chmod … ; ili xargs za izmenu. Razmotrite kombinaciju find -maxdepth i -type kako biste ciljali samo fajlove ili direktorijume, i testirajte na kopiji ili u staging okruženju pre primene na produkciju.

Kada je bolje koristiti ACL umesto standardnih Unix permisija?

Upotrebite ACL kada trebate fino podešavanje pristupa za više pojedinačnih korisnika bez menjanja vlasnika ili osnovne grupe — npr. dodavanje specifičnih prava jednoj osobi u timskom folderu dok ostali zadržavaju drugačija prava. ACL dozvoljavaju granularnije pravilo bez promene globalne strukture permisija.

Kako sačuvati permisije i vlasništvo prilikom deploy-a između servera?

Kod kopiranja između mašina koristite alate koji čuvaju atribute: rsync -a (ili rsync -aHAX) i tar sa –same-permissions/–preserve. Ako je potrebno sačuvati vlasništvo, pokrenite kopiranje kao root ili koristite mapiranje korisnika; u automatizaciji eksplicitno setujte chown/chmod nakon transfera kao deo deploy skripte.