Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БІКС 2015_1 / 8лек Засоби захисту в операційній системі UNIXповн.doc
Скачиваний:
78
Добавлен:
12.02.2016
Размер:
5.46 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 може мати кілька абсолютно рівноправних імен, що в загаль­ному випадку містяться в різних каталогах. Знищуючи файл, ми знищуємо лише відповідний запис у каталозі та зменшуємо на одиницю кількість імен, які має цей файл. Файл вважається фізично знищеним лише тоді, коли в нього більше не залишається імен. Кількість імен файлу відстежується за допомогою спеціально­го поля в таблиці індексних дескрипторів. Однак зворотного посилання (з деск­риптора на ім'я файлу) немає.

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

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

Четвертий біт може мати різні значення, залежно від того, до якої категорії користувачів його встановлено. Для прав власника цей біт має назву SUID (Set User ID on execution bit), і якщо його встановлено для файлу, що містить про­грамний код, то під час його запуску на виконання цей програмний код буде ви­конуватися не з правами користувача, що його запустив, а з правами власника цього файлу (здебільшого власником таких файлів є root). Четвертий біт для прав доступу членів групи має назву SGID (Set Group ID on execution bit). Про­грама для файлу якої встановлено цей біт, буде виконуватися з правами члена групи цього файлу. Для каталогів 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).