Как настроить права доступа к файлам для Laravel?

Настройка надлежащих прав доступа к файлам для приложения Laravel имеет решающее значение для его безопасности и функциональности. Laravel, популярный PHP-фреймворк, часто требует, чтобы веб-сервер имел возможность чтения и записи в определенные каталоги. Неправильные разрешения могут привести к различным проблемам, таким как невозможность записи журналов или кэширования данных, что может привести к сбою в работе приложения или даже к сбою в обслуживании веб-страниц.

Использование команд терминала

Использование команд терминала — это прямой и эффективный способ установить права доступа к файлам. Этот подход подходит для тех, кому комфортно работать с командной строкой.

Шаг 1. Установка разрешений для каталога

1. Изменить владельца:

Laravel необходимо прописать разрешения для каталогов «storage» и «bootstrap/cache» . Измените владельца этих каталогов на пользователя и группу веб-сервера.

sudo chown -R $USER:www-data storage bootstrap/cache

Скриншот-2024-07-06-210523

  • 'chown' меняет владельца.
  • '-R' применяет изменение рекурсивно.
  • «$USER» — текущий пользователь.
  • «www-data» — это группа веб-серверов.

Пример в контексте:

Предположим, ваше имя пользователя — «john», и вы развертываете приложение Laravel на сервере, который использует Apache в качестве веб-сервера. Apache обычно работает под пользователем и группой «www-data». Когда вы запускаете команду «sudo chown -R $USER:www-data Storage bootstrap/cache»:

  • Если '$USER' равен 'john' , команда принимает вид 'sudo chown -R john:www-data Storage bootstrap/cache'.
  • Это изменяет право собственности на «хранилище» и «загрузочный/кэш» (и все их содержимое), так что и «Джон» , и любой процесс, работающий в группе «www-data» (например, Apache), могут получать доступ к этим файлам и изменять их по мере необходимости. .

2. Установите разрешения:

Установите разрешения «775» для каталогов.

sudo chmod -R 775 storage bootstrap/cache

Скриншот-2024-07-06-212706

  • «chmod» меняет разрешения.
  • '-R' применяет изменение рекурсивно.
  • «775» означает, что владелец и группа имеют разрешения на чтение, запись и выполнение, в то время как другие имеют разрешения на чтение и выполнение.

Пример в контексте:

Предположим, ваше имя пользователя — «john» , и вы развертываете приложение Laravel на сервере, который использует Apache в качестве веб-сервера. Apache обычно работает под пользователем и группой «www-data» . Когда вы запускаете команду «sudo chmod -R 775 Storage Bootstrap/Cache»:

  • Для каталогов « storage » и «bootstrap/cache» и всего их содержимого будут установлены разрешения «775» .
  • Это позволяет «john» (владельцу) и любому процессу, работающему в группе «www-data» (например, Apache), читать, записывать и выполнять файлы в этих каталогах.
  • Другие пользователи могут только читать и выполнять файлы, но не могут их изменять.

Шаг 2. Установка разрешений для файлов

Убедитесь, что ваши файлы имеют правильные разрешения. Установите права доступа к файлу «644».

sudo find . -type f -exec chmod 644 {} \;

Скриншот-2024-07-06-213236

  • «find» ищет файлы.
  • '.' указывает текущий каталог.
  • '-type f' ограничивает поиск файлами.
  • «-exec» выполняет команду для найденных файлов.
  • «chmod 644» устанавливает права доступа к файлу «rw-r–r–» .

Пример в контексте:

Предположим, у вас есть проект Laravel и вы хотите убедиться, что все файлы в каталоге вашего проекта имеют правильные разрешения для предотвращения несанкционированных изменений, в то же время позволяя веб-серверу читать их.

  • Поиск файлов: команда «найти» начинается с текущего каталога (' . ') и рекурсивно ищет все файлы ('-тип f') .
  • Выполнить команду: для каждого найденного файла опция «-exec» выполняет команду «chmod 644 {}» , где «{}» заменяется путем к текущему файлу.
  • Применить разрешения: команда «chmod 644» изменяет права доступа к файлу на «644» , гарантируя, что владелец имеет разрешения на чтение и запись, в то время как группа и другие имеют разрешения только на чтение.
  • Команда завершения: ' \;' завершает предложение '-exec' , указывая, что команда должна быть выполнена для каждого совпадающего файла.

Шаг 3: Дополнительная безопасность

Защитите свой файл «.env», установив для него права доступа «600».

sudo chmod 600 .env

Скриншот-2024-07-06-213559

  • «chmod 600» устанавливает права доступа к файлу «rw——-».

Пример в контексте:

Предположим, вы развернули приложение Laravel и хотите убедиться, что файл «.env» , содержащий конфиденциальную информацию о конфигурации, защищен от несанкционированного доступа.

  • Установить разрешения владельца: команда «chmod 600» изменяет права доступа к файлу на «600» , предоставляя владельцу разрешения на чтение и запись.
  • Ограничить группу и других: та же команда удаляет все разрешения для группы и других, гарантируя, что никто другой не сможет получить доступ к файлу.
  • Применить разрешения: разрешения применяются к файлу «.env» , обеспечивая его безопасность.