Kratak odgovor
Dozvole za fajlove na Linuxu kontrolišu ko može da čita, piše ili izvršava fajlove. Komande `chmod` i `chown` menjaju dozvole i vlasništvo, ali nepravilna upotreba može da izazove greške poput 403 Forbidden ili probleme sa pristupom. Naučite ispravne sintakse i najčešće scenarije da biste izbegli greške.
Kako se problem prepoznaje
- Web server prijavljuje 403 Forbidden za fajlove koji bi trebalo da budu dostupni
- Ne možete da sačuvate izmene u fajlu iako ste prijavljeni kao korisnik
- Skripta ili program ne može da se izvrši iako ima odgovarajuće dozvole
- Nakon premeštanja fajlova, vlasništvo i dozvole su pogrešni
- Pokušaj pristupa fajlu preko FTP/SFTP klijenta vraća grešku Permission denied
Najčešći uzroci
Pogrešno postavljene dozvole
Dozvole poput 777 ili 666 su previše permisivne i mogu da izazovu bezbednosne probleme ili konflikte sa web serverom.
Pogrešan vlasnik fajla
Fajl je u vlasništvu korisnika root ili pogrešnog korisnika, pa web server ili aplikacija ne mogu da mu pristupe.
Neodgovarajuća grupa
Fajl pripada grupi koja nema potrebne dozvole, ili korisnik nije u odgovarajućoj grupi.
Nasleđene dozvole pri kopiranju
Kopiranje fajlova bez očuvanja dozvola (npr. `cp` bez `-p`) dodeljuje kopiji novog vlasnika i dozvole prema umask vrednosti.
Pogrešna umask vrednost
Sistemska umask vrednost može da utiče na podrazumevane dozvole novih fajlova i foldera.
Rešenje korak po korak
- 1
Proverite trenutne dozvole i vlasništvo
Pokrenite
ls -lu direktorijumu sa fajlom. Izlaz prikazuje dozvole, broj linkova, vlasnika, grupu, veličinu i datum. Na primer,-rw-r--r-- 1 korisnik grupa 1234 Jan 1 12:00 fajl.txtznači da vlasnik ima read/write, grupa read, ostali read. - 2
Razumite oznake dozvola
Standardne dozvole se sastoje od tri cifre (vlasnik, grupa, ostali). Svaka cifra je zbir: 4=read, 2=write, 1=execute. Na primer, 644 znači rw- za vlasnika, r-- za grupu i ostale. 755 znači rwx za vlasnika, r-x za grupu i ostale.
- 3
Promenite dozvole pomoću chmod
Koristite
chmodsa oktalnim ili simboličkim zapisom. Dozvole može da menja vlasnik fajla ili root korisnik. Na primer,chmod 644 fajl.txtpostavlja dozvole na rw-r--r--. Za folder koji treba da bude dostupan svima ali da samo vlasnik može da piše, koristitechmod 755 folder. Simbolički:chmod u+x skripta.shdodaje execute vlasniku. - 4
Promenite vlasnika pomoću chown
Komanda
chownobično zahteva root ilisudo.chown korisnik:grupa fajlmenja vlasnika i grupu. Na primer,sudo chown www-data:www-data index.phppostavlja vlasnika i grupu na www-data. Za rekurzivnu promenu koristite-R(npr.sudo chown -R www-data:www-data /var/www/html). Pre toga zabeležite trenutno stanje (ls -lR) ili napravite rezervnu kopiju, jer rekurzivna promena obuhvata sve fajlove i foldere. - 5
Koristite grupe za deljeni pristup
Ako više korisnika treba da pristupa fajlu, dodajte ih u zajedničku grupu i postavite dozvole grupe. Na primer,
chmod 664 fajlichgrp zajednicka_grupa fajl. Korisnici u toj grupi imaće read/write pristup. - 6
Postavite specijalne dozvole (setuid, setgid, sticky)
Setuid (
chmod u+s) omogućava da se program izvršava sa privilegijama vlasnika. Setgid (chmod g+s) na folderu čini da novi fajlovi i podfolderi nasleđuju grupu foldera. Sticky bit (chmod +t) na folderu dozvoljava brisanje uglavnom vlasniku fajla, vlasniku foldera i root korisniku. Koristite ih oprezno. - 7
Izmenite podrazumevane dozvole pomoću umask
Komanda
umaskprikazuje trenutnu masku. Nova vrednost se postavlja saumask 022, što znači da novi fajlovi dobijaju 644, a folderi 755. Ovo utiče samo na trenutnu sesiju; za trajno, izmenite~/.bashrcili/etc/profile. - 8
Proverite i testirajte promene
Nakon izmena, ponovo pokrenite
ls -lda proverite dozvole. Testirajte pristup kao odgovarajući korisnik (npr.sudo -u www-data ls /var/www/html). Uverite se da aplikacija radi bez grešaka.
Ako ništa ne pomogne
Ako i dalje imate probleme sa dozvolama, proverite da li je SELinux ili AppArmor uključen i da li sprečava pristup. Komanda getenforce (SELinux) ili aa-status (AppArmor) može da pokaže status. Takođe, proverite logove web servera (/var/log/nginx/error.log ili /var/log/apache2/error.log) za detalje o greškama. Izbegavajte dozvole 777. Ako morate da proverite da li je problem u dozvolama, uradite to na kopiji sajta ili testnom okruženju i odmah vratite prethodne dozvole. Za napredne slučajeve, konsultujte dokumentaciju za ACL (Access Control Lists) pomoću setfacl i getfacl.
Kako da sprečite da se ponovi
- Izbegavajte dozvole 777 i 666; koristite najmanje potrebne dozvole.
- Redovno proveravajte vlasništvo i dozvole nad fajlovima web aplikacija.
- Koristite grupe za deljeni pristup umesto davanja dozvola svima.
- Prilikom kopiranja koristite `cp -p` da sačuvate dozvole i vremenske oznake, a vlasništvo kada imate odgovarajuća ovlašćenja.
Kada je bolje pozvati stručnjaka
Ako niste sigurni koje dozvole su potrebne za vašu aplikaciju ili ako promene dozvola izazovu prekid rada sajta, obratite se IT stručnjaku. Takođe, ako sumnjate na bezbednosni incident povezan sa dozvolama, bolje je da to pregleda profesionalac.
Održavanje IT infrastrukture · Serveri, mreže, backup, bezbednost i helpdeskČesta pitanja
Koja je razlika između chmod i chown?
`chmod` menja dozvole pristupa (read, write, execute) za vlasnika, grupu i ostale. `chown` menja vlasnika i grupu fajla. Obe komande su neophodne za pravilno upravljanje pristupom.
Zašto ne bi trebalo koristiti chmod 777?
Dozvole 777 omogućavaju svima da čitaju, pišu i izvršavaju fajl, što je veliki bezbednosni rizik. Napadači mogu da izmene fajl ili ga zloupotrebe. Uvek koristite najmanje dozvole potrebne za rad.
Kako da promenim dozvole samo za foldere, a ne za fajlove?
Koristite `find` sa `-type d` za foldere: `find /putanja -type d -exec chmod 755 {} \;`. Za fajlove koristite `-type f` i `chmod 644`.