![]() |
Как проверить права файлов на сервере с CMS — что думаете?
Как проверить права файлов на сервере с CMS — что думаете?
Текст: Права файлов на сервере — вещь, о которой многие либо забывают, либо относятся слишком поверхностно, пока не наступает момент, когда это выстреливает себе в ногу. Особенно на CMS и форумах, где за каждой строкой кода и каждым обращением к файлу стоят настройки прав доступа. Сделаешь не то — и либо хакеры проникают в твои данные, либо сайт перестаёт работать, потому что какой-то скрипт не может прочитать или записать нужный файл. Давайте разберёмся, что это вообще такое, как подойти к проверке прав на сервере и как не наделать глупых ошибок. Буду писать на основе своего опыта, а вы кидайте свои варианты и вопросики, может вместе допишем или поправим. Что такое права файлов и зачем их проверять По сути, права файлов — это набор разрешений, которые определяют, кто и что может делать с конкретным файлом или папкой: читать, писать, выполнять. В мире Linux-серверов (а именно там чаще всего крутятся наши CMS) права делятся на три группы: владелец, группа и остальные пользователи. И каждая из этих групп может иметь разные права. Почему это важно? Если дать широчайшие права 777 (чтение, запись, выполнение — всем и каждому), то с одной стороны — ничего не сломается и скрипт вряд ли упадёт, но с другой — это огромный риск для безопасности, поскольку любой пользователь (вредоносный код, сайт-сосед по серверу) сможет вмешаться в содержимое файлов. С другой стороны, слишком строгие права — например, 600 для папок или файлов, которые должны быть доступны веб-серверу — приведут к ошибкам, сайт перестанет работать, скрипты не смогут писать в логи или загружать файлы. В общем, баланс — наше всё. Как проверить и выставить права — пошагово 1. Заходите на сервер по SSH (если вы еще не знакомы с терминалом — самое время научиться). 2. Переходите в каталог с вашей CMS (например, /var/www/site). 3. Команда ls -l покажет список файлов с их правами (например, drwxr-xr-x или -rw-r--r--). Разбираемся, что означают буквы и цифры: - первая позиция — тип: d (директория), - (файл) - три следующие — права владельца (r — читать, w — писать, x — выполнять) - следующие три — группа - последние три — остальные пользователи Пример: -rw-r--r-- 1 user user 1024 июн 1 12:00 config.php Это значит, что владелец user может читать и писать, группа и остальные — только читать. Самая частая практика для CMS — выставить папкам права 755 (drwxr-xr-x), а файлам 644 (-rw-r--r--). Такой набор обычно позволяет и сайту работать, и не даёт лишних прав на изменение файлов. Практический пример на Wordpress: - wp-config.php — обычно ставят 600, чтобы никто кроме владельца не мог его читать, там же пароль базы данных лежит. - папка uploads — 755, чтобы веб-сервер мог записывать туда файлы, загруженные пользователями. Чек-лист по проверке прав файлов на CMS сервере: - Убедиться, что владельцем файлов и папок является правильный пользователь (обычно тот, от которого запускается веб-сервер, например, www-data или apache). - Папкам дать права 755, чтобы гарантировать доступ и возможность выполнения. - Файлам — 644, чтобы скрипты могли читать, но запись была ограничена. - Настроить особые файлы, вроде конфигурации, с более строгими правами (600). - Проверить, что нет папок и файлов с правами 777, особенно в продуктивной среде. - Если CMS использует временные каталоги для заливки, проверить их права отдельно. - Тестировать работу сайта после изменения прав: загрузка файлов, работа форм, генерация кэша. Типичные ошибки при работе с правами на сервере - Ставить 777 "на всякий случай" — часто это первое, что делают новички. Да, проблема решается, но только временно, и цена очень высокая в плане безопасности. - Давать слишком строгие права, например 600 на папки — скрипты просто перестают работать. - Игнорировать владельца файлов. Даже если права кажутся ок, если собственник не тот, веб-сервер может не получить доступ. - Менять права без понимания, для всего дерева папок подряд, что приводит к некорректной работе CMS. - Не использовать правильные инструменты для проверки и назначения прав — иногда проще прибегнуть к chmod рекурсивно, но это нежелательно без разбора. FAQ по проверке прав на сервере с CMS Вопрос: Можно ли делать все права по 755 и для файлов, и для папок? Ответ: Нет. Файлы обычно не должны быть исполняемыми, а 755 как раз даёт право выполнения. Лучше для файлов ставить 644. Вопрос: Что делать, если после изменения прав сайт перестал работать? Ответ: Вероятнее всего, либо слишком строгие права, либо неправильный владелец. Проверьте логи сервера и откатите изменения. Вопрос: Как узнать, под каким пользователем работает веб-сервер? Ответ: Можно использовать команды типа ps aux | grep apache или ps aux | grep nginx, или посмотреть конфиги. Вопрос: А нужно ли менять права на конфигурационные файлы? Ответ: Да, файлы с паролями и ключами должны иметь максимально строгие права (обычно 600), чтобы никто, кроме владельца, не мог их прочитать. Вопрос: Как проверять права для популярных CMS? Ответ: Большинство систем — Wordpress, Joomla, Drupal — имеют официальные рекомендации по правам на своих сайтах. Их стоит использовать как базу, а потом корректировать для своего хостинга. Буду рад услышать у кого какие лайфхаки и советы по проверке и выставлению прав. Кто недавно боролся с подобной проблемой? Что оказалось болевой точкой? Можете добавить свои команды, автоматизации или скрипты, которые помогают быстро проводить аудит прав на сервере. Тогда вместе сделаем тему еще полезнее для сообщества. |
| Время: 21:29 |