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

Право доступу (англ. access right) — дозвіл або заборона здійснення певного типу доступу до інформаційної системи[1]. Прикладами типів права доступу є читання, запис, виконання, додавання, зміна, видалення та створення. Більшість файлових систем містять атрибути файлів і каталогів, які контролюють здатність користувачів читати, змінювати та виконувати вміст файлової системи.

При спільному використанні файлів можливі розмежування доступу і керування доступом, тобто надання доступу до файлу тільки обмеженому колу користувачів і (або) з певних комп'ютерів.

Варіації файлової системи

Оригінальна таблиця розміщення файлів, яка розроблена для систем, що підтримують лише одного користувача, має атрибут read-only (англ. лише для читання), який насправді не є дозволом. NTFS, реалізована в Microsoft Windows NT і її похідних системах, використовує ACL[2] для надання комплексних прав доступу.

OpenVMS використовує схожу до Unix схему доступів. Є чотири категорії (Система, Власник, Група та Всесвіт) і чотири типи права доступу (Читання, Зміна, Виконання і Видалення). Ці категорії не є взаємовиключними: Власник входить в Групу, яка в свою чергу входить у Всесвіт. Категорії також незалежно містять системних користувачів. HFS, реалізований в оперційних системах Classic Mac OS не підтримують прав доступу в цілому.

До Mac OS X версії 10.3 (“Пантера”) використовувалось POSIX система. Починаючи з версії 10.4 (“Тигр”) також підтримують використання NFSv4 ACLs. Вони користуються традиційною Unix системою

Традиційні права доступу Unix

Дозволи в Unix-подібних файлових системах керуються трьома класами, відомими як User (користувач), Group(група) та Others(інші). Коли файл створюється, його налаштування доступів обмежені umask командою процесу, який його створив

Класи

  • Файли та папки є у власності користувача, якого визначає клас user. Окремі дозволи надаються власнику файлу.
  • Файли та папки призначені групі, яку визначає клас group. Окремі дозволи надаються членам групи. Власник може бути її членом.
  • Інші користувачі, що не є ні власниками, ні членами групи, визначаються класом others. Окремі дозволи надаються.

Дозволи

В Unix-подібних системах реалізовані три конкретні дозволи, які надаються кожному з класів:

  • Дозвіл на читання гарантує можливість читання файлу. Коли він встановлений у папці, можливим є читання назв файлів в цій папці, але недоступна жодна подальша інформація, така як вміст, тип файлу, розмір, власність та дозволи.
  • Дозвіл на зміни гарантує можливість вносити зміни до файлу. Коли встановлено для папки, можливою є зміна записів в папці, що включає створення, видалення та редагування назв файлів. Варто зазначити, що такий рівень доступу потребує встановленого дозволу на виконання, інакше дозвіл на зміни для папок втрачає суть.
  • Дозвіл на виконання гарантує можливість виконання файлу. Цей дозвіл повинен бути встановленим для виконуваних програм, щоб операційна система могла їх виконувати. Коли встановлено для папки, його можна інтерпретувати як дозвіл на пошук: можливим є доступ до вмісту файлів та мета-інформації, якщо відоме ім’я. Але виведення списку всередині директорії буде неможливим без дозволу на читання.

Наслідок встановлення рівнів доступу для папок, на відміну від файлів, є "однією з тих проблем, які найчастіше спричиняють непорозуміння".[3]

Коли дозвіл не встановлений, у відповідних правах відмовлено. На відміну від ACL систем, дозволи у Unix-подібних системах не є наслідуваними. Файли, створені в папці, не обов’язково мають такі ж дозволи, як ця папка.

Зміна поведінки дозволів за допомогою бітів setuid, setgid і sticky

В Unix-подібних системах типово влаштовані три додаткові режими. Насправді це атрибути, але на них часто посилаються, як на дозволи або режими. Ці спеціальні режими створені для файлів чи папок в загальному, а не залежно від класу. Однак в символьному позначенні (див. нижче) частина setuid встановлена в тріаді для користувача, setgid - для групи і прапорець - для інших.

Позначення прав доступу Unix

Символьне позначення

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

Найпоширенішою формою є символьний запис, наприклад команда ls -l. Перший символ виконання команди ls вказує на тип файлу і не пов’язаний з дозволами. Решта дев’ять символів розташовані в трьох сетах, кожен з яких представляє клас дозволів у вигляді трьох символів. Перший сет представляє клас user (користувач). Другий представляє клас group (групи), а третій представляє клас others (інші).

Кожен із трьох символів представляє права на читання, запис і виконання:

  • r якщо читання дозволено, - якщо ні.
  • w якщо записування дозволено, - якщо ні.
  • x якщо виконання дозволено, - якщо ні.

Нижче наведено кілька прикладів символьного позначення:

  • -rwxr-xr-x: звичайний файл, клас користувача якого має повні права, а класи груп та інші мають лише дозволи на читання та виконання.
  • crw-rw-r--: спеціальний файл символів, класи користувача і груп якого мають права читання та запису, а інші класи мають лише дозвіл на читання.
  • dr-x------: каталог, клас користувача якого має дозволи на читання та виконання, а груп та інші класи не мають дозволів.

Числове позначення

Іншим методом представлення дозволів Unix є вісімкова система числення (base-8). Це позначення складається щонайменше з трьох цифр. Кожна з трьох цифр представляє дозволи різним групам: користувачу, групам та решті. Якщо є четверта цифра, найперша адресує три додаткові атрибути: setuid bit, setgid bit і sticky bit.

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

  • біт читання додає 4 до загальної суми (у двійковій системі 100)
  • біт запису додає 2 до його загальної суми (у двійковій системі 010)
  • біт виконання додає 1 до його загальної суми (у двійковій системі 001)

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

Ось приклади символьних та числових позначень:

Symbolic
notation
Numeric
notation
English
---------- 0000 без дозволів
-rwx------ 0700 читання, запис і виконання лише для власника (user)
-rwxrwx--- 0770 read, write, & execute for owner and group
-rwxrwxrwx 0777 читання, запис і виконання для власника, груп та інших
---x--x--x 0111 виконання
--w--w--w- 0222 запис
--wx-wx-wx 0333 виконання та запис
-r--r--r-- 0444 читання
-r-xr-xr-x 0555 читання та виконання
-rw-rw-rw- 0666 читання та запис
-rwxr----- 0740 власник може читати, писати та виконувати; група може тільки читати; інші не мають дозволів

Див. також

Примітки

  1. Термінологія в галузі захисту інформації в комп’ютерних системах від несанкціонованого доступу
  2. File and Folder Permissions. Microsoft.
  3. Hatch, Bri. "Linux File Permission Confusion pt 2", "Hacking Linux Exposed", April 24, 2003, accessed July 6, 2011.