Коректні права доступу і параметри володіння для файлів в wordpress, все про wordpress

Коли люди говорять про безпеку WordPress, права доступу до файлів і володіння файлами зазвичай є самою останньою річчю, про яку вони думають. Установка плагінів безпеки є хорошою практикою, важливою для кожного WordPress-сайту. Однак якщо ваші права доступу до файлової системи налаштовані некоректно, то велика частина ваших заходів безпеки може бути легко обійдена зловмисниками.

Права доступу і володіння дуже важливі в збірках WordPress. Коректна їх налаштування на вашому веб-сервері повинна бути першим кроком, який ви зробите після установки WordPress. Наявність неправильного набору прав доступу може викликати фатальні помилки, які приведуть до «смерті» вашого сайту. Некоректні права доступу також можуть поставити під загрозу ваш сайт, зробити його відкритим для атак.

Крім проблем безпеки, наявність неправильного набору прав доступу може призвести і до інших проблем. Чи стикалися ви коли-небудь з білим екраном при першій спробі завантажити веб-сайт? Чи отримували ви коли-небудь повідомлення про помилку при спробі завантажити зображення в медіа-завантажувач? Коригування прав доступу і володіння файлами і папками часто усуває всі ці проблеми.

У даній статті ми розповімо вам все про права доступу для файлової системи WordPress: що вони собою являють, чому вони важливі, а також як їх задати. Також ми розглянемо кілька основних принципів, яким я слідую, щоб підтримати мою файлову систему в цілості й схоронності. Крім цього, ми розкриємо дві найпопулярніших конфігурації сервера WordPress. Ми пояснимо, чому вони відрізняються, і, що більш важливо, як задати відповідні права доступу для кожної з них.

Термінал проти FTP-клієнта

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

Щоб виконати команди, перераховані в даній статті, вам потрібно буде увійти на свій сервер, використовуючи команду SSH. Якщо ви не знайомі з терміналом і SSH, ви можете прочитати про це в статті: «Введення в команди Linux».

Користувачі і групи

Перед тим, як почати, ми повинні коротко розповісти про те, що являють собою групи і користувачі, оскільки вони йдуть рука об руку з визначенням прав доступу.

Користувачі і групи важливі, оскільки вони дозволяють встановити привілеї для всіх ваших файлів і папок. Власники файлу зазвичай мають всі повноваження з управління цим файлом; інші користувачі, які належать до однієї і тієї ж групи, можуть мати менше повноважень з управління цим файлом; в той час як всі інші користувачі взагалі можуть не мати повноважень. Ці привілеї (повноваження) зазвичай називаються правами доступу.

Що являють собою права доступу до файлів?

Права доступу визначають, що саме користувачі можуть зробити з файлом. Права доступу представляються у вигляді послідовності цифр, як, наприклад, 644 або 777, яка називається режим доступу. Якщо ви використовували раніше плагіни в WordPress, то деякі з них, швидше за все, просили вас змінити права доступу до файлів або папок, оскільки плагін не може вести запис. Змінивши права доступу до файлів, ви дозволите веб-сервера отримувати доступ до цих файлів або папок.

Режим доступу - це набір операторів «хто може робити що», в якому кожна цифра відповідає оператору «хто»:

  • Перша цифра. Що може робити користувач - власник даного файлу.
  • Друга цифра. Що можуть робити інші користувачі з групи власників.
  • Третя цифра. Що можуть робити всі інші користувачі (включаючи відвідувачів сайту).

Потім йде число, яке відповідає оператору «що», що представляє собою суму будь-якій комбінації наступних цифр:

  • 4. Вважати файл, або вважати назви файлів в папці
  • 2. Записати або змінити файл, або змінити контент в папці
  • 1. Виконати або запустити файл, або отримати доступ до файлів в папці

Ці цифри називаються привілеями, які зв'язуються з певними користувачами в режимі доступу. Зверніть увагу, що привілеї розрізняються для файлів і папок.

Використання коректного режиму доступу дуже важливо. Щоб краще проілюструвати це, давайте уявимо собі ролі користувачів в WordPress. На сайті WordPress в учасників і адміністраторів є різний набір можливостей. Учасники можуть створювати нові записи блога, однак вони не можуть відправляти повідомлення плагіни. Адміністратори, з іншого боку, можуть додавати плагіни і створювати записи в блозі. Адміністратори можуть навіть змінити вигляд сайту, якщо вони хочуть. Ланцюжок повноважень розділяє те, що можуть робити користувачі в різних ролях. Те ж саме стосується і до режимам доступу, за винятком того, що ми працюємо не з записами блога і опціями теми, а з файлами і папками нашого сервера.

Зміна режимів доступу

FTP-клієнти зазвичай пропонують інтерфейс, через який ви можете легко міняти режим доступу для ваших файлів і папок. Ось скріншот інтерфейсу в моєму FTP-клієнті:

Якщо у вас є доступ до терміналу вашого сервера, ви можете також використовувати команду chmod, щоб змінити режим доступу до файлів або папок:

Щоб змінити режим доступу для всіх файлів або папок, використовуйте chmod в тандемі з командою find. Наприклад, ви можете використовувати її для зміни прав доступу до всіх файлів на 644:

Або використовувати її для зміни прав доступу до всіх ваших папок на 755:

Зверніться до «Зміна прав доступу до файлів в WordPress», щоб отримати керівництво по зміні режимів доступу.

Різниця між 644 і 777

Давайте подивимося на деякі режими доступу, а також як саме вони впливають на наш сайт.

Що означатиме PHP-скрипт з режимом доступу 644? Після роз'яснення вище, як працюють режими доступу, ми можемо дешифрувати те, що саме дозволяє робити цей режим з нашим скриптом:

  • Привілеї власника рівні «рахувати» (4) + «записати» (2) = 6
  • Привілеї групи власників рівні «рахувати» (4) = 4
  • Привілеї всіх інших користувачів рівні «рахувати» (4) = 4

Простіше кажучи, це означає, що:

  • Якщо ми власники скрипта, то ми можемо прочитати його і змінити;
  • Всі інші користувачі можуть тільки вважати його.

Як ми можемо бачити, 644 - це хороший режим доступу для нашого PHP-скрипта. Ми можемо вносити в нього зміни, а наш сервер може вважати його.

Тепер давайте перейдемо до папок. Що буде, якщо ми володіємо папкою, для якої режим доступу заданий як 777? Цей режим можна розписати так:

  • Привілеї власника рівні «рахувати» (4) + «записати» (2) + «виконати» (1) = 7
  • Привілеї групи власників рівні «рахувати» (4) + «записати» (2) + «виконати» (1) = 7
  • Привілеї всіх інших користувачів рівні «рахувати» (4) + «записати» (2) + «виконати» (1) = 7

Це означає, що:

  • Будь-який користувач може отримати список імен файлів у вашій папці
  • Будь-який користувач може створювати, змінювати і видаляти будь-який файл у вашій папці
  • Будь-який користувач може отримати доступ до ваших файлів в цій папці

Очевидно, що 777 - поганий режим доступу для будь-яких ділянок нашого WordPress-сайту, оскільки будь-який користувач може додавати файли в нашу директорію або навіть видаляти скрипти. Що ще гірше, будь-який користувач може виконувати шкідливий код, тим самим поставивши під небезпеку наш сайт.

Конфігурації сервера WordPress

Існує багато різних конфігурацій сервера. Різні конфігурації вимагають різних режимів доступу для коректної та безпечної роботи WordPress. Ми розглянемо дві найбільш популярних конфігурації, а також коректні права доступу для них:

Стандартна конфігурація сервера:

Загальна конфігурація сервера або suEXEC конфігурація:

Основна різниця між цими двома конфігураціями - як саме запущений сервер.

Права доступу для стандартної конфігурації сервера WordPress

Володіння файлами та папками в WordPress

Для початку ми повинні скорегувати володіння папками і файлами для наших WordPress-файлів. Ми повинні будемо переконатися в наступному:

Потім, щоб дізнатися групи, до яких належить ваш сервер, ви можете тимчасово вставити наступний PHP-фрагмент в один з ваших скриптів WordPress:

Якщо ваш користувач і веб-сервер не належать до однієї і тієї ж групи, то ви можете використовувати наступну команду в терміналі, щоб додати користувача до однієї з ваших груп сервера:

Права доступу для WordPress

Всі наші папки і файли повинні тепер належати коректним користувачам. Саме час налаштувати режими доступу. Вам треба буде запам'ятати наступне:

  • Всі файли повинні бути 664.
  • Все папки повинні бути 775.
  • wp-config.php повинен бути 660.

Ось те, що ми хочемо домогтися даними режимами доступу:

Ви можете порахувати, що дозвіл WordPress робити абсолютно все з нашими папками не є безпечним. Не турбуйтеся - ми робимо так, оскільки WordPress потребує певних можливостях по створенню і зміни файлів. WordPress дозволяє нам закачувати і видаляти теми і плагіни, редагувати скрипти і стилі через бекенда адміністратора. Без даних прав доступу нам довелося б завжди вручну завантажувати теми і плагіни через FTP.

Ви можете використовувати ваш FTP-клієнт, щоб змінювати режими доступу, або ви можете використовувати наступні команди в вашій папці WordPress, щоб швидко налаштувати права доступу для всіх ваших файлів і папок:

Зверніть увагу, що деякі веб-сервери в даному плані є більш строгими, ніж інші. Якщо ваш сервер є строгим, то настройка вашого wp-config.php в 660 може призвести до того, що ваш сайт перестане працювати. В такому випадку просто залиште 664.

Права доступу для SuEXEC конфігурації

  • Всі файли повинні бути 644.
  • Все папки повинні бути 755.
  • wp-config.php повинен бути 600.

Аналогічно попередньому випадку, права доступу можна розшифрувати таким чином:

Знову ж таки, ви можете використовувати FTP-клієнт для того, щоб змінити режим доступу, або ви можете використовувати наступні команди в вашій папці WordPress, щоб швидко змінити права доступу до всіх ваших файлів і папок:

Як і у випадку зі стандартною конфігурацією WordPress, ваш сервер може бути більш суворим, ніж інші, і тому файл wp-config.php НЕ буде поставлено в 600. У такому випадку ви можете поставити для нього 640, або, якщо і так не спрацює , то 644.

Завжди дотримуйтесь даними інструкціям, і ваші файли будуть дбайливо збережені від зловмисників.

поширені помилки

Часта помилка, яку допускають люди, полягає в тому, що папка завантажень ставиться в 777. Деякі роблять так, тому що вони отримують помилки при спробі завантажити зображення на свій сайт, а 777 швидко виправляє цю проблему. Ніколи не давайте необмежений доступ всім користувачам, інакше ви ваш сервер буде вразливим для атак. Якщо ви слідчі нашому керівництву, то в такому випадку у вас не повинно бути проблем із завантаженням файлів на ваш сайт.

Іноді плагіни можуть запитувати установку прав для будь-якого файлу в 777. У таких ситуаціях ви можете тимчасово встановити права в 777, однак переконайтеся в тому, що ви повернули права доступу назад після того, як ви закінчите роботу з плагіном.

«WordPress може створювати, змінювати і видаляти файли і папки.»
Не зовсім Вордпресс. Це робить Апач, а працює Апач під користувачем apache з групи apache. І у мене, відповідно, питання до фахівців - найпростіше рішення, на мій погляд - це засунути свого користувача в групу apache, щоб не будується з ним регулярно на рівні прав, чи є в цьому рішенні мінуси?

Якщо бути більш точним, то адже wordpress може бути встановлений на сервері де використовується не Apache. Та й у разі c apache користувач і група під якими запускаються php-скрипти регулюється параметрами конфігурації і / або використанням такими розширеннями як SuExec і їм подібним.

У загальному випадку, «засування» користувача в загальну групу з веб-сервером цілком безпечно. Але все ж рішення з SuExec найчіткіше.