![]() |
Как проверить права файлов на сервере с CMS — кто сталкивался?
Как проверить права файлов на сервере с CMS — кто сталкивался?
Права файлов на сервере оказывают решающее влияние на безопасность и стабильность любой CMS. У многих вебмастеров, особенно начинающих, с этим бывают проблемы и недопонимания, что именно надо проверять и к чему это может привести. В общем, решил собрать немного инфы, поделиться своим опытом и спросить у вас, кто как проверяет права на своих форумах, блогах или сайтах на разных движках. Что такое права файлов и зачем они нужны? Вкратце, права — это набор правил, которые определяют, кто и что может делать с файлами и папками на сервере. Обычно эти правила разбиты на три группы: владелец файла, группа и остальные пользователи сервера. Для каждой группы можно задать разные права — читать файл, писать (то есть изменять) и выполнять (для скриптов и программ). Пример: права файла могут выглядеть как 644 — это значит, владелец может читать и писать (6 = 4+2), а все остальные только читать (4). Или 755 — владелец может читать/писать/запускать, а остальные читать и запускать (для папок и скриптов). Почему это важно? Если неправильно выставить права, кто-то может получить доступ к конфигам с паролями, удалить или поменять скрипты или страницы, а то и загрузить какую-то гадость. Поэтому хороший админ всегда проверяет и ставит правильные права. Где проверять и на что обращать внимание? Права нужны по умолчанию везде, где есть файлы CMS, но особенно критичные места: - Конфигурационные файлы, например wp-config.php для WordPress, configuration.php для Joomla, inc/config.php для phpBB. Эти файлы содержат важные данные, включая пароли к базе, и их нельзя открывать посторонним. - Папки с загружаемыми файлами — uploads, images, а также папки для временных файлов и кеша как cache, tmp. Задача — чтобы CMS могла туда писать, а остальные не могли бездумно менять файлы. - Скрипты админки и авторизации. Нельзя, чтобы кто-то имел права на запись в эти папки или мог редактировать скрипты. - Логи и бэкап-файлы. На них иногда делают забывчивые права, и любой может скачать архив соцсети или базы. Если хочешь быть осторожным, лучше точно знать, какие права на отдельных файлах и папках выставлены. Как проверить права? Самый простой способ — зайти на сервер по SSH и выполнить команду ls -l в каталоге сайта. Она выведет список файлов с правами, владельцами и группами. Пример вывода: -rw-r--r-- 1 user user 4200 Apr 26 12:00 wp-config.php Здесь -rw-r--r-- означает, что владелец (user) имеет право читать и писать, а группа и остальные — только читать. В нашем случае это нормально для конфига, если владелец — пользователь, под которым работает веб-сервер. Если нет доступа по SSH, многие хостинги или панели управления (cPanel, ISPManager, Plesk) позволяют посмотреть и поменять права через файловый менеджер — там обычно можно кликнуть правой кнопкой по файлу и выбрать "Change Permissions" или что-то похожее. Типичные ошибки в правах файлов - wp-config.php или аналогичный конфиг с правами 666 — это люфт страшнее бреши в стене. Тогда любой пользователь на сервере может прочитать содержимое файла и взять доступ к базе. - Папки uploads или images с правами 777 — дают полное право на чтение, запись и запуск всем! Это приглашение к беде. Лучше 755 с владельцем, совпадающим с процессом веб-сервера. - Скрипты с правами 777 — не нужно! Исполнять и писать одновременно — путаница и опасность. - Распространённая ошибка — не учитывать, под каким пользователем запущен веб-сервер. Например, если сервер работает под www-data, а файлы принадлежат root, CMS не сможет правильно записывать файлы даже с правами 755. - Оставлять бэкапы или лог-файлы с правами, позволяющими их качать через браузер. Практические рекомендации и примеры настройки прав Для WordPress, например, часто рекомендуют: - wp-config.php — 600 или 640 (только владелец может читать и писать). - Сам сайт — файлы 644, папки 755, чтобы веб-сервер мог читать и выполнять. - Папка wp-content/uploads — 755, чтобы CMS могла записывать и менять содержимое. - Скрипты ядра — 644, чтобы никто лишний не изменял. Для Joomla: - configuration.php — 640 или 600. - Папки cache, logs — 755. - Подобным образом держать права на остальные каталоги. Чек-лист для проверки прав на сервере с CMS 1. Убедиться в правах на конфиг — 600 или 640 максимально. 2. Проверить права на папки с загрузками и временными файлами — 755. 3. Правильно выставить права на скрипты — 644. 4. Посмотреть владельца и группу файлов — должны совпадать с пользователем веб-сервера. 5. Исключить права 777 на любые папки и файлы, если это не крайняя необходимость и осознанно. 6. Проверить, что нет публичного доступа к бэкапам и логам (например, через браузер). 7. Использовать команды вроде ls -l для обзора, или панели управления хостингом. 8. Настроить регулярные ревизии прав, например, через скрипты, чтобы не забыть. FAQ — частые вопросы по правам - Можно ли поставить все права на 777 и "забыть", чтобы ничего не ломалось? Нет, это опасно. 777 даёт полный доступ всем, и если на сервере есть другие пользователи или уязвимости в CMS, это риск взлома. - Что делать, если CMS не пишет в папку upload? Скорее всего, проблема в правах или в владельце папки. Проверьте, что владелец совпадает с веб-сервером, и папка имеет права 755 или 775. - Как узнать, под каким пользователем работает веб-сервер? Через SSH можно использовать команду ps aux | grep apache или ps aux | grep nginx. Если нет доступа, спросите у хостера. - Можно ли изменять права через FTP? Да, большинство FTP-клиентов позволяет менять права файлов (chmod). Но иногда лучше делать это через SSH. - Если я пользовался плагинами безопасности, они сами не настроят права? Некоторые плагины могут частично проверить права, но лучше делать это вручную, особенно для важных файлов. - Какие бывают атрибуты файлов кроме rwx, и нужны ли они для безопасности? Например, в Linux есть chattr (атрибуты), можно поставить immutable — запретить изменение файла. Полезно для важных конфигов. Итог Настройка прав — фундаментальная часть безопасности сервера с CMS, не стоит пренебрегать этим. Особенно если есть доступ к SSH, желательно минимум раз в месяц просматривать права и владельцев файлов. Если что-то непонятно — спрашивайте, давайте вместе разберёмся. Важно всегда поддерживать баланс — дать системе возможность работать и одновременно защититься от посторонних. Пишите, кто как проверяет и какие ещё инструменты и лайфхаки используете. Может, есть сценарии или скрипты, чтобы автоматизировать контроль прав? Поделитесь опытом! |
| Время: 13:57 |