Файлова система UNIX
Як і у багатьох сучасних операційних системах, в UNIX файли організовані у вигляді файлової системи. Кожний файл має ім’я, яке визначає його розташування у дереві файлової системи. Коренем цього дерева є кореневий каталог (root directory), що має ім’я “/”. Імена всіх інших файлів містять шлях — список каталогів (гілок), які потрібно пройти, щоб досягти файлу. В UNIX весь доступний користувачам файловий простір об’єднаний в єдине дерево каталогів, коренем якого є каталог “/”. Отже, повне ім’я будь-якого файлу починається з “/” і не містить ідентифікатора пристрою (дискового накопичувача, CD-ROM або віддаленого комп’ютера у мережі), на якому він фактично зберігається. Проте це не означає, що система містить тільки одну файлову систему. У більшості випадків єдине дерево — таке, яким його бачить користувач системи — складено з кількох окремих файлових систем, які можуть мати різну внутрішню структуру, а файли, що належать цим файловим системам, розташовуються на різних пристроях. Через велике функціональне навантаження, що покладено на файлову систему, в UNIX визначено шість типів файлів, які розрізняються за функціональним призначенням. Поряд із звичайними файлами (regular file) і каталогами (directory) використовуються: спеціальний файл пристрою (special device file), FIFO, або іменований канал (named pipe), зв’язок (link) і сокет.
Спеціальний файл пристрою (special device file) забезпечує доступ до фізичного пристрою. Доступ до пристроїв здійснюється відкриттям, читанням і записом у спеціальний файл пристрою, причому FIFO, або іменований канал, — це файл, що використовується для зв’язку між процесами. Як уже зазначалося, каталог містить імена файлів і покажчики на їх метадані. Водночас самі метадані не містять ні імені файлу, ні покажчика на це ім’я. Така архітектура надає можливість одному файлу мати кілька імен у файловій системі. Імена жорстко пов’язані з метаданими і, відповідно, з даними файлу, тоді як сам файл існує незалежно від того, як його називають у файловій системі. Такий зв’язок імені файлу з його даними називається жорстким зв’язком (hard link).
Особливим типом файлу є символічний зв’язок, який дає змогу побічно адресувати файл. На відміну від жорсткого, символічний зв’язок адресує файл, який, у свою чергу, відправляється на інший файл.
Сокети призначені для взаємодії між процесами. Інтерфейсом сокетів часто користуються для доступу до мережі TCP/IP. У системах BSD UNIX на базі сокетів реалізована система міжпроцесної взаємодії, за допомогою якої працюють системні сервіси, наприклад, система друку.
Файли в UNIX мають двох власників: власника-користувача (user owner) і власника групи (group owner). Важливою особливістю є те, що власник-користувач може не бути членом групи, яка володіє файлом.
Групою називається певний список користувачів системи. Користувач системи може бути членом кількох груп, одна з яких є первинною (primary), інші — додатковими (supplementary). Це робить організацію доступу до файлів досить гнучкою. Спільне користування файлами можна організувати практично для будь-якого складу користувачів, створивши відповідну групу та установивши для неї права на потрібні файли. Для того, щоб якийсь користувач одержав доступ до цих файлів, достатньо включити його у групу-власника, і навпаки — виключення з групи автоматично змінює для користувача права доступу до файлів.
Власником-користувачем створеного файлу є користувач, що створив його. Володіння файлом визначає той набір операцій, які користувач може зробити з файлом. Деякі з них, такі як зміна прав доступу або власника файлу, може здійснювати тільки власник (або адміністратор), інші операції, такі як читання, запис і запуск на виконання (для виконуваних файлів), додатково контролюються правами доступу.
В операційній системі UNIX існують три базові класи доступу до файлу, в кожному з яких встановлено відповідні права доступу:
· user access(u) — для власника-користувача файлу;
· group access (g) — для членів групи, що є власником файлу;
· оther access (о) — для інших користувачів.
Для інших користувачів, крім суперкористувача, UNIX підтримує три типи прав доступу для кожного класу: на читання (read, позначається символом r), на запис (write, позначається символом w) і на виконання (execute, позначається символом х).
Права доступу можуть бути змінені тільки власником файлу або суперкористувачем (superuser) — адміністратором системи.
Значення прав доступу є різним для різних типів файлів. Операції, які можна виконувати, випливають із самих назв прав доступу. Наприклад, щоб переглянути вміст файлу командою cat (l), користувач повинен мати право на читання (r). Редагування файлу, тобто його зміна, передбачає наявність права на запис (w). Нарешті, для того щоб запустити деяку програму на виконання, користувач повинен мати відповідне право (х). Виконуваний файл може бути як скомпільованою програмою, так і скриптом командного інтерпретатора shell. В останньому випадку користувачеві також знадобиться право на читання, оскільки під час виконання скрипту командний інтерпретатор повинен мати можливість зчитувати команди з файлу. Все зазначене, крім, мабуть, права на виконання, що має зміст лише для звичайних файлів і каталогів, є слушним і для інших типів файлів: спеціальних файлів пристроїв, іменованих каналів і сокетів.
Дата добавления: 2015-08-11; просмотров: 835;