Доступ запрещен - как исправить

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Аватара пользователя
svil
Сообщения: 563
Зарегистрирован: 2018.02.12, 22:41

Re: Доступ запрещен - как исправить

Сообщение svil »

Надо чтоб у всех папок был один пользователь в группе пользователя веб сервера. Над этим и работаю
Tommi
Сообщения: 90
Зарегистрирован: 2013.08.01, 13:44

Re: Доступ запрещен - как исправить

Сообщение Tommi »

proctoleha писал(а): 2019.03.25, 06:34 1. У меня web директория с проектами принадлежит текущему пользователю, под которым я работаю
2. Nginx также работает от имени текущего пользователя.
А php, запускаемый nginx, под тем же получается пользователем, и если на сайте уязвимость, то php сможет переписать файлы с кодом проекта.
Аватара пользователя
svil
Сообщения: 563
Зарегистрирован: 2018.02.12, 22:41

Re: Доступ запрещен - как исправить

Сообщение svil »

Заработало. Здесь главное порядок телодвижений. Сначала назначить всему проекту пользователя www-data из группы пользователей.
Потом уже править права на 777

Код: Выделить всё

root@ilin:/var/www/html/lema#  chown -R www-data:www-data /var/www/html/lema
root@ilin:/var/www/html/lema# chmod -R 777 /var/www/html/lema/assets
root@ilin:/var/www/html/lema# chmod -R 777 /var/www/html/lema/web/assets
root@ilin:/var/www/html/lema# chmod -R 777 /var/www/html/lema/runtime
Проблема была при создании папки, куда надо было записать картинки. Несколько пользователей на папки в проекте(у меня был root www-data) не есть хорошо. В чужую папку картинка не запишется, даже если ее в процессе менять на другого пользователя-это не спасает. Главное до начала отправки/открытия в браузере проекта сразу опеределить пользователя, а потом права.
Аватара пользователя
proctoleha
Сообщения: 298
Зарегистрирован: 2016.07.10, 19:00

Re: Доступ запрещен - как исправить

Сообщение proctoleha »

Tommi писал(а): 2019.03.25, 10:24 А php, запускаемый nginx, под тем же получается пользователем, и если на сайте уязвимость, то php сможет переписать файлы с кодом проекта.
Пример? Хотя бы теоретический? Есть что-то кроме общих слов?

Вот ситуация из моей практики, с пред. места работы

1. Есть vds c служебными сайтами, есть обычный пользователь, от имени которого работает отдельный php-fpm пул + nginx
2. Шеф решил попробовать поработать с сторонними разработчиками, и мне их нужно пустить на наш vds. Создал отдельного пользователя, все проекты также запускаются от его имени, пользователь ограничен только своими проектами.

Если бы оба пользователя, в примере выше, были бы в группе www-data, то такого жесткого разграничения не было бы. Подробности: https://xakep.ru/2017/01/11/nginx-custom-config/

И попутно: никаких проблем с правами доступа, все в домашней директории пользователя.
Вот за что я не люблю линукс, так это за свои кривые, временами, руки
Аватара пользователя
leonenco
Сообщения: 155
Зарегистрирован: 2017.01.30, 22:42

Re: Доступ запрещен - как исправить

Сообщение leonenco »

SiZE писал(а): 2019.03.25, 09:27
chesar писал(а): 2019.03.24, 23:14

Код: Выделить всё

sudo chown -R www-data:www-data /var/www/html/lema

Код: Выделить всё

sudo chmod -R g+rw /var/www/html/lema
Эти две команды должны решить проблему, если php скрипт вызывается от пользователя www-data. И там не переопределены другие (ACL).

Но чем гадать на кофейной гуще. Надо узнать в какую директорию нет прав.
Правельно Согласен, рекурсивно определить пользователя и группу www-data для всего проекта от sudo, по крайней мере я так все локалки прописываю.
Аватара пользователя
leonenco
Сообщения: 155
Зарегистрирован: 2017.01.30, 22:42

Re: Доступ запрещен - как исправить

Сообщение leonenco »

svil писал(а): 2019.03.25, 11:03 Заработало. Здесь главное порядок телодвижений. Сначала назначить всему проекту пользователя www-data из группы пользователей.
Потом уже править права на 777

Код: Выделить всё

root@ilin:/var/www/html/lema#  chown -R www-data:www-data /var/www/html/lema
root@ilin:/var/www/html/lema# chmod -R 777 /var/www/html/lema/assets
root@ilin:/var/www/html/lema# chmod -R 777 /var/www/html/lema/web/assets
root@ilin:/var/www/html/lema# chmod -R 777 /var/www/html/lema/runtime
Проблема была при создании папки, куда надо было записать картинки. Несколько пользователей на папки в проекте(у меня был root www-data) не есть хорошо. В чужую папку картинка не запишется, даже если ее в процессе менять на другого пользователя-это не спасает. Главное до начала отправки/открытия в браузере проекта сразу опеределить пользователя, а потом права.
Я бы на твоем месте внес себя в группу www-data и потом от лида этой группы могла править файлы и назначать права на весь проект и папки в отдельности.
Tommi
Сообщения: 90
Зарегистрирован: 2013.08.01, 13:44

Re: Доступ запрещен - как исправить

Сообщение Tommi »

proctoleha писал(а): 2019.03.26, 05:47 Пример? Хотя бы теоретический? Есть что-то кроме общих слов?
К чему агрессия?
file_put_contents умеет записывать файлы , подходит пример?
Я не про разработку в команде, а про работу проекта на prodaction.
Если вебсервер(с пхп) работает под www-data и может только читать файлы с проектом, а записывать только в папку с логами и картинками(которые или вне доступа снаружи или защищены от выполнения php файлов), то безопасней получается же ?
Аватара пользователя
proctoleha
Сообщения: 298
Зарегистрирован: 2016.07.10, 19:00

Re: Доступ запрещен - как исправить

Сообщение proctoleha »

Tommi писал(а): 2019.03.26, 09:12 К чему агрессия?
file_put_contents умеет записывать файлы , подходит пример?
Я не про разработку в команде, а про работу проекта на prodaction.
Если вебсервер(с пхп) работает под www-data и может только читать файлы с проектом, а записывать только в папку с логами и картинками(которые или вне доступа снаружи или защищены от выполнения php файлов), то безопасней получается же ?
Агрессии нет. Есть желание разобраться. Я тоже говорю о production.
Поэтому прошу, очень корректно, дайте какую-либо ссылку, или объясните о какой уязвимости идет речь. file_put_contents - пример не подходит, опять общие слова.

Я могу представить, что кто-то ломанул сервер, тем, или иным способом, получил доступ к учетной записи одного пользователя, и пользуясь тем, что этот пользователь входит в группу www-data, начинает читать, через симлинки, проекты др. пользователей, сам так смогу, если приспичит.

Поэтому очень корректно прошу еще раз: объясните на пальцах, на конкретных примерах, с названием вида уязвимости, чем плохо то, что php-fpm пул работает от имени текущего пользователя.
Вот за что я не люблю линукс, так это за свои кривые, временами, руки
Tommi
Сообщения: 90
Зарегистрирован: 2013.08.01, 13:44

Re: Доступ запрещен - как исправить

Сообщение Tommi »

proctoleha писал(а): 2019.03.26, 11:14 с названием вида уязвимости
На русском языке вроде было написано:
Tommi писал(а): 2019.03.25, 10:24 если на сайте уязвимость
Объяснять что такое сайт?
Аватара пользователя
proctoleha
Сообщения: 298
Зарегистрирован: 2016.07.10, 19:00

Re: Доступ запрещен - как исправить

Сообщение proctoleha »

Tommi писал(а): 2019.03.26, 14:41
proctoleha писал(а): 2019.03.26, 11:14 с названием вида уязвимости
На русском языке вроде было написано:
Tommi писал(а): 2019.03.25, 10:24 если на сайте уязвимость
Объяснять что такое сайт?
Хм, вот к вам приходит врач и говорит: вы болеете, вам надо лечиться, и уходит. Вы ему вслед: доктор, а какая у меня болезнь-то? Он к вам оборачивается и говорит: я же вам по русски сказал: вы болеете, что непонятно?

Есть много видов уязвимостей сайта, какая из них может отработать, если php-fpm будет запущен от имени текущего пользователя? Если затрудняетесь указать тип уязвимости, опишите хотя бы примерный сценарий при котором могут наступить печальные последствия в данном случае.

И, да объясните мне что такое сайт. Как-то ушел я от этого понятия. Почему-то последние несколько лет приходится работать с web приложениями, которые решают достаточно объемные задачи.
Вот за что я не люблю линукс, так это за свои кривые, временами, руки
skynin
Сообщения: 400
Зарегистрирован: 2017.12.12, 10:09

Re: Доступ запрещен - как исправить

Сообщение skynin »

Обычная дырка, на примере Wordpressовских - в js скриптах на фронтенде есть способ загрузить в каталог с картинками или плагинами - свой скрипт. И код плагина при каких-то сценариях сканирует эти каталоги, и запускает из них скрипты.

Минимальный уровень безопасности поэтому - это запрет php-fpm писать туда, куда ему не положено.
Неважно от какого пользователя - этот пользователь НЕ должен иметь прав на запись там где ему не нужно писать.

Если обновляете с помощью гита, то еще и читать папочку .git такому пользователю - нельзя.

А это почти все каталоги, кроме:
- каталогов картинок, которые отдаются в браузер
- каталоги runtime куда пишутся логи и файловые кэши

Для таких каталогов также должно быть предусмотрено что ничего из них пользователь php-fpm запустить не может.
на случай если подсунут какой-нить скрипт.

Если обновляетесь гитом то конечно от имени другого пользователя, с правами на запись.

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