Как правильно расставить права на файлы и директории сайта на VPS?

Перенеc сайт на VPS сервер с системой Debian 12. Установил LAMP стек.
До этого всегда использовал обычный виртуальный хостинг.
Возник вопрос - как правильно расставить права на директории и файлы сайта ,по адресу /var/www/site.ru
На виртуальном хостинге всегда было так: на файлы 664 на папки 755.
А у меня на VPS, если ставлю на файлы права 664 и на папки 755, то сайт не открывается. Приходиться ставить на все файлы и папки права 755. Но безопасно ли это? Может, я что-то неправильно настроил и нужно какому-то пользователю или группе дать определенные права?
Смущает, что на виртуальном хостинге на файлы стояли права 664. Значит, так более безопасно получается.
  • Вопрос задан
  • 181 просмотр
Решения вопроса 1
ky0
@ky0
Миллиардер, филантроп, патологический лгун
На каталоги 755. На файлы, которые должны исполняться 750, на всё остальное 640.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@rPman
Первое число - права для владельца, второе число - на группу, третье - для всех
5 и 7 отличаются от 6 и 4 тем что там установлен бит x - executable, его нужно ставить на каталоги, но на файлы не обязательно (их ставят на скрипты и бинарники, которые нужно запускать, и в случае скриптов это не обязательное условие, просто запуск +x файлов возможен просто указанием файла /path/file)

5 - права на чтение и запуск, 7 - права на чтение+запись и запуск, 4 - права только на чтение, 6 - права на чтение и запись.

скорее всего у тебя по каким то причинам на скрипты твоего бакэнда требуется +x флаг, у тебя там cgi?
почему у тебя работает? потому что ты ставишь 5 на всех пользователей.

Веб сервер работает от пользователя www (или apache или http что там у тебя настроено) а файлы ты скорее всего заливаешь от пользователя root или какого ты создал пользователя для работы

Что можно сделать - добавить своего пользователя в группу www либо настроить веб сервер чтобы он работал с правами твоего пользователя либо авторизоваться при копировании файлов под www (это плохая практика), либо принудительно выставить владельца файлов на www.

Теперь про безопасность... пользователи веб не видят и не имеют доступа к файлам, какие бы права доступа там не стояли, права на них выставляются в настройках веб сервера. Но в веб приложениях (или настройках веб сервера) очень часто обнаруживают уязвимости, которые позволяют к примеру под правами веб сервера www менять что либо в файлах, и если запретить это делать веб серверу, эксплуатировать такую уязвимость будет либо очень сложно либо невозможно, т.е. простой админстративной настройкой повышается безопасность дырявого сервера (не на максимум но плюсик можно ставить)

Правильное решение, грамотно и вдумчиво настроить права доступа, веб сервер должен иметь доступ только на чтение (и на запуск, если этого требует твой бакэнд), еще можно вынести настройки базы данных в какой-нибудь сервис их хранения чтобы простым доступом к файлам этот пароль вытянуть было нельзя. Есть еще практики, запускать веб сервис в chroot/docker с сильно кастрированным окружением, буквально без bash и различных утилит, только веб сервер (помню для ftp точно такие настройки были), следующий этап подписывание скриптов и бинарников с запретом запуска неподписанных, это еще сложнее но повышает уровень безопасности очень высоко.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы