Сесії і ідентифікатори користувача
Як правило, далеко не кожна авторизація окремих
операцій супроводиться актом аутентифікації. Чаші всього використовується
принцип сесій роботи з обчислювальною системою. На початку роботи користувач
встановлює з'єднання і "входить" в систему. При "вході"
відбувається його аутентифікація.
Для того, щоб бути аутентифицированным, користувач повинен мати обліковий
запис (account) у системній базі даних. Потім користувач проводить
сеанс роботи з системою, а після закінчення цього сеансу анулює реєстрацію.
Одним з атрибутів сесії є ідентифікатор
користувача (user id) або контекст доступу
(security context) який і використовується при подальших авторизаціях.
Зазвичай такий ідентифікатор має дві форми: числовий код, вживаний
усередині системи, і мнемонічне символьне ім'я, використовуване при спілкуванні
з користувачем.
Сесії в Unix
Наприклад, в системах сімейства Unix користувач ідентифікується цілочисельним
значенням uid (user identifier). З кожним завданням (процесом) пов'язано
два ідентифікатори користувача: реальний і ефективний. В більшості
випадків ці ідентифікатори збігаються (ситуації, коли вони не збігаються,
детально обговорюються в разд. Зміна ідентифікатора
користувача). Таким чином, кожне завдання обов'язково виконується від
імені того або іншого користувача, що має обліковий запис в системі.
Користувач може мати також символьне ім'я. У старих системах Unix
відповідність між символьним і числовим ідентифікаторами встановлювалася
на основі вмісту текстового файлу /etc/passwd. Кожен рядок цього
файлу описує одного користувача і складається з сімнадцяти полів, розділених
символом ':'. У першому полі міститься символьне ім'я користувача, в
другому — числовий ідентифікатор в десятковому записі. Останні поля містять
інші відомості про користувача, наприклад, його повне ім'я.
Призначені для
користувача програми можуть встановлювати відповідність між числовим
і символьним ідентифікаторами самостійно, шляхом перегляду файлу /etc/passwd,
або використовувати бібліотечні функції, визначені стандартом POSIX.
У багатьох реалізаціях ці функції використовують замість /etc/passwd індексовану
базу даних, а сам файл /etc/passwd зберігається лише для сумісності
із старими програмами.
У сучасних системах сімейства Unix бібліотеки роботи із списком користувачів
мають модульну архітектуру і можуть використовувати різні, у тому числі
і розподілені по мережі бази даних. Інтерфейс модуля роботи з конкретним
типом БД називається РАМ (Person Autentification Module -модуль аутентифікації
людей) (мал. 12.1).
Потрібно відзначити, що відповідність між символьним і числовим ідентифікаторами
в Unix не є взаємно однозначною. Одному і тому ж числовому ідентифікатору
може відповідати декілька імен. Крім того, в Unix дозволено створити
об'єкти з числовим uid, якому не відповідає жодне символьне ім'я.

Мал. 12.1. РАМ і різні бази
облікових записів
Більшість сучасних ОС дозволяють також запускати завдання без входу систему
і створення сесії. Так, практично всі системи розділення часу (Unix,
VMS, MVS-OS/390-z/OS) надають можливість користувачам запускати
завдання в задані моменти астрономічного часу періодично, наприклад,
під час ночі в п'ятницю кожного тижня. Кожна таке завдання виконується від імені
певного користувача — того, хто запитав запуск завдання. Для управління
правами доступу в таких ситуаціях ідентифікатор користувача асоціюється
не з сесією, а з окремими завданнями, а зазвичай навіть з окремими завданнями.
У Windows NT/2000/XP завдання, які можуть запускатися і працювати без входу
користувача в систему, називаються сервісами.
За умовчанням, сервіси запускаються від імені спеціального
[псевдо|пользователя System, але у властивостях сервісу можна вказати, від чийого імені він запускатиметься.
Крім того, деякі комплектації системи (Terminal Server Edition, Citrix
ICA) допускають одночасну інтерактивну роботу декількох користувачів.
Аби забезпечити розділення доступу у всіх цих випадках, кожен процес
в системі має контекст доступу (security context)відповідний тому або іншому обліковому
запису.
|