Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Безпека.docx
Скачиваний:
163
Добавлен:
31.08.2019
Размер:
6.2 Mб
Скачать

12.3.3. Підсистема розмежування доступу

Як уже зазначалося, в системі UNIX єдині можливі суб'єкти доступу — корис­тувачі. Для більш гнучкого розмежування доступу всіх користувачів розбито на групи. Один користувач може належати до кількох груп, одна з яких — первинна.

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

Належність користувача до груп визначається у файлах /etc/passwd і /etc/group. У файлі /etc/passwd призначається ідентифікатор первинної групи (поле GID). Файл /etc/group подібний до /etc/passwd; він також є текстовим, і кожний

його рядок інтерпретується як один окремий запис. У файлі /etc/group окремі за­писи стосуються груп користувачів. Поля мають такі значення:

  • group_name (ім'я групи);

  • образ пароля (частіше це поле буває порожнім);

  • GID (числовий ідентифікатор групи);

♦ список користувачів, які є членами групи.

Крім користувачів, зазначених у відповідному полі файлу /etc/group, члена­ми певної групи є також усі користувачі, для яких цю групу призначено як пер­винну в файлі /etc/passwd.

Об'єктами доступу в UNIX можуть бути лише файли (звичайні файли, ката­логи, посилання (Link), канали (Pipe) та спеціальні файли, що відповідають при­строям введення-виведення). Різні операційні системи, узагальнені назвою UNIX, можуть мати різні файлові системи. Однак усі ці файлові системи мають спільні риси та майже однакову логічну структуру.

Розглянемо особливості файлової системи UNIX, які впливають на роботу системи розмежування доступу. Усю файлову систему поєднано в єдине дерево каталогів, яке починається з кореневого каталогу, позначеного символом «/». Усі зовнішні файлові системи (змінні носії інформації, мережні диски тощо) монту­ються у визначені місця загальної файлової системи (команда mount), найчастіше це каталог /mnt. Щоб змінити носій або відключити мережний диск, їх спочатку необхідно розмонтувати (команда umount). Уся інформація про файл (тип, іден­тифікатори власника файлу та його групи, розмір, час останнього звернення до файлу, інформація щодо прав доступу, розташування (номери блоків)) міститься не в каталогах, як це зроблено в багатьох інших файлових системах, зокрема у FAT-12, FAT-16, FAT-32 (MS-DOS, Windows), а в системній таблиці індексних дескрипторів (i-node). Безпосередньо звернутися до цієї таблиці неможливо. Ка­талоги, у свою чергу, містять лише ім'я файлу та посилання на відповідний запис у таблиці індексних дескрипторів. Завдяки такій організації кожний файл у фай­ловій системі UNIX може мати кілька абсолютно рівноправних імен, що в загаль­ному випадку містяться в різних каталогах. Знищуючи файл, ми знищуємо лише відповідний запис у каталозі та зменшуємо на одиницю кількість імен, які має цей файл. Файл вважається фізично знищеним лише тоді, коли в нього більше не залишається імен. Кількість імен файлу відстежується за допомогою спеціально­го поля в таблиці індексних дескрипторів. Однак зворотного посилання (з деск­риптора на ім'я файлу) немає.

Уміст каталогу можна переглянути, скориставшись командою Is, а за допомо­гою розширеного варіанта цієї команди Is -l можна переглянути інформацію, що міститься в таблиці індексних дескрипторів.

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

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

Четвертий біт може мати різні значення, залежно від того, до якої категорії користувачів його встановлено. Для прав власника цей біт має назву SUID (Set User ID on execution bit), і якщо його встановлено для файлу, що містить програмний код, то під час його запуску на виконання цей програмний код буде виконуватися не з правами користувача, що його запустив, а з правами власника цього файлу (здебільшого власником таких файлів є root). Четвертий біт для прав доступу членів групи має назву SGID (Set Group ID on execution bit). IIpoграма для файлу якої встановлено цей біт, буде виконуватися з правами члена групи цього файлу. Для каталогів SGID визначає, що для всіх файлів під час їх створення у цьому каталозі буде встановлено такий самий ідентифікатор групи, що й у каталозі, а не той, що визначено первинною групою користувача (це правило може бути різним у різних системах UNIX). Четвертий біт, встановлений для прав доступу решти користувачів, має значення Sticky. Наразі його використовують лише для каталогів. Користувачі, які мають право на записування в каталог, не мають права видаляти чи перейменовувати файли інших користувачів у цьому каталозі. Дотримання такого правила потребують каталоги спільного використання, на кшталт /tmp.

У класичній системі UNIX є суперкористувач (root), який має ідентифікатор UID = 0. Саме цей ідентифікатор визначає повноваження суперкористувача, a login_name root для системи жодного значення не має. Будь-якому користувачу з UID = 0 система буде показувати, що його login_name саме root. За визначенням суперкористувач має необмежені права в системі, власне, для нього вимоги розмежування доступу ігноруються. У сучасних UNIX-системах це не зовсім так: права доступу в них перевіряються, проте суперкористувач може здійснювати будь-які дії в системі.

У захищених системах доступ суперкористувача до системи обмежують або взагалі забороняють. Наприклад, якщо в системі Solaris у файлі /etc/default/login вказати CONSOLE=/dev/console, то root зможе входити у систему лише з системної консолі, а не з віддалених терміналів через мережу. Якщо ж цей параметр задати як CONSOLE=, root взагалі не зможе входити у систему. В такому випадку для виконання завдань керування системою адміністратори спочатку мають входити в систему як звичайні користувачі, а потім здійснювати перехід до облікового запису суперкористувача. Для цього є команда su (Switch User). Перевага такої процедури полягає у тому, що система відстежує не лише ефективний, тим часовий ідентифікатор користувача, а й ідентифікатор, під яким користувач увійшов до системи. Це сприяє підвищенню спостережності системи, оскільки дає змогу з'ясувати, хто саме виконував дії від імені root. Ще гнучкіший механізм

надає утиліта sudo, яка дає змогу користувачу тимчасово (наприклад, для вико­нання однієї команди) отримувати певні привілеї. У цьому випадку повноважен­ня окремих користувачів встановлюються за допомогою конфігураційного файлу (наприклад, /etc/sudoers або /usr/local/etc/sudoers).