Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Операцiйнi системи та середовища6.05.07(Антонов...doc
Скачиваний:
11
Добавлен:
04.05.2019
Размер:
801.79 Кб
Скачать

5.5.2 Основні біти доступу

Розгляньмо докладніше, що являють собою "права доступу". При роздрукуванні вмісту директорії (приміром командою ls) кожен рядок має вигляд

-rw-r--r-- root wheel 178 Mar 19 21:58 io.c

Перший стовпчик складається з десяти символів. Однак перший символ не має відношення до permissions, а позначає "тип цього об’єкта". У директорії, окрім файлів, можуть міститися піддиректорії, інші об’єкти – “лінки”, ”черги”, “сокети”, котрі мають такі самі атрибути, як і у звичайних файлів. Тому перший символ саме й зазначає, що за об’єкт ми спостерігаємо: звичайний файл (позначка "-"), піддиректорію (позначка "d") чи ще якийсь специфічний об’єкт ("l", "s", "p"...).

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

  • перша група – права "хазяїна";

  • друга група – права "групи особливо допущених";

  • третя група – права для "всієї решти".

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

При роботі з файлами перший біт позначається літерою "r" (read) і означає, що користувачеві, котрий підпадає під відповідну категорію, дозволяється читати вміст цього файла. Користувач може переглянути вміст файла, а також скопіювати цей файл, але це не означає, що якщо це є програма, то користувач зможе запустити його на виконання. Другий біт позначається літерою "w" (write) і дозволяє записування до файла. Користувач може змінити вміст файла (приміром котримсь редактором), дописати дещо наприкінці або стерти весь вміст. Однак цей біт ще не надає права вилучити сам файл з директорії чи змінити його назву, тому що це визначається правами на саму директорію, але надає можливість зробити цей файл порожнім (нульової довжини) чи скопіювати до нього вміст іншого файла й тим самим "підмінити" його. Третій біт позначається літерою "x" (eXecute), дозволяє запустити на виконання цей файл, якщо він являє собою програму чи командний файл. Часто користувачі-початківці, склавши певний командний файл, забувають установити на нього біт "виконання" хоча б для себе – власника цього файла. Як наслідок, за спроби запустити його система повідомляє, що "ви не маєте права" виконувати цей файл. Природно, що в даному разі причина полягає не в тім, що "злісний" адміністратор істотно "урізав" права цього користувача, а в тім, що він сам забув "надати собі право", причому цілковито законне.

Для директорій перший біт ("r") дозволяє читати зміст цієї директорії, тобто список файлів та піддиректорій, котрі містяться в ній. Однак цей біт ще не надає можливості зайти до цієї директорії (командою cd) чи дістати доступ до вмісту, тобто читати, запускати, змінювати файли, навіть якщо "права доступу", установлено на самих файлах, це дозволяють. Тому саме собою "право читання" директорії практично не є чинним і цей біт, як правило, ставиться лише разом з бітами "x". Для директорій біт "x" означає, що користувач може дістати доступ до "компонентів", тобто окремих файлів та піддиректорій. Лише за наявності цього біта система дозволить увійти до цієї директорії й виконати певну дію з файлом, якщо самі файли ("права доступу" на них) це дозволять. Треба також звернути увагу, що якщо навіть внутрішні піддиректорії мають "нормальні" права для певної категорії користувачів, а вища директорія – не має, бо відсутній біт "x", то цим користувачам не вдасться "зайти" до піддиректорій, оминаючи вищу. Система перевіряє увесь "шлях" до кінцевої директорії файла (наприклад /usr/share/misc/fonts), і, якщо хоча б один з компонентів цього шляху не має відповідного біта, користувачеві буде відмовлено в доступі. Врешті, біт "w", встановлений на директорії, дозволяє змінювати вміст директорії, тобто дозволяє створювати нові файли (чи копіювати інші файли до цієї директорії), змінювати назви файлів і вилучати файли.

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

Треба також звернути увагу на те, що жодні з перелічених тут прав не є стасовні до змін самих "атрибутів доступу", тобто – власника файла, групи та прав доступу (permissions). Їхня зміна підпорядковується іншим законам, про які йтиметься нижче.

Усі зазначені біти не мають жодного значення для користувача root

(та програм, що під час виконання змінили свій "ефективний userID" на ідентифікатор суперкористувача), тобто він може робити з файлом чи директорією все що завгодно. Однак і тут є один виняток. Оскільки біт "x" на файлі є основною ознакою "виконуваності" цього файла, навіть root не зможе переконати систему, що файл є програмою і його можна виконувати, поки не встановить в атрибутах цей біт [7, 8].