Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СПОС(методичка).doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
773.12 Кб
Скачать

5.4. Аутентифікація та керування доступом в unix

Розглянемо, як реалізуват аутентифікацію і керувати доступом в UNIX-системах на прикладі Linux.

5.4.1. Облікові записи користувачів

Перш ніж розглянути реалізацію аутентифікації в UNIX, зупинимося на концепції користувача цієї системи.

Користувачі та групи користувачів

Кожному користувачу в UNIX ставлять у відповідь обліковий запис (account), що характерізується іменем користувача та ідентифікатором (uid). Як ім’я користувача, так і його ідентифікатор мають бути унікальними в межах усієї системи. Крім того, з обліковим записом користувача пов’язують його домашній каталог (home directory), у який він за замовчуванням може записувати дані. Після входу користувача у систему відбуваєтьмя перехід у його домашній каталог.

Користувачі об’єднуються в групи. Кожна група характерізується іменем та інтифікатором (gid).

Команда id дозволяє дізнатися|упізнати,взнати,пізнати| ідентифікатор поточного користувача і групи, в які він входить:

$id

uid=501(mitchell) gid=501 (mitchell) groups=501 (mitchelll), 503 (csl)

У першій частині|частці| вихідних даних вказано, що ідентифікатор користувача рівний 501. У дужках приведено відповідне цьому ідентифікатору ім'я користувача. Як випливає з результатів роботи команди, користувач mitchell входить до двох груп: з|із| номером 501 (mitchell) і з|із| номером 503 (csl).

З|із| кожним процесом пов'язані ідентифікатори користувача і групи. Коли користувач викликає|спричиняє| програму, запускається процес, ідентифікатори якого співпадають|збігаються| з|із| ідентифікаторами цього користувача.Коли ми говоримо, що користувач виконує операцію, то насправді вважається|внаслідок,унаслідок|, що операцію виконує процес з|із| ідентифікатором відповідного користувача. Коли процес робить|чинить| системний виклик, ядро перевіряє ідентифікатори процесу і визначає, чи має процес право доступу до запрошуваних У|в,біля| кожного файлу є лише один користувач-власник і одна група-власник. При створенні|створінні| файлу за ним закріплюються ідентифікатори користувача і групи того процесу, в якому відбувається|походить| ця операція.

Загалом процес виконують із правами того користувача, який запустив відповідний виконуваний файл (винятки з цього розлянемо пізніше).

Для доступу до ідентифікатора користувача поточного процесу використовується системний виклик getuid(), до ідентифікатора основної групи цього користувачач – getgid().

#include<unistd.h>

printf(“uid=%d, gid=%d\n”,getuid(), getgid());

Суперкористувач root

Користувач із uid, що дорівнює нулю (звичайно його називають root) має в UNIX особливий статус – він може виконувати в системі будь-які дії без обмежень. Такого користувача також називають суперкористувачем. Усі інші – звичайні користувачі.

Наявність єдиного суперкористувача вважають головною слабкістю системи безпеки UNIX, оскільки компрометація єдиного пароля root негайно призводить до того, що зловмисник отримує повний контроль над системою. Крім цього, процеси під час виконання не можуть бути обмежені якоюсь частиною прав суперкористувача. Фактично, процес, якому потрібна лише невелика частина таких прав, змушений виконуватися під керуванням root із повним контролем над системою.