Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LR_1-6.doc
Скачиваний:
7
Добавлен:
14.11.2019
Размер:
5.18 Mб
Скачать

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

Як було зазначено вище, у системі Unix єдиними можливими суб'єктами доступу є користувачі. Для більш гнучкого розмежування доступу всі користувачі поєднуються у групи. Один користувач може брати участь у декількох групах. Розрізняють також первинну групу, членом якої користувач є безпосередньо після входу в систему. Належність до груп визначається у файлах /etc/passwd і /etc/group, формат яких описаний у сторінках довідкової системи man passwd(5) і group(5).

Як об'єкти доступу в Unіх'і виступають файли і тільки файли. Вони бувають різних типів: звичайні файли, каталоги, посилання (link), канали (pipe) і спеціальні файли (що відповідають пристроям вводу-виводу). Різні операційні системи, які узагальнюються під назвою Unix, можуть мати різні файлові системи. Однак всі ці файлові системи мають спільні особливості і практично однакову логічну структуру.

Розглянемо особливості файлової системи Unix, які мають значення для роботи системи розмежування доступу. Вся файлова система поєднується в єдине дерево каталогів, які починаються з кореневого каталогу, що має позначення "/". Всі зовнішні файлові системи (змінні носії інформації, мережеві диски і таке інше) монтуються у визначенні місця загальної файлової системи (команда mount), як правило, для цього використовується каталог /mnt. Для зміни носія або відключення мережевого диску їх необхідно спочатку розмонтувати (команда umount). Вся детальна інформація про файл, що включає тип файлу, ідентифікатори власника файлу та його групи, розмір файлу, час останнього звернення до файлу, інформацію щодо прав доступу до файлу, а також про його розміщення (номери блоків), міститься не в каталогах, як це зроблено в багатьох інших файлових системах, в тому числі FAT-12, FAT-16, FAT-32, NTFS (MS-DOS, Windows), а в системній таблиці так званих індексних дескрипторів (i-node). Безпосереднє звернення до цієї таблиці заборонене. Каталоги, в свою чергу, містять лише ім'я файлу та посилання на відповідний запис в таблиці індексних дескрипторів. Завдяки такій організації, кожний файл в файловій системі Unix може мати кілька абсолютно рівноправних імен, що в загальному випадку містяться в різних каталогах. При знищенні файлу, ми фактично знищуєм відповідний запис в каталозі, і зменшуєм на одиницю кількість імен, що має файл. Фізично файл знищується тільки тоді, коли в нього більше не залишилось імен. Перегляд вмісту каталогів здійснюється за допомогою команди ls, а розширений варіант цієї команди ls -l дає також інформацію з таблиці індексних дескрипторів.

Unix реалізує дискреційну модель розмежування доступу, тобто для кожного об'єкта доступу (файлу) визначається для всіх суб'єктів доступу (користувачів), по яких методах вони мають доступ до об'єкта. Для цього з кожним файлом асоціюється спеціальна інформація, що утримує ідентифікатор власника файлу, ідентифікатор групи файлу і права доступу до файлу, що складаються з 12 біт. Права доступу поділяються на 3 частині: права власника, права групи і права всіх інших. У кожному класі користувачів виділено по 4 біти. Перші три біти відповідають правам читання, запису й виконання. Для каталогів право виконання трактується як право доступу до таблиці індексних дескрипторів на читання і запис, не маючи цього права неможливо зробити поточним цей каталог чи будь-який з його підкаталогів, неможливо ознайомитись і змінити права доступу до об'єктів цього каталогу, можна тільки переглядати його вміст, якщо є право читання (деякі версії Unix не дозволяють і це). Навіть маючи право запису, без права виконання не можна змінити вміст каталогу. Четвертий біт має різне значення в залежності від того, в якій групі прав доступу він установлений. Для групи прав власника цей біт називається SUID (Set-User-ID-on-execution bit), і якщо він установлений для файлу, що виконується, то цей файл виконується для будь-якого користувача із правами власника цього файлу (як правило, це root – див. далі). Якщо четвертий біт встановлений у групі прав доступу членів групи (SGID — Set-Group-ID-on-execution bit), то дана програма виконується для будь-якого користувача із правами членів групи цього файлу. Для каталогів SGID визначає, що для усіх файлів, створюваних у цьому каталозі, ідентифікатор групи буде встановлений такий же, як у каталогу (ці правила залежать від версії Unix). Четвертий біт у групі прав доступу всіх інших користувачів називається Sticky, на сьогоднішній день він використовується тільки для каталогів і визначає, що користувачі, які мають право на запис в каталог, не мають права видаляти чи перейменовувати файли інших користувачів у цьому каталозі. Це необхідно для каталогів загального використання, наприклад /tmp.

В класичній системі Unix існує суперкористувач (root), який має ідентифікатор користувача 0. За визначенням, суперкористувач має необмежені права в системі, власне, для нього просто ігноруються вимоги розмежування доступу. В сучасних системах це не зовсім так, але суперкористувач дійсно має можливість здійснити в системі будь-які дії.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]