
- •1.3. Короткий нарис історії ос
- •1.3.1. Передісторія ос
- •1.3.2. Пакетні ос
- •1.3.3. Ос з поділом часу
- •1.3.4. Однозадачние ос для пеом
- •1.3.5. Багатозадачні ос для пк з графічним інтерфейсом
- •1.4. Класифікація ос
- •1.5. Критерії оцінки ос
- •1.5.2. Ефективність
- •1.5.3. Зручність
- •1.5.4. Масштабованість
- •1.5.5. Здатність до розвитку
- •1.6. Основні функції і структура ос
- •1.7. Ос, що використовуються в подальшому викладі
- •1.7.2. Windows
- •1.7.3. Unix
- •2. Управління пристроями
- •2.1. Основні завдання управління пристроями
- •2.2. Класифікація периферійних пристроїв і їх архітектура
- •2.3. Переривання
- •2.4. Архітектура підсистеми вводу / виводу
- •2.5. Способи організації введення / виводу
- •2.5.1. Введення / висновок з опитування і по перериваннях
- •2.5.2. Активне і пасивне очікування
- •2.5.3. Синхронний і асинхронний ввід / вивід
- •2.6. Буферизація і кешування
- •2.6.1. Поняття буферизації
- •2.6.2. Згладжування нерівномірності швидкостей процесів
- •2.6.3. Розпаралелювання введення та обробки
- •2.6.4. Узгодження розмірів логічної та фізичної записи
- •2.6.5. Редагування при інтерактивному введенні
- •2.6.6. Кешування дисків
- •2.6.7. Випереджаюче читання.
- •2.7. Драйвери пристроїв
- •2.8. Управління пристроями в ms-dos
- •2.8.1. Рівні доступу до пристроїв
- •2.8.2. Драйвери пристроїв в ms-dos
- •2.8.3. Управління символьними пристроями
- •2.8.4. Управління блоковими пристроями
- •2.8.4.2. Розділи і логічні томи
- •2.8.4.3. Засоби доступу до дисків
- •2.9. Управління пристроями в Windows
- •2.9.1.1. Драйвери пристроїв в Windows
- •2.9.1.2. Доступ до пристроїв
- •2.10. Управління пристроями в unix
- •2.10.1. Драйвери пристроїв в unix
- •2.10.2. Пристрій як спеціальний файл
- •3. Управління даними
- •3.1. Основні завдання управління даними
- •3.2. Характеристики файлів та архітектура файлових систем
- •3.3. Розміщення файлів
- •3.4. Захист даних
- •3.6. Файлова система fat і управління даними в ms-dos
- •3.6.1. Загальна характеристика системи fat
- •3.6.2. Структури даних на диску
- •Структура записи каталога файловой системы fat
- •3.6.4. Робота з файлами в ms-dos
- •3.6.4.1. Системні функції
- •3.6.4.2. Доступ до даних
- •3.6.4.3. Структури даних у пам'яті
- •3.6.5. Нові версії системи fat
- •3.7. Файлові системи і управління даними в unix
- •3.7.1. Архітектура файлової системи unix
- •3.7.1.1. Жорсткі і символічні зв'язку
- •3.7.1.2. Монтовані томи
- •3.7.1.3. Типи і атрибути файлів
- •3.7.1.4. Управління доступом
- •3.7.2. Структури даних файлової системи unix
- •3.7.3. Доступ до даних в unix
- •3.7.4. Розвиток файлових систем unix
- •3.8. Файлова система ntfs і управління даними в Windows
- •3.8.1. Особливості файлової системи ntfs
- •3.8.2. Структури дискових даних
- •3.8.2.1. Головна таблиця файлів
- •3.8.2.2. Атрибути файлу
- •3.8.3. Доступ до даних
- •3.8.4. Захист даних
- •3.8.4.1. Аутентифікація користувача
- •3.8.4.2. Дескриптор захисту
- •4. Управління процесами
- •4.1. Основні завдання управління процесами
- •4.2. Реалізація багатозадачного режиму
- •4.2.1. Поняття процесу і ресурсу
- •4.2.2. Квазіпараллельний виконання процесів
- •4.2.3. Стану процесу
- •4.2.4. Невитісняючаі витісняюча багатозадачність
- •4.2.5. Дескриптор і контекст процесу
- •4.2.6. Реєнтерабельним системних функцій
- •4.2.7. Дисципліни диспетчеризації та пріоритети процесів
- •4.3. Проблеми взаємодії процесів
- •4.3.1. Ізоляція процесів та їх взаємодія
- •4.3.2. Проблема взаємного виключення процесів
- •4.3.3. Двійкові семафори Дейкстри
- •4.3.4. Засоби взаємодії процесів
- •4.3.4.1. Цілочисельні семафори
- •4.3.4.2. Семафори з множинним очікуванням
- •4.3.4.3. Сигнали
- •4.3.4.4. Повідомлення
- •4.3.4.5. Спільна пам'ять
- •4.3.4.6. Програмні канали
- •4.3.5. Проблема тупиків
- •4.4. Управління процесами в ms-dos
- •4.4.1. Процеси в ms-dos
- •4.4.2. Середа програми
- •4.4.3. Запуск програми
- •4.4.4. Завершення роботи програми
- •4.4.5. Перехоплення переривань і резидентні програми
- •4.5. Управління процесами в Windows
- •4.5.1. Поняття об'єкта у Windows
- •4.5.2. Процеси і нитки
- •4.5.3. Планувальник Windows
- •4.5.4. Процес і нитка як об'єкти
- •4.5.5.2. Об'єкти синхронізації та функції очікування
- •4.5.5.3. Типи об'єктів синхронізації
- •4.5.5.4. Критичні секції
- •4.5.6. Повідомлення
- •4.6. Управління процесами в unix
- •4.6.1. Життєвий цикл процесу
- •4.6.2. Групи процесів
- •4.6.3. Програмні канали
- •4.6.4. Сигнали
- •4.6.5. Засоби взаємодії процесів в стандарті posix
- •4.6.6. Планування процесів
- •4.6.6.1. Стану процесів в unix
- •4.6.6.2. Пріоритети процесів
- •4.6.7. Інтерпретатор команд shell
- •5. Управління пам'яттю
- •5.1. Основні завдання управління пам'яттю
- •5.2. Віртуальні й фізичні адреси
- •5.3.2. Розподіл з фіксованими розділами
- •5.3.3. Розподіл з динамічними розділами
- •5.4. Сегментна організація пам'яті
- •5.5. Сторінкова організація пам'яті
- •5.6. Порівняння сегментної і сторінкової організації
- •5.7. Управління пам'яттю в ms-dos
- •5.8. Управління пам'яттю в Windows
- •5.8.1. Структура адресного простору
- •5.8.3. Відображення виконуваних файлів
- •5.8.4. Файли, відображувані на пам'ять
- •5.8.5. Стеки і купи
- •5.9. Управління пам'яттю в unix
- •Література
3.8.4. Захист даних
Засоби безпеки в Windows NT/2000/XP являють собою окрему підсистему, яка забезпечує захист не тільки файлів, але і інших типів системних об'єктів. Файли і каталоги NTFS являють собою найбільш типові приклади об'єктів, що захищаються.
Як відомо, Windows дозволяє використовувати різні файлові системи, при цьому можливості захисту даних визначаються архітектурою конкретної файлової системи. Наприклад, якщо на дисковому томі використовується система FAT (де, як нам відомо, ніяких засобів захисту не
передбачено), то Windows може хіба що обмежити доступ до всього того, але не до окремих файлів і каталогів.
3.8.4.1. Аутентифікація користувача
Важливим елементом будь-якої системи захисту даних є процедура входу в систему, при якій виконується аутентифікація користувача. У Windows NT для виклику діалогу входу в систему використовується відома «комбінація з трьох пальців» - Ctrl + Alt + Del. Як стверджують розробники, ніяка «троянська" програма не може перехопити обробку цієї комбінації і використовувати її з метою колекціонування паролів.
Не хоче хто-небудь спробувати?
Система шукає введене ім'я користувача спочатку в списку користувачів даного комп'ютера, а потім і на інших комп'ютерах поточного домену локальної мережі. У випадку, якщо ім'я знайдено і пароль співпав, система отримує доступ до облікового запису (account) даного користувача.
На підставі відомостей з облікового запису користувача система формує структуру даних, яка називається маркером доступу (access token). Маркер містить ідентифікатор користувача (SID, Security IDentifier), ідентифікатори всіх груп, в які включений даний користувач, а також набір привілеїв, якими володіє користувач.
Привілеями називаються права загального характеру, не пов'язані з конкретними об'єктами. До числа привілеїв, доступних тільки адміністратору, відносяться, наприклад, права на встановлення системного часу, на створення нових користувачів, на привласнення чужих файлів. Деякі скромні привілеї звичайно надаються всім користувачам (наприклад, такі, як право налагоджувати процеси, право отримувати повідомлення про зміни у файловій системі).
У подальшій роботі, коли користувачеві має бути наданий доступ до яких-небудь ресурсів, що захищаються, рішення про доступ приймається на підставі інформації з маркера доступу.
3.8.4.2. Дескриптор захисту
Для будь-якого об'єкта, що захищається Windows (файла, каталогу, диска, пристрої, семафора, процесу тощо) може бути задана спеціальна структура даних - атрибути захисту.
Основним змістом атрибутів захисту є інша структура - дескриптор захисту. Цей дескриптор містить наступні дані:
· Ідентифікатор захисту (SID) власника об'єкта;
· Ідентифікатор захисту первинної групи власника об'єкта;
· Користувальницький («дискреційний», «розмежувальний») список управління доступом (DACL, Discretionary Access Control List);
· Системний список управління доступом (SACL, System Access Control List).
Користувальницький список управляє дозволами і заборонами доступу до даного об'єкта. Змінювати цей список може тільки власник об'єкта.
Системний список управляє тільки аудитом доступу даному об'єкту, тобто задає, які дії користувачів по відношенню до даного об'єкту повинні бути запротокольовані в системному журналі. Змінювати цей список може тільки користувач, що має права адміністратора системи.
У Windows, на відміну від багатьох інших ОС, адміністратор не всесильний. Він не може заборонити або дозволити кому б то не було, навіть самому собі, доступ до чужого файлу. Інша справа, що адміністратор має право оголосити себе власником будь-якого файлу, але потім він не зможе повернути файл колишньому хазяїну. Подібні обмеження випливають з розуміння, що адміністратор теж не завжди ангел і, хоча він повинен мати в системі великі права, його дії слід хоч якось контролювати.
Обидва списки управління доступом мають однакову структуру, їх основною частиною є масив записів управління доступом (ACE, Access Control Entity).
Розглянемо структуру запису ACE. Вона містить:
· Тип ACE, який може бути одним з наступних: дозвіл, заборона, аудит;
· Прапори, уточнюючі особливості дії даної ACE;
· Бітова маска видів доступу, яка вказує, які саме дії слід дозволити, заборонити чи піддати аудиту;
· Ідентифікатор (SID) користувача або групи, чиї права визначає дана ACE.
Більш цікавий користувальницький список. Він може містити лише записи дозволу і заборони. На початку списку завжди йдуть забороняють записи, потім дозволяють.
Коли користувач запитує доступ до об'єкта (тобто, наприклад, програма, запущена цим користувачем, викликає функцію відкриття файлу), відбувається перевірка прав доступу. Вона виконується на основі порівняння маркера доступу користувача зі списком DACL. Система переглядає по порядку всі записи ACE із DACL, для кожної ACE визначає записаний в ній SID і звіряє, чи не є він ідентифікатором поточного користувача або однієї з груп, куди входить цей користувач. Якщо ні, то дана ACE не має до нього відношення і не враховується. Якщо так, то виконується порівняння прав, необхідних користувачу для виконання запитаної операції з маскою видів доступу з ACE. При цьому права аналізуються вельми детально: наприклад, відкриття файлу на читання увазі наявність прав на читання даних, на читання атрибутів (в тому числі власника і атрибутів захисту), на використання файлу як об'єкта синхронізації (див. п. 4.5.5.2).
Якщо у забороняє ACE знайдеться хоча б один одиничний біт в позиції, відповідної одному із запитаних видів доступу, то вся операція, розпочата користувачем, вважається забороненою і подальші перевірки не проводяться.
Якщо такі біти будуть знайдені в роздільною ACE, то перевірка наступних ACE виконується до тих пір, поки не будуть вирішені і всі інші запитані види доступу.
Як видумаєте, чому в списку DACL спочатку йдуть забороняють ACE, а тільки потім вирішують?
Таким чином, кажучи коротко, користувач отримає доступ до об'єкта тільки в тому випадку, якщо всі запитані їм види доступу явним чином дозволені і жоден з них не заборонений.
У роки перебудови багато писалося про двох протилежних принципах: «заборонено все, що не дозволено» або «дозволено все, що не заборонено». У Windows все набагато суворіше: заборонено все, що заборонено, і все, що не дозволено.
Список DACL з усіма необхідними дозволами і заборонами може бути встановлений програмно при створенні файлу, а згодом програмно ж може бути змінений власником. Можна також змінювати дозволи в діалозі, скориставшись вікном властивостей файлу.
Є також два крайніх випадку. Список DACL може зовсім отсутствовать (для цього достатньо, наприклад, при створенні файлу вказати NULL замість атрибутів захисту), при цьому права доступу не перевіряються, всі дії дозволені всім користувачам. Список DACL може бути присутнім, але мати нульову довжину (немає жодної ACE). Як випливає із загальних правил, у цьому випадку в доступі буде відмовлено всім, у тому числі і господаря файлу.