Кратак одговор
Дозволе за фајлове на Linuxu контролишу ко може да чита, пише или извршава фајлове. Команде `chmod` и `chown` мењају дозволе и власништво, али неправилна употреба може да изазове грешке попут 403 Forbidden или проблеме са приступом. Научите исправне синтаксе и најчешће сценарије да бисте избегли грешке.
Како се проблем препознаје
- Web server пријављује 403 Forbidden за фајлове који bi требало да буду доступни
- Не можете да сачувате измене у фајлу иако сте пријављени као корисник
- Скрипта или програм не може да се изврши иако има одговарајуће дозволе
- Након премештања фајлова, власништво и дозволе су погрешни
- Покушај приступа фајлу преко ФТП/СФТП клијента враћа грешку Permission дениед
Најчешћи узроци
Погрешно постављене дозволе
Дозволе попут 777 или 666 су превише пермисивне и могу да изазову безбедносне проблеме или конфликте са web сервером.
Погрешан власник фајла
Фајл је у власништву корисника root или погрешног корисника, па web server или апликација не могу да му приступе.
Неодговарајућа група
Фајл припада групи која нема потребне дозволе, или корисник није у одговарајућој групи.
Наслеђене дозволе при копирању
Копирање фајлова без очувања дозвола (нпр. `cp` без `-p`) додељује копији новог власника и дозволе према умаск вредности.
Погрешна умаск вредност
Системска умаск вредност може да утиче на подразумеване дозволе нових фајлова и фолдера.
Решење корак по корак
- 1
Проверите тренутне дозволе и власништво
Покрените
ls -lу директоријуму са фајлом. Излаз приказује дозволе, број линкова, власника, групу, величину и датум. На пример,-rw-r--r-- 1 korisnik grupa 1234 Jan 1 12:00 fajl.txtзначи да власник има read/write, група реад, остали реад. - 2
Разумите ознаке дозвола
Стандардне дозволе се састоје од три цифре (власник, група, остали). Свака цифра је збир: 4=реад, 2=write, 1=execute. На пример, 644 значи rw- за власника, р-- за групу и остале. 755 значи rwx за власника, r-x за групу и остале.
- 3
Промените дозволе помоћу chmod
Користите
chmodса окталним или симболичким записом. Дозволе може да мења власник фајла или root корисник. На пример,chmod 644 fajl.txtпоставља дозволе на rw-r--r--. За фолдер који треба да буде доступан свима али да само власник може да пише, користитеchmod 755 folder. Симболички:chmod u+x skripta.shдодаје execute власнику. - 4
Промените власника помоћу chown
Команда
chownобично захтева root илиsudo.chown korisnik:grupa fajlмења власника и групу. На пример,sudo chown www-data:www-data index.phpпоставља власника и групу на www-data. За рекурзивну промену користите-R(нпр.sudo chown -R www-data:www-data /var/www/html). Пре тога забележите тренутно стање (ls -lR) или направите резервну копију, јер рекурзивна промена обухвата све фајлове и фолдере. - 5
Користите групе за дељени приступ
Ако више корисника треба да приступа фајлу, додајте их у заједничку групу и поставите дозволе групе. На пример,
chmod 664 fajlиchgrp zajednicka_grupa fajl. Корисници у тој групи имаће read/write приступ. - 6
Поставите специјалне дозволе (сетуид, сетгид, sticky)
Сетуид (
chmod u+s) омогућава да се програм извршава са привилегијама власника. Сетгид (chmod g+s) на фолдеру чини да нови фајлови и подфолдери наслеђују групу фолдера. Sticky бит (chmod +t) на фолдеру дозвољава брисање углавном власнику фајла, власнику фолдера и root кориснику. Користите их опрезно. - 7
Измените подразумеване дозволе помоћу умаск
Команда
umaskприказује тренутну маску. Нова вредност се поставља саumask 022, што значи да нови фајлови добијају 644, а фолдери 755. Ово утиче само на тренутну сесију; за трајно, измените~/.bashrcили/etc/profile. - 8
Проверите и тестирајте промене
Након измена, поново покрените
ls -lда проверите дозволе. Тестирајте приступ као одговарајући корисник (нпр.sudo -u www-data ls /var/www/html). Уверите се да апликација ради без грешака.
Ако ништа не помогне
Ако и даље имате проблеме са дозволама, проверите да ли је SELinux или AppArmor укључен и да ли спречава приступ. Команда getenforce (SELinux) или aa-status (AppArmor) може да покаже статус. Такође, проверите логове web сервера (/var/log/nginx/error.log или /var/log/apache2/error.log) за детаље о грешкама. Избегавајте дозволе 777. Ако морате да проверите да ли је проблем у дозволама, урадите то на копији сајта или тестном окружењу и одмах вратите претходне дозволе. За напредне случајеве, консултујте документацију за ACL (Access Control Листс) помоћу setfacl и getfacl.
Како да спречите да се понови
- Избегавајте дозволе 777 и 666; користите најмање потребне дозволе.
- Редовно проверавајте власништво и дозволе над фајловима web апликација.
- Користите групе за дељени приступ уместо давања дозвола свима.
- Приликом копирања користите `cp -p` да сачувате дозволе и временске ознаке, а власништво када имате одговарајућа овлашћења.
Када је боље позвати стручњака
Ако нисте сигурни које дозволе су потребне за вашу апликацију или ако промене дозвола изазову прекид рада сајта, обратите се IT стручњаку. Такође, ако сумњате на безбедносни инцидент повезан са дозволама, боље је да то прегледа професионалац.
Одржавање IT инфраструктуре · Сервери, мреже, backup, безбедност и хелпдескЧеста питања
Која је разлика између chmod и chown?
`chmod` мења дозволе приступа (реад, write, execute) за власника, групу и остале. `chown` мења власника и групу фајла. Обе команде су неопходне за правилно управљање приступом.
Зашто не bi требало користити chmod 777?
Дозволе 777 омогућавају свима да читају, пишу и извршавају фајл, што је велики безбедносни ризик. Нападачи могу да измене фајл или га злоупотребе. Увек користите најмање дозволе потребне за рад.
Како да променим дозволе само за фолдере, а не за фајлове?
Користите `find` са `-type d` за фолдере: `find /putanja -type d -exec chmod 755 {} \;`. За фајлове користите `-type f` и `chmod 644`.