русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Основні біти доступу (читання/запис/виконання)


Дата додавання: 2014-11-27; переглядів: 874.


 

Розгляньмо докладніше, що являють собою "права доступу". При роздрукуванні вмісту директорії (наприклад командою 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", встановлений на директорії, дозволяє змінювати вміст директорії, тобто дозволяє створювати нові файли (чи копіювати інші файли в цю директорію), змінювати назви файлів і вилучати файли.

Зверніть увагу на "поділ повноважень" поміж тими permissions, що містяться на файлі, й тими, котрі розміщено на директорії.

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

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

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

 


<== попередня лекція | наступна лекція ==>
Поняття прав доступу користувача | Додаткові біти доступу


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн