![]() |
Как проверить права файлов на сервере с CMS — обсуждение
Введение
Права файлов на сервере — это основа безопасности любой CMS, форума или вообще любого веб-проекта, который вы держите на сервере. Если права заданы неправильно, то можно словить кучу проблем — от невозможности нормально работать с сайтом до того, что кто-то чужой получит доступ к важным данным или сможет слить конфиденциальную инфу. Поэтому всегда стоит уделять внимание проверке и правильной настройке этих прав. В этом посте расскажу, как это сделать, на что обратить внимание, и поделюсь личным опытом. Что такое права файлов и почему они важны Права файлов в Unix-подобных системах — это набор разрешений, которые объясняют системе, кто и что может делать с файлом или папкой. Обычно это чтение (r), запись (w) и выполнение (x). Все эти права можно посмотреть через команду ls -l, там отображаются три группы: владелец файла, группа, и остальные пользователи. Каждая из них может иметь разные права. Чтобы проще писать, используют цифровую форму: например, 755 или 644 — это популярные значения для веб-проектов. Если коротко, права контролируют доступ: допустим, скрипт должен быть исполняемым, конфиг не должен читаться всеми подряд, а папка с загрузками должна быть доступна для чтения вебсервером. Применение прав на практике Права нужны почти везде — в том числе: - В корневых папках CMS, где располагается ядро и плагины - В конфигурационных файлах, которые содержат настройки подключения к базе, пароли и ключи - В папках с загруженными пользователями файлами — картинками, документами и прочим контентом - В скриптах, которые обрабатывают логику сайта или форума Правильные права защищают от многих бед — например, если дать всем права на запись в папку с конфигом, правда маловероятно, что это хорошо закончится. Типичные права — примеры - Конфигурационные файлы: 600 или 640. Это значит, что только владелец (обычно пользователь, от которого запускается вебсервер) может читать и писать. - Скрипты: 755 — права позволяют исполнение, и владелец может менять файл. - Папки с изображениями и чужими файлами: 755 — чтобы вебсервер мог заходить и читать папки. - Темпы и кеш-файлы: иногда ставят 777, но только временно и с осторожностью. Практический опыт Я столкнулся с ситуацией, когда одна CMS постоянно ругалась на невозможность записи в папку uploads. Стоило проверить права — там стоял 700, а вебсервер работал от пользователя www-data. После смены на 755 всё заработало. В другом случае видел, как неопытные админы выставляли 777 на все подряд папки «чтобы ничего не ломалось», в итоге на сервер влезли и поменяли контент — очень веселая ситуация. Основные ошибки, которые часто встречаются при настройке прав - Массовая установка 777 на все папки и файлы «на случай». Это очень плохо, так как все, кто имеют доступ к серверу, могут модифицировать данные и даже создавать вредоносные файлы. - Неправильно назначенный владелец. Файлы могут принадлежать root или другому пользователю, а вебсерверу доступа нет. Тогда сайт не будет работать или станут появляться ошибки. - Игнорирование прав на папки. Часто проверяют права только на файлы, забывая, что папка с правами 700 не даст зайти в неё и прочитать файлы внутри. - Настройка через FTP с незнанием, что там меняешь. FTP-клиенты иногда дергают права внезапно, и администратор не замечает, что перекрыл доступ или наоборот открыл слишком широко. - Долгое хранение 777 права на временных папках. Всегда после работы надо возвращать права в более безопасное состояние. Полезные команды и инструменты для проверки прав - ls -l — базовая команда, которая показывает права и владельца файлов. Например: ls -l /var/www/html - chmod — утилита для изменения прав. Всегда стоит дома проверять что и как меняешь, иначе можно сломать сайт. Например: chmod 644 config.php - chown — меняет владельца файла. Это бывает нужно, чтобы сайт работал корректно. Например: chown www-data:www-data /var/www/html/uploads - find — команда из админского арсенала, которая помогает искать файлы с конкретными правами: find /var/www -perm 777 - Графические панели вроде cPanel, Plesk — позволяют визуально смотреть права и менять их. Если сервер под контролем хостинга, там это очень удобно. - Специализированные скрипты и плагины безопасности — например, WordPress плагины, которые показывают отдаваемые права на файлы. Чек-лист для проверки прав файлов на сервере с CMS - Проверить владельца ключевых файлов (конфиги, загрузки, скрипты) — должен совпадать с пользователем вебсервера. - Взглянуть на права конфигурационных файлов — ставить 600 или 640. - Папки с публичным контентом — чаще 755, но не 777. - Скрипты для исполнения — 755. - Временные папки — 777 только если реально нужна запись от всех, и потом вернуть обратно. - Проверить отсутствуют ли файлы с 777 вне временных директорий. - Не забывать про права на папки, а не только на файлы внутри. - Не назначать всем подряд операционистам и пользователям полный доступ. FAQ по правам файлов (часто задаваемые вопросы) - Можно ли ставить 777 на временные каталоги? Иногда это нужно, чтобы CMS могла писать туда файлы, но это временная мера. После завершения работы нужно возвращать более безопасные права. - Как определить пользователя вебсервера? Можно посмотреть через ps aux | grep apache2 или nginx, обычно это www-data, apache, nobody — зависит от системы. Это важно, чтобы корректно назначить владельца файлов. - Если сайт упал после смены прав — что делать? Вернуть исходные значения или проверить логи сервера. Часто проблема в том, что вебсервер не может читать или запускать файлы. - Можно ли права делать как 644 для всего? Для большинства файлов — да, но скрипты для исполнения должны иметь выполнение. - Нужно ли закрывать права на папку uploads? Обычно нет, там вебсервер должен иметь право читать и писать, чтобы загрузки работали. Но лучше следить, чтобы никто посторонний не имел доступа к серверу. В итоге, настройка прав — дело рутинное, но очень важное. Лучше уделить ей время, чем потом исправлять последствия. Если есть вопросы по конкретным CMS или сценарию — пишите сюда, разберёмся вместе. |
Самое простое — сделать ls -l и посмотреть, кто и что может делать с файлами. Обычно для конфигов ставят 600, а для папок с картинками — 755. Главное не гоняться за 777 на всё подряд, это реально опасно и чаще всего ни к чему хорошему не приводит. Если сомневаешься, лучше оставить права по умолчанию или чуть уже, чем слишком широко.
|
| Время: 19:00 |