- •Системне програмне забезпечення Конспект лекцій з дисципліни „Системне програмне забезпечення”
- •2 Концептуальні основи ос.....................................................................................16
- •2.4 Концепція віртуалізації....................................................................................28
- •2.5 Концепція переривань.....................................................................................30
- •5 Операційна система unix....................................................................................57
- •1 Операційні системи та середовища
- •Основні означення та терміни
- •Сучасні системи програмування
- •Віртуальний адресний простір
- •Операційні системи для персональних комп’ютерів
- •1.5 Принципи побудови ос
- •1.5.1 Модульність
- •1.5.2 Функціональна вибірковість
- •1.5.3 Генерованость ос
- •1.5.4 Функціональна надлишковість
- •1.5.5 Незалежність програм від зовнішніх пристроїв
- •1.5.7 Відкритість та нарощуваність ос
- •1.5.9 Забезпечення безпеки обчислень
- •1.5.10 Принципи проектування ос
- •2 Концептуальні основи ос
- •2.1 Процеси
- •2.1.1 Означення процесу та граф його існування
- •2.1.2 Класифікування процесів
- •2.2 Ресурс
- •2.2.1 Означення ресурсу
- •2.2.2 Властивості та класифікування ресурсів
- •2.3 Система керування процесами
- •2.3.1 Дворівнева система керування процесами
- •2.3.2 Дисципліни розподілу процесів
- •2.4 Концепція віртуалізації
- •2.5 Концепція переривань
- •3 Захищений режим 32-розрядних процесорів
- •3.1 Основні поняття захищеного режиму
- •3.2 Сегментний механізм віртуалізації пам’яті
- •3.3 Сторінковий механізм віртуалізації пам’яті
- •4 Архітектура операційних системWindows
- •4.1 Архітектура ос Windows 98se
- •4.1.1 Драйвери пристроїв
- •4.1.2 Диспетчер віртуальних машин
- •4.1.3 Встановлювані файлові системи
- •4.1.4 Диспетчер конфігурування
- •4.1.5 Диспетчер драйверів wdm
- •4.1.6 Ядро Windows 98se
- •4.1.8 Оболонка ос
- •4.1.9 Стандартні програми Windows 98se та додатки
- •4.2 Мережна підтримка ос Windows 98se
- •4.2.1 Взаємодія відкритих систем
- •4.2.2 Мережна архітектура Windows 98se
- •4.3 Апаратна підтримка захисту ос
- •4.4 Особливості розподілу оперативної пам’яті в ос Windows nt
- •4.5 Архітектура Windows 2000
- •5 Операційна система unix
- •5.1 Загальна характеристика ос сімейства unix
- •5.2 Архітектура операційної системи unix
- •5.3 Функціонування ос unix
- •5.3.1 Ядро системи
- •5.3.2 Файлова підсистема
- •5.3.3 Підсистема керування процесами та пам’яттю
- •5.3.4 Підсистема введення/виведення
- •5.3.5 Користувачі ос unix
- •5.4 Поняття процесу в ос unix
- •5.4.1 Компоненти процесу
- •5.4.2 Ідентифікатор процесу
- •5.4.2.1 Ідентифікатор батьківського процесу
- •5.4.2.2 Ідентифікатор користувача та групи
- •5.4.3 Стани процесу в unix
- •5.4.4 Керування процесами
- •5.5 Права доступу ос unix
- •5.5.1 Поняття прав доступу користувача
- •5.5.2 Основні біти доступу
- •5.5.3 Додаткові біти доступу
- •5.5.4 Сполучення бітів доступу
- •5.6 Мережні можливості ос unix
- •Список рекомендованої літератури:
5.5.3 Додаткові біти доступу
Окрім розглянутих вище бітів (читання, записування та "виконуваність"), що встановлюються роздільно по трьох категоріях користувачів, є ще три біти доступу, які можна віднести до файла в цілому, оскільки їхня дія не залежить від того, який користувач, з якої категорії намагається звернутися до файла. Та й призначення цих бітів полягає не в обмеженні доступу до файлу чи директорії, а в зміненні певних властивостей файлів директорій.
Біт suid розшифровується як Set user ID, перекладається як "установити ідентифікатор користувача", його зазвичай називають "суїдний" біт, а файли, на яких його установлено, — "суїдними". Призначення його полягає в тому, що якщо його установлено на файлі, котрий є програмою, то при виконанні ця програма автоматично змінює "ефективний userID" на ідентифікатор того користувача, котрий є власником цього файла. Тобто, незалежно від того, хто запускає цю програму, вона при виконанні має права хазяїна цього файла. Зазвичай це робиться для того, щоби користувач міг виконати дії, котрі потребýють привілеїв rооt'а (наприклад, змінити свій пароль), а власником такої програми має бути користувач root.
Зрозуміло, що така програма є потенційно небезпечною. У нормальному випадку вона не дозволить звичайному користувачеві зробити те, що виходить за межі його повноважень, наприклад, програма passwd дозволить користувачеві змінити лише власний пароль, але не паролі решти користувачів. Але навіть незначна помилка в такій програмі може призвести до того, що "зловмисник" зможе змусити її виконати ще якісь дії, не передбачені автором програми. Більшість відомих способів "зламу" системи полягають не в тім, щоби довідатися пароля rооt'а, а саме в тім, щоби змусити котрусь із "суїдних" програм виконувати дії, необхідні "зламувачеві". Це не є єдиний шлях змінити "ефективний userID". Це можна зробити із самої програми, викликавши спеціальну системну функцію, але для цього програма має вже мати права rооt'а. Тобто її має запустити користувач root або вона має бути "суїдною", як зазначено вище.
У такого файла permissions виглядають як **s******, якщо ще й встановлено біт x для власника файла, чи як **S******, якщо біт x не встановлено. Однак ставити suid біт на невиконувані файли зазвичай не має сенсу (принаймні в FreeBSD), хоча існують програми, які перевіряють цей біт навіть для текстових файлів. Цей біт не містить жодного значення, якщо його поставити на директорію, хоча ніхто не забороняє це вчинити.
Біт sgid. Розшифровується як Set group ID, перекладається як "установити ідентифікатор групи". Цей зміст є аналогічний змістові попереднього біта, лише змінюється не ідентифікатор користувача, а ідентифікатор групи. Тобто при виконанні цього файла він має такі права, начебто його запустив дехто з групи, приписаної до цього файла.
Permissions такого файла виглядають як *****s*** (якщо встановлено біт x для групи) чи *****S** (якщо відповідного біта x немає). Так само, як і в попередньому випадку, біт sgid для невиконуваних файлів жодного значення не має.
Для FreeBSD (й інших BSD-систем) цей біт, знову ж, не чинить жодної дії. Але в деяких інших Unix-системах він означає, що, коли файли створюються в такій директорії, в їхніх атрибутах проставляється та сама група, що й у директорії, тобто файли, створювані в такій директорії, "успадковують" групу від директорії.
Біт sticky. У жодний спосіб не розшифровується, перекладається як "липкий". Виглядає в permissions, як ********t, якщо використовується разом з бітом x для "всієї решти", чи як ********T, якщо відповідного біта x немає. Для директорій його значення полягає в тім, що вилучити файл з такої директорії (чи перейменувати) здатен лише власник файла. У звичайному випадку (без такого біта) можливість вилучати файли (як і створювати) визначається правом записування (біт w) до директорії. Тобто, якщо якийсь користувач належить до категорії, для якої дозволено записування до директорії, він може вилучити в ній який завгодно файл, незалежно від атрибутів (власника, групи, permissions) самого файла.
Застосовують цей біт зазвичай на директоріях, які є доступними (наприклад, /tmp). Такі директорії мають права доступу, котрі дозволяють усім користувачам створювати там власні файли й вилучати їх. Однак було б неправильно, якби кожний інший користувач міг помилково чи "аби нашкодити" вилучати файли, до яких він не має жодного відношення. Для того аби запобігти можливості вилучання файла "стороннім" користувачем, саме й слугує sticky біт. Цей біт може ставитися також на виконувані файли. У цьому разі він означає, що файл, навіть після завершення роботи, має залишатися в пам’яті (не в ОЗУ, а в swap-файлі підкачування, котрий використовується в разі недостачі обсягу ОЗУ й у деяких інших випадках). Це корисно для часто використовуваних файлів загального користування, котрі виконуються. На практиці такі файли зустрічаються не надто часто.