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

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

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

Інструкції[ред. | ред. код]

Кожен об'єкт файлової системи (файл, каталог) зберігає в inode таку інформацію:

  • тип файлу (звичайний файл, каталог, символічне посилання, файл пристрою, іменований канал, сокет)
  • власника та групу, до якої належить файл
  • тройні права доступу для власника, групи й інших користувачів — r (читання), w (запис) і x (запуск)

При роботі з об'єктами файлової системи застосовуються наступні правила:

  • новостворений об'єкт належить користувачу, який його створив, і основній групі цього користувача
  • новостворений об'єкт має за замовчуванням права доступу, призначені командою umask
  • права доступу може змінювати власник об'єкта або адміністратор (root)
  • власника може змінювати тільки root, у деяких випадках і сам власник (за спеціальних умов)
  • групу може змінювати тільки root, в деяких випадках і сам власник (за спеціальних умов)

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

Запис прав доступу[ред. | ред. код]

В системах unix права записуються за допомогою вісімкової системи числення або символьного запису. Отримане значення є сумою значень кожного дозволу у кожній трійці. Зміна прав доступу здійснюється з допомогою команди chmod.

Тип дозволу Символьний запис Вісімковий запис
Читання r (Read) 4
Запис w (Write) 2
Виконання x (eXecute) 1

Приклад запису прав доступу[ред. | ред. код]

  • Для чисто особистого каталогу. Доступ на читання, запис і відкриття каталогів має тільки власник.
Власник Група Інші
700 r w x - — - - — -
4 2 1 0 0 0 0 0 0
  • Для приватних файлів (з даними). Власник до них може записувати і читати.
Власник Група Інші
600 r w - - — - - — -
4 2 0 0 0 0 0 0 0
  • Типовий запис прав для публічного каталога. Права на читання і відкриття каталогів мають всі, змінювати дані — власник каталогу.
Власник Група Інші
755 r w x r — x r -x
4 2 1 4 0 1 4 0 1
  • Типовий запис прав доступу для публічних файлів. Права на читання файлу є всіх, змінити дані може тільки власник файлу.
Власник Група Інші
644 r w - r — - r — -
4 2 0 4 0 0 4 0 0

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

Власник Група Інші
775 r w x r w x r — x
4 2 1 4 2 1 4 0 1
  • Секретний проект. Права на читання, запис і виконання файлу має власник файлу і члени групи, до якої належить власник файлу. Інші не мають жодних прав.
Власник Група Інші
770 r w x r w x - — -
4 2 1 4 2 1 0 0 0

Примітка: Для входу в каталог користувач повинен мати у всіх батьківських каталогах право x.

Значення прав доступу у файлів і каталогів[ред. | ред. код]

Дозволи для файлів і каталогів мають деякі відмінності, які відображає наступна таблиця:

Файл Каталог
Read читання з файлу читання з каталогу (випис вмісту)
Write запис до файлу запис до каталогу (створення, видалення, перейменування файлів та підкаталогів)
eXecute виконання (програма, скрипт) відкриття каталогу

Випис прав доступу[ред. | ред. код]

Переглянути права доступу можна в терміналі за допомогою команди ls з параметром -l. Також можна додати параметр -a, щоб були відображені і приховані об'єкти. Виступ буде сформатовано, як показано нижче:

-rwx------ 1 allexserv nogroup 638116 2009-06-25 20:42 autumnscolor.zip

drwxr-xr-x 13 allexserv nogroup 4096 2009-05-31 14:58 phpBB3

drwx------ 10 allexserv nogroup 4096 2009-06-25 14:29 phpMyAdmin-3.2.0-all-languages

-rwx------ 1 allexserv nogroup 677334 2009-06-25 20:42 pro_ubuntu.zip

drwxr-xr-x 2 allexserv nogroup 4096 2009-06-25 14:29 папка

Спеціальні права доступу[ред. | ред. код]

Також існують спеціальні біти, такі як SUID, SGID и Sticky-біт. Спеціальні права змінюють стандартну поведінку системи, що зручно в деяких спеціальних випадках.

  • SUID-біт

програма працює з правами власника виконуваного файлу

  • SGID біт

програма виконується з правами групи, що володіє файлом

  • sticky біт

дозволяє видаляти і редагувати лише власні файли (для каталогу /tmp, тому що всі в ньому мають право запису)

Посилання[ред. | ред. код]