bolt Valebyte VPS from $4/mo — NVMe, 60s deploy.

Get a VPS arrow_forward

Які права файлів варто встановлювати на сервері?

calendar_month March 17, 2025 schedule 10 хв. читання visibility 810 переглядів
person
Valebyte Team
Які права файлів варто встановлювати на сервері?
summarize

TL;DR

  • ['Використовуйте права 644 для файлів: це дозволяє запис власнику і тільки читання всім іншим.', 'Для директорій обирайте 755, щоб власник міг керувати ними, а сервер — переглядати вміст.', 'Уникайте прав 777: повний доступ для всіх користувачів робить сервер вразливим для злому і видалення даних.', 'Дотримуйтеся принципу найменших привілеїв, надаючи процесам тільки мінімально необхідні права.', 'Заборона на виконання (прапор -x) для файлів даних заважає запуску шкідливого коду при завантаженні на сервер.']

Які права файлів варто встановлювати на сервері?

Налаштування прав доступу до файлів і директорій - це не просто рутинна задача, а один з наріжних каменів безпеки будь-якого веб-проєкту. У більшості випадків, для забезпечення балансу між функціональністю та надійністю, оптимальними правами для файлів є 644, а для директорій - 755. Ці значення гарантують, що власник може читати та записувати (для файлів) або повноцінно керувати (для директорій), а веб-сервер та інші користувачі можуть лише читати вміст, не маючи можливості його змінювати або виконувати, що мінімізує ризики несанкціонованого доступу та модифікації. Однак, як і в будь-якій сфері адміністрування, існують винятки та нюанси, які ми детально розберемо в цій статті, щоб ви могли приймати обґрунтовані рішення для своїх серверів.

Чому права доступу такі важливі для безпеки сервера?

A secure server rack with a padlock over a file and folder, symbolizing file permissions and server security.

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

  • Запобігання несанкціонованому доступу: Зловмисник, який отримав доступ до однієї частини системи (наприклад, через вразливість у плагіні), не зможе легко переглядати або змінювати інші, більш конфіденційні файли, якщо права налаштовані коректно.
  • Захист від модифікації та впровадження шкідливого коду: Якщо веб-сервер не має прав на запис у файли, то навіть якщо атакуючий зможе завантажити шкідливий скрипт, він не зможе зберегти його у виконуваній директорії або змінити існуючі файли сайту.
  • Обмеження виконання: Заборона на виконання для звичайних файлів (-x) не дозволить зловмиснику запустити довільний код, навіть якщо він якимось чином був завантажений на сервер.
  • Мінімізація збитків: Принцип найменших привілеїв (Principle of Least Privilege, PoLP) говорить: давати сутності (користувачу, процесу) рівно стільки прав, скільки необхідно для виконання її завдань, і ні байта більше. Це значно скорочує потенційний вектор атаки та обмежує збитки у разі компрометації.

Неправильно налаштовані права - це одна з найпоширеніших причин злому та проблем з безпекою веб-застосунків. Тому розуміння та правильне застосування файлових прав є фундаментальною навичкою для будь-якого системного адміністратора.

Основи файлових прав в Linux: Швидкий рефреш для колег

Для тих, хто вже знайомий з Linux, це буде швидким нагадуванням. Але навіть досвідчені колеги часом потребують освіження базових концепцій.

Розуміння символьних і вісімкових прав

В Linux права доступу до файлів і директорій представлені у двох основних форматах: символьному та вісімковому.

  • Символьний формат (rwx):
    • r (read) - читання вмісту файлу або списку файлів у директорії.
    • w (write) - запис у файл або створення/видалення файлів у директорії.
    • x (execute) - виконання файлу (якщо це скрипт або програма) або вхід в директорію.
  • Вісімковий формат: Кожному символу r, w, x присвоюється числове значення:
    • r = 4
    • w = 2
    • x = 1
    • - (немає права) = 0
    Підсумовуючи ці значення, отримуємо вісімкове число. Наприклад, rwx = 4+2+1 = 7, rw- = 4+2+0 = 6, r-x = 4+0+1 = 5.

Ці комбінації застосовуються до трьох категорій користувачів:

  • u (user) - власник файлу або директорії.
  • g (group) - група, якій належить файл або директорія.
  • o (others) - всі інші користувачі системи.

Коли ви бачите права виду 755, це означає:

  • Перша цифра (7) - права для власника (rwx).
  • Друга цифра (5) - права для групи (r-x).
  • Третя цифра (5) - права для інших (r-x).

Ось коротка таблиця основних комбінацій:

Вісімкове значення Символьне значення Опис
0 --- Немає прав
1 --x Тільки виконання (для файлів) / вхід (для директорій)
2 -w- Тільки запис
3 -wx Запис і виконання / вхід
4 r-- Тільки читання
5 r-x Читання і виконання / вхід
6 rw- Читання і запис
7 rwx Читання, запис і виконання / вхід

Власник, Група, Інші (User, Group, Other)

Кожен файл і директорія в Linux має власника (користувача) і групу. Управління ними здійснюється командами chown (change owner) і chgrp (change group).

Для веб-серверів критично важливо розуміти, під яким користувачем і групою працює ваш веб-сервер (Apache, Nginx). Зазвичай це www-data, apache, nginx або інші специфічні користувачі. Ці користувачі повинні мати достатні права для читання файлів сайту і, в деяких випадках, для запису в певні директорії (наприклад, для завантаження зображень або кешування).

Порада від Valebyte: Завжди перевіряйте, який користувач запускає ваш веб-сервер. Наприклад, для Nginx на Ubuntu це часто www-data. Переконайтеся, що файли вашого сайту належать цьому користувачу або групі, або що у цього користувача є необхідні права через групу.

Потрібен надійний сервер для ваших проєктів?

Забезпечте безпеку своїх даних з нашими VPS-планами. Ідеально для проєктів, що потребують контролю та продуктивності. - від €4.49/міс.

Обрати VPS-план →
rocket_launch Quick pick

Looking for a server that just works?

Valebyte VPS — NVMe, 24/7 support, deploy in 60 seconds.

View VPS plans arrow_forward

Золотий стандарт: Рекомендовані права для більшості веб-проєктів

Як вже говорилося, для переважної більшості файлів і директорій на веб-сервері існують загальноприйняті безпечні значення.

Файли (644)

Права: rw-r--r--

  • Власник (u): Може читати і записувати (rw-). Це необхідно для того, щоб ви, як адміністратор, могли змінювати файли (наприклад, оновлювати код, вносити правки в конфігурацію) через SFTP/SSH.
  • Група (g): Може тільки читати (r--). Це дозволяє веб-серверу (який часто належить до тієї ж групи або має доступ через неї) читати вміст файлів для відображення сайту.
  • Інші (o): Можуть тільки читати (r--). Це дозволяє будь-якому іншому процесу в системі (наприклад, іншим користувачам на загальному хостингу, якщо такі є) читати файли, але не змінювати їх.

Приклади: index.php, .htaccess, style.css, image.jpg, config.php (якщо не містить надчутливих даних).

Директорії (755)

Права: rwxr-xr-x

  • Власник (u): Повні права (rwx). Ви можете створювати, видаляти, перейменовувати файли і піддиректорії всередині неї.
  • Група (g): Читання і виконання (r-x). Веб-сервер може переглядати вміст директорії (r) і входити в неї (x), щоб отримати доступ до файлів всередині.
  • Інші (o): Читання і виконання (r-x). Аналогічно групі, дозволяє іншим процесам переглядати і входити в директорію.

Приклади: wp-content, uploads (для звичайних файлів), cache (якщо веб-сервер не повинен туди писати), includes.

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

Винятки з правил: Коли стандартні права не підходять

Як і в будь-якому правилі, тут є винятки. Деякі файли і директорії вимагають особливих прав для коректної роботи або підвищеної безпеки.

Виконувані скрипти (755 або 700)

Якщо у вас є скрипти на PHP, Python, Bash (наприклад, CGI-скрипти, консольні утиліти, крони), які повинні бути виконуваними, їм буде потрібен біт x.

  • 755 (rwxr-xr-x): Для скриптів, які повинні виконуватися веб-сервером або іншими користувачами. Наприклад, CGI-скрипти.
  • 700 (rwx------): Для скриптів, які повинні виконуватися тільки власником (наприклад, ваш особистий скрипт для бекапу, що запускається по крону). Це максимально обмежує доступ.

Важливо: Ніколи не давайте виконувані права (x) файлам, які не повинні бути виконуваними, таким як зображення, CSS, HTML або звичайні PHP-файли, які інтерпретуються, а не виконуються безпосередньо як бінарники.

Файли конфігурації з конфіденційними даними (600 або 640)

Файли, що містять паролі до баз даних, API-ключі або інші чутливі дані, вимагають максимального захисту.

  • 600 (rw-------): Власник може читати і записувати, ніхто інший не має ніяких прав. Це найбезпечніший варіант.
  • 640 (rw-r-----): Власник може читати і записувати, група може читати. Використовується, якщо веб-серверу (який знаходиться в цій групі) потрібно прочитати цей файл, але ніякому іншому користувачу.

Приклади: wp-config.php (для WordPress), .env файли, database.php.

Директорії для завантаження файлів (775 або 770)

Якщо ваш веб-застосунок дозволяє користувачам завантажувати файли (зображення, документи) або створює кеш, сесії, логи, веб-серверу буде потрібне право на запис у відповідні директорії.

  • 775 (rwxrwxr-x): Власник і група мають повні права, інші можуть тільки читати і входити. Це безпечно, якщо веб-сервер працює під користувачем, який входить в групу-власника директорії.
  • 770 (rwxrwx---): Власник і група мають повні права, інші не мають ніяких прав. Більш суворий варіант, якщо ви не хочете, щоб хто-небудь, крім власника і групи, мав доступ.

Важливо: Ніколи не встановлюйте 777 (rwxrwxrwx) на директорії, доступні через веб! Це відкриває вашу систему для запису будь-якому користувачу, що є величезною дірою в безпеці.

Для таких директорій також важливо правильно налаштувати власника і групу. Наприклад, якщо веб-сервер працює як www-data, а директорія належить user:www-data з правами 775, то www-data зможе в неї писати.

Використання ACL (Access Control Lists)

У більш складних сценаріях, коли стандартні права user/group/other недостатні (наприклад, потрібно дати права запису декільком різним користувачам або групам на один і той же ресурс, не розширюючи права для "others"), можна використовувати ACL. Це дозволяє встановлювати більш гранулярні права. Команди setfacl і getfacl допоможуть вам у цьому.

# Дать пользователю 'dev' права на чтение и запись в директорию 'uploads'
setfacl -m u:dev:rwx uploads
# Перевірити ACL для директорії getfacl uploads

Однак ACL — це тема для окремої статті, і для більшості типових веб-проєктів достатньо стандартних прав.

Як керувати правами: Команди chmod та chown

Управління правами доступу здійснюється за допомогою двох основних команд:

chmod – Зміна прав доступу

Команда chmod (change mode) використовується для зміни прав доступу до файлів і директорій.

# Встановити права 644 для файлу index.html
chmod 644 index.html

# Встановити права 755 для директорії images
chmod 755 images

# Рекурсивно встановити права 644 для всіх файлів в поточній директорії та піддиректоріях
find . -type f -exec chmod 644 {} \;

# Рекурсивно встановити права 755 для всіх директорій в поточній директорії та піддиректоріях
find . -type d -exec chmod 755 {} \;

Увага: Будьте вкрай обережні з рекурсивними командами chmod -R або find ... -exec chmod .... Помилка може зробити ваш сайт непрацездатним або, що ще гірше, вразливим.

chown – Зміна власника та групи

Команда chown (change owner) використовується для зміни власника та/або групи файлу або директорії.

# Змінити власника файлу на 'www-data'
chown www-data index.html

# Змінити власника та групу директорії 'uploads' на 'www-data:www-data'
chown www-data:www-data uploads

# Рекурсивно змінити власника та групу для всіх файлів і директорій в /var/www/html
chown -R www-data:www-data /var/www/html

Зазвичай рекомендується, щоб файли вашого вебсайту належали користувачу, під яким ви працюєте (наприклад, youruser), а група була тією, під якою працює вебсервер (наприклад, www-data). Це дозволяє вам керувати файлами, а вебсерверу — читати їх через групові права.

rocket_launch Quick pick

Looking for a server that just works?

Valebyte VPS — NVMe, 24/7 support, deploy in 60 seconds.

View VPS plans arrow_forward

Практичні поради та найкращі практики

  • Принцип найменших привілеїв (PoLP): Це золоте правило. Завжди давайте рівно стільки прав, скільки необхідно, і ні байта більше. Якщо файл не повинен бути виконуваним, не давайте йому x. Якщо вебсерверу не потрібно писати в директорію, не давайте йому w.
  • Регулярний аудит: Періодично перевіряйте права доступу до критично важливих файлів і директорій. Особливо після встановлення нових плагінів, тем або оновлень. Команди ls -l, find, а також різні сканери безпеки можуть допомогти в цьому.
  • umask: Дізнайтеся про umask. Це значення визначає права за замовчуванням для нових файлів і директорій, які створюються в системі. Правильне налаштування umask може допомогти автоматично створювати файли з більш безпечними правами. Зазвичай для файлів це 0022 (що дає 644) і для директорій 0002 (що дає 775).
  • SELinux/AppArmor: Не забувайте, що файлові права — це лише один шар захисту. Системи примусового контролю доступу, такі як SELinux або AppArmor, надають додатковий рівень безпеки, обмежуючи, що процеси можуть робити з файлами, навіть якщо стандартні права доступу дозволяють більше. Вони можуть бути складні в налаштуванні, але забезпечують потужний захист.
  • Використання систем контролю версій: Хоча Git сам по собі не управляє правами доступу на сервері, він дозволяє легко відкочувати зміни, якщо ви випадково зіпсували файли або права при оновленні.
  • Тестування: Після будь-яких змін прав доступу завжди перевіряйте працездатність вашого сайту і всіх його функцій.

Висновки

Правильне налаштування прав доступу до файлів — це не просто рекомендація, а обов'язкова умова для забезпечення безпеки та стабільності роботи вашого сервера та веб-застосунків. Запам'ятайте "золотий стандарт": 644 для файлів і 755 для директорій, і використовуйте його як базову відправну точку.

Однак будьте готові до винятків: конфіденційні файли вимагають більш суворих 600 або 640, а директорії, куди вебсерверу потрібно записувати дані (завантаження, кеш), потребують 775 або 770 з правильним налаштуванням власника/групи. Завжди дотримуйтесь принципу найменших привілеїв і регулярно проводьте аудит.

Не нехтуйте цим аспектом, адже одна неправильно налаштована директорія може стати вхідною точкою для зловмисника. Інвестиції часу в розуміння і правильне застосування файлових прав окупляться спокоєм і надійністю вашої інфраструктури. Удачі в адмініструванні!

Масштабуйте безпеку з хмарними рішеннями

Для максимальної гнучкості та масштабованості, переходьте на хмарні інстанси. Ідеально для зростаючих проєктів.

Почати з хмари →
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.