Ситуация: проект на Laravel, пользователи: Nginx/PHP-FPM: ‘www-data’, разработчик: ‘mcodex’.
Если задать владельца всего проекта как www-data, то при выполнении консольной команды от имени пользователя, ( например, php artisan), может появится ошибка доступа к файлу лога “Failed to open stream: Permission denied”.
Необходимо задать права на логи так, что бы в них могли записывать и у пользователь разработчика и PHP-FPM. Вариант с назначением 777 не рассматриваем.
Шаги:
1. Добавляем mcodex в группу www-data
sudo usermod -aG www-data mcodex2. Перелогиниваемся, проверяем
groups mcodexВ списке видим www-data
3. В корне проекта задаем владельца и группу
sudo chown -R mcodex:www-data storage bootstrap/cache4. Даем группе права на запись
sudo chmod -R g+rwX storage bootstrap/cache5. Задаем setgid, что бы новые файлы и папки автоматически получали группу www-data
sudo find storage bootstrap/cache -type d -exec chmod g+s {} \;5. Проверяем права на логи
ls -la storage/logsПолучаем
drwxrwsr-x mcodex www-data logs
-rw-rw-r-- mcodex www-data laravel.logДля удобства – права одной командой (в терминале вставляем Ctr+Shift+V)
sudo chown -R mcodex:www-data storage bootstrap/cache && \
sudo chmod -R g+rwX storage bootstrap/cache && \
sudo find storage bootstrap/cache -type d -exec chmod g+s {} \;