Preskoči na sadržaj

Dozvole za fajlove na Linuxu: chmod i chown bez greške

Srednje 15 min Ažurirano:

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. 1

    Proverite trenutne dozvole i vlasništvo

    Pokrenite ls -l u 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.txt znači da vlasnik ima read/write, grupa read, ostali read.

  2. 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. 3

    Promenite dozvole pomoću chmod

    Koristite chmod sa oktalnim ili simboličkim zapisom. Dozvole može da menja vlasnik fajla ili root korisnik. Na primer, chmod 644 fajl.txt postavlja dozvole na rw-r--r--. Za folder koji treba da bude dostupan svima ali da samo vlasnik može da piše, koristite chmod 755 folder. Simbolički: chmod u+x skripta.sh dodaje execute vlasniku.

  4. 4

    Promenite vlasnika pomoću chown

    Komanda chown obično zahteva root ili sudo. chown korisnik:grupa fajl menja vlasnika i grupu. Na primer, sudo chown www-data:www-data index.php postavlja 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. 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 fajl i chgrp zajednicka_grupa fajl. Korisnici u toj grupi imaće read/write pristup.

  6. 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. 7

    Izmenite podrazumevane dozvole pomoću umask

    Komanda umask prikazuje trenutnu masku. Nova vrednost se postavlja sa umask 022, što znači da novi fajlovi dobijaju 644, a folderi 755. Ovo utiče samo na trenutnu sesiju; za trajno, izmenite ~/.bashrc ili /etc/profile.

  8. 8

    Proverite i testirajte promene

    Nakon izmena, ponovo pokrenite ls -l da 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`.

Podeli
Niste našli rešenje?AI IT asistent je dostupan 24/7. Opišite problem ili pošaljite screenshot greške i dobićete uputstvo za vaš slučaj.Pitajte AI IT asistenta