Права доступу до файлів і тек в unix-подібних системах

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

Власник і група

У файлових системах операційних систем типу UNIX (Linux, FreeBSD і т.п.) у властивостях кожного елемента файлової системи (файлу або директорії) міститься інформація про його власника і групі.

Власник файлу / директорії - ім'я користувача операційної системи, з яким «належить» файл або директорія.
Група - найменування групи користувачів операційної системи, членам якої надано доступ до файлу або директорії.

Запам'ятайте, що у кожного файлу і директорії власник і ім'я групи можуть бути різними. Наприклад, якщо FTP-підключення та веб-сервер запускаються на хостингу різними користувачами (наприклад, ftp-user і Apache), то у файлів, завантажених по FTP, власником буде ftp-user. а у файлів, створених за допомогою PHP-скрипта (наприклад, розпаковані під час установки WebAsyst), власником буде Apache.

Права доступу

Кожному файлу і директорії присвоюється 3-значне число, яке визначає, який доступ дозволений власнику, членам групи і всім іншим користувачам операційної системи:

  • перша цифра означає права доступу власника;
  • друга цифра означає права доступу членів групи;
  • третя цифра означає права доступу інших користувачів системи.

Кожна цифра є сумою фіксованих значень доступу:

1 (позначається також буквою x) - виконання. Робить файл виконуваним (програмою), а для директорії дозволяє змінювати її вміст (наприклад, створювати, видаляти або перейменовувати файли усередині неї).
2 (позначається також буквою w) - перезапис. Дозволяє перезаписувати вміст файлу, а для директорії дозволяє виконувати її перейменування.
4 (позначається також буквою r) - читання. Дозволяє зчитувати вміст файлу, а для директорії - зчитувати список імен вкладених піддиректорій і файлів.

У цьому прикладі власнику дозволені виконання, перезапис і читання (1, 2 і 4), членам групи - тільки виконання і читання (1 і 4), а іншим користувачам операційної системи доступ заборонений.

Директорії і файли WebAsyst

Функції кожного файлу і директорії в файловій структурі WebAsyst різні - доступ до деяких достатній в режимі читання, інші необхідно мати можливість перезаписувати за допомогою PHP-скриптів або по FTP. Перелік директорій і файлів і достатні для них права доступу наведені в керівництві по установці скриптів WebAsyst в розділі «Захист WebAsyst після установки».

Кілька практичних завдань з рішеннями

Які права потрібно встановити для файлу, щоб редагувати його по FTP?

Це залежить від імені власника і групи файлів / директорій, а також того, який з користувачів входить в яку групу. Розглянемо все це на прикладі.

дано:
На сервері є користувачі ftp-user і Apache і група group. в яку входить користувач ftp-user.
Власник файлу - Apache. ім'я групи - group.
Необхідно забезпечити можливість редагування файлу і PHP-скриптів (користувач Apache), і FTP-клієнту (користувач ftp-user). При цьому будь-який інший доступ в цілях безпеки повинен бути заборонений.

Рішення :
Права доступу власника. оскільки власник - той же користувач, який виконує PHP-скрипти (в цьому прикладі Apache), то йому потрібно надати права читання (4) і перезапису (2) - для виконання PHP-коду і перезапису файлу (наприклад, при оновленні скриптів). Отже, перша цифра 2 + 4 = 6.
Права доступу групи. FTP-з'єднання працює від імені користувача ftp-user. який входить до групи файлу (group), значить, членам групи потрібні права на читання і перезапис, тобто 2 + 4 = 6.
Права доступу інших користувачів. оскільки всі потрібні права доступу вже надані, більше нічого призначати не потрібно, значить, залишаємо 0.

Складаємо остаточне число з окремих значень і отримуємо 660 і виконуємо команду chmod:

Які права потрібно встановити для директорії, щоб редагувати по FTP файли всередині неї?

дано:
Власник директорії - Apache. ім'я групи - group.

Рішення :
Права доступу власника. допустимо, що власнику (в даному випадку PHP-скриптів «в особі» веб-сервера) для нормальної роботи програми необхідний мати повний доступ до файлів всередині директорії, отже, значення 1 + 2 + 4 = 7.
Права доступу групи. FTP-з'єднання працює від імені користувача ftp-user. який входить до групи файлу (group), значить, членам групи потрібні права на читання і виконання (зміна вмісту директорії), тобто 1 + 4 = 5.
Права доступу інших користувачів. оскільки всі потрібні права доступу вже надані, більше нічого призначати не потрібно, значить, залишаємо 0.

Складаємо остаточне число з окремих значень і отримуємо 750 і виконуємо команду chmod:

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

Віртуальний хостинг

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

Схожі статті