*Cube-Host — повний спектр хмарних послуг!!

Права доступу до файлів у Linux

File permissions in Linux

Контроль доступу, що захищає ваш сервер Linux у реальному житті

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

У цьому посібнику пояснюється, як працюють права доступу, як їх читати та як безпечно налаштовувати за допомогою chmod, chown, груп, umask та ACL — з практичними прикладами для хостингу та веб-серверів.

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

Кожен файл і каталог належить:

  1. Власнику (користувачу) — основному обліковому запису, який «володіє» файлом.
  2. Групі — групі користувачів, які можуть мати спільний контрольований доступ.
  3. Іншим — усім іншим користувачам системи.

Існує три основні права:

  • r = читання
  • w = запис
  • x = виконання

Ці правила є необхідними в будь-якій багатокористувацькій системі, включаючи хостингові середовища та VPS-сервери, де паралельно існують численні служби та користувачі.

Як зчитати права доступу з ls -l

ls -l

Приклад виводу:

-rw-r-----  1 alice  dev  2048 Mar 10 12:00 config.php
drwxr-xr-x  2 root   root 4096 Mar 10 12:00 /var/www

Розшифровка -rw-r-----:

  • Перший символ: означає файл, d — каталог, l — символічне посилання.
  • Наступні 3: rw- = права власника
  • Наступні 3: r– = права групи
  • Наступні 3: = права інших

Порада: для отримання більш детальної інформації (включно з числовими режимами) використовуйте:

stat filename

Важливий нюанс: права доступу до каталогів НЕ збігаються з правами доступу до файлів

У каталогах r/w/x поводяться по-різному:

ПравоДля файлуНа каталозі
rЧитати вміст файлуПерелічити записи каталогу (ls)
wРедагувати вміст файлуСтворити/видалити/перейменувати файли всередині (якщо поєднано з x)
xВиконати файл як програму/скриптВвести/отримати доступ до елементів всередині (cd, відкрити файли)

Ось чому трапляється ситуація «Я бачу папку, але не можу відкрити файли»: каталог може мати r без x.

Символічний та числовий режими

Ви побачите права доступу у двох основних форматах:

  • Символічний (зрозумілий для людини): rwxr-xr-x
  • Числовий (використовується з chmod): 755, 644, 600

Числові значення є сумами:

  • r = 4
  • w = 2
  • x = 1

Отже:

  • 7 = 4 2 1 = rwx
  • 5 = 4 1 = r-x
  • 4 = 4 = r--
  • 0 = 0 = ---

Основні команди: chmod, chown, chgrp

Ці команди є повсякденним інструментарієм для управління правами доступу на хостингових серверах Linux та VPS.

chmod — зміна прав доступу

# Numeric mode:
chmod 644 index.html
chmod 755 script.sh

# Symbolic mode:
chmod u=rw,g=r,o=r config.ini
chmod u x deploy.sh
chmod g w uploads

Будьте обережні з рекурсивним chmod: каталоги та файли часто потребують різних режимів (наприклад, 755 для каталогів, 644 для файлів). Замість chmod -R, безпечніше використовувати find:

# Set directories to 755
find /var/www/site -type d -exec chmod 755 {} ;

# Set files to 644
find /var/www/site -type f -exec chmod 644 {} ;

chown — зміна власника

# Change owner only
chown alice file.txt

# Change owner and group
chown alice:dev file.txt

# Recursive ownership change (use carefully!)
chown -R www-data:www-data /var/www/site

chgrp — зміна групи

chgrp dev file.txt

Спеціальні біти: SUID, SGID, Sticky Bit

Linux включає спеціальні прапорці дозволів, що використовуються для спільних каталогів та контролю поведінки привілеїв:

  • SUID (Set User ID): виконуваний файл працює з привілеями власника (chmod u s).
  • SGID (Set Group ID): у каталогах нові файли успадковують групу каталогу (chmod g s).
  • Sticky Bit: користувачі не можуть видаляти файли, які їм не належать, у спільних каталогах (типово для /tmp) — chmod t.
# Sticky bit on shared folder
chmod  t /shared

# SGID on a team directory (keeps consistent group ownership)
chmod g s /var/www/team_project

На хостингових та веб-серверах SGID особливо корисний для командних розгортань, де кілька користувачів редагують один і той самий проект без постійного виправлення групової власності.

Права доступу за замовчуванням: umask (і чому це важливо)

umask визначає права доступу за замовчуванням для новостворених файлів та каталогів. Це критично важливо на серверах: без безпечного umask нові файли можуть виявитися занадто відкритими.

# View current umask
umask

# Example: safer defaults (common on servers)
umask 027

З umask 027 типовими значеннями за замовчуванням стають:

  • Нові файли: 640
  • Нові каталоги: 750

ACL: детальний контроль доступу для конкретних користувачів (поза межами власника/групи/інших)

Іноді потрібно надати доступ одному користувачеві, не змінюючи власника/групу. Саме в таких випадках ACL (списки контролю доступу) є правильним інструментом.

# View ACL
getfacl file.txt

# Give user bob read/write access
setfacl -m u:bob:rw file.txt

# Give group qa read access
setfacl -m g:qa:r file.txt

# Default ACL for a directory (new files inherit it)
setfacl -d -m g:dev:rwX /var/www/team_project

ACL дуже практичний на VPS-хостингу, де ви керуєте декількома службами/користувачами і хочете мати суворий контроль без постійних змін власника.

Безпечні пресети дозволів, які ви можете використовувати

Це загальні, безпечні вихідні налаштування (налаштуйте їх, якщо ваша програма потребує іншої поведінки):

  • Папка SSH: ~/.ssh700, ключі → 600
  • Веб-каталоги: 755
  • Веб-файли: 644
  • Конфігурація з секретами: 600 (або 640 з контрольованою групою)
  • Каталог завантажень: часто потребує прав на запис для групи (уникайте 777; використовуйте групову стратегію SGID/ACL)

Уникайте chmod 777. Це найпоширеніший «швидкий спосіб», який стає діркою в безпеці — особливо у спільних середовищах та неправильно налаштованих веб-додатках.

Моніторинг змін та виявлення проблем з правами

Права доступу — це лише частина безпеки сервера. Вам також потрібна видимість:

  • auditd — аудит доступу до критичних файлів та каталогів
  • journalctl — перевірка системних журналів
  • lsof — перегляд, які процеси використовують які файли
  • ps aux — виявлення підозрілих процесів

Якщо ви хостите веб-сайти або сервіси, поєднання правильних дозволів з моніторингом зробить ваше середовище Linux значно стабільнішим і безпечнішим.

Висновок

Права доступу до файлів у Linux прості за концепцією, але потужні на практиці. Навчіться читати ls -l, стратегічно використовувати групи, уникати ризикованих рекурсивних змін, встановлювати безпечну umask та застосовувати ACL, коли вам потрібен точний контроль. Цей підхід є необхідним на будь-якому VPS під управлінням Linux і допомагає підтримувати стабільність та безпеку вашого хостингового середовища.

Prev
Menu