Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Операцiйнi системи та середовища6.05.07(Антонов...doc
Скачиваний:
11
Добавлен:
04.05.2019
Размер:
801.79 Кб
Скачать

5.5 Права доступу ос unix

5.5.1 Поняття прав доступу користувача

Будь-яка Unix-подібна ОС, і зокрема FreeBSD, є система багатокористувацька, в ній передбачено механізм, який обмежує доступ користувачів до файлів та директорій. Природно, "доступ" означає не лише можливість читати чи змінювати вміст окремих файлів, але й можливість створювати файли (директорії), вилучати їх, запускати файли, якщо вони є виконувані, змінювати їхні назви, а також змінювати всі ті атрибути, що вони й визначають "право доступу".

Насамперед слід зазначити, що слушніше говорити не про "права користувача" стосовно певного файла, а про "права процесу" чи виконуваної програми. Якщо користувач і вносить певні зміни до файлів чи директорій, він це здійснює за допомогою певних програм (редакторів, "командерів", системних утиліт для копіювання, вилучання файлів тощо).

Не всі програми запускаються користувачами "вручну". Деякі з них (демони) запускаються при стартуванні системи. Інші можуть запускатися в певні моменти часу, наприклад за допомогою програми cron, чи викликатися в міру необхідності для обслуговування запитів, які надходять мережею (зазвичай їх запускає програма-"диспетчер" inetd).

Існує також низка програм, які для виконання певних допоміжних дій самі запускають інші програми, в цьому разі говорять, що процес-"батько" запустив процес-"нащадок". Зрозуміло, що цим програмам (процесам) слід обмежити доступ до файлів. У певних випадках є надто корисним, щоби програма, запущена користувачем, мала більше прав, аніж зазвичай має цей користувач. Приміром, звичайний користувач не може навіть читати файл, у якому "заховано" паролі всіх користувачів. Водночас треба, щоби будь-який користувач мав можливість змінювати власний пароль, не звертаючись до адміністратора, але для цього йому треба мати можливість записати дещо до файла паролів. Отже, програма, котра це здійснює (passwd), в момент виконання має мати права набагато більші, аніж користувач, котрий її запускає.

Отже:

  • кожен процес має ідентифікатор користувача (userID); зазвичай він збігається з usеrID того користувача, котрий запустив цей процес;

  • процеси, запущені автоматично, теж мають userID, начебто їх запустив реальний користувач; чий саме userID одержують ці програми, зазвичай визначається тими програмами, які стартують: програмою-завантажувачем, cron, inetd тощо; у найпростіших випадках програми-"нащадки" лише "успадковують" userID від програми-"батька", але деякі "батьки" можуть запускати програми з іншим userID, котрий не збігається з власним;

  • деякі програми в процесі виконання можуть змінювати свій userID і, відповідно, набувати прав, яких сам користувач не мав. Природно, для того, щоби програма могла це здійснити, адміністратор має "дозволити" їй таке поводження (докладніше про це буде сказано нижче). До речі, зміна usеrID здійснюється не лише коли потрібно "розширити" права програми, але й навпаки – "звузити" їх до прав певного конкретного користувача;

  • якщо процес може змінювати свій userID, то розрізнюють "реальний userID" та "ефективний userID" (є ще "збережений userID"). Реальний userID – це ідентифікатор користувача, котрий запустив процес (або userID процесу-"батька"), а ефективний – це новий userID, якого завдання одержало під час виконання;

  • права на файл (чи директорію) визначаються за "ефективним userID" процесом. У найпростішому випадку, коли userID не змінюється, "реальний" та "ефективний" usеrіD збігаються – й можна говорити лише про usеrID чи процес, навіть лише про права користувача (а не процесу) на файл.

Усі користувачі для кожного файла (чи директорії) поділяються на три категорії:

  • власник (чи хазяїн) цього файла;

  • група "особливо допущених" до цього файла;

  • вся решта.

Це означає, що можна встановити три різних "допуски" (набору прав доступу) для кожного файла чи директорії. Один такий набір визначатиме права користувача, котрий є власником файла; інший набір визначатиме права для користувачів, котрі входять до певної групи, але не є власниками, і, врешті, третій набір установлює права для всієї решти користувачів, котрі не входять до цієї групу "особливо допущених" і не є власниками файла. Отже, у кожного файла (директорії) є три атрибути, які зберігаються в заголовку файла і також регулюють доступ до нього. Зазвичай атрибутів у файлі є не три, а більш. До атрибутів можна віднести ім’я файла, його обсяг, час створення тощо.

До заголовка файла записується ідентифікатор користувача userID, який вважається за його власника. При цьому "хазяїном" може бути лише один певний користувач. Окрім того, як атрибут записується ідентифікатор групи (groupID), котрий і визначає ту групу "особливо допущених", про яку йшлося вище. Кожна така група (її назва, числовий ідентифікатор – groupID і склад) визначається адміністратором системи. Тобто "пересічний" користувач, навіть якщо він і є хазяїном файла, не може довільно скласти список "близьких друзів", яким він довіряє особливі права стосовно свого файла. Він може лише обрати придатну групу з наявних тільки якщо він сам входить у цю групу. В атрибутах файла є певний набір бітів чи "прапорців", який і зазначає – хто саме й що саме може чинити з цим файлом. Цей набір називається permissions, що можна перекласти як "допуски", чи "права на доступ".

При набиранні команди ls –l на моніторі висвітлюється:

-rw-r--r-- st1 wheel 4297 23мар 17:37 list_us

-rwxr-xr-x st1 wheel 1502 17мар 12:03 myProg

-rw-r--r-- st1 wheel 5354 12мар 23:51 tmp.dat

\_________/ \_______/ \________/ \_________/ \_______________/ \__________/

"права" власник група довжина дата, час ім’я файла

У другому стовпчику подано ім’я (login name) користувача – "хазяїна" цих файлів (у даному разі це – st1); у третьому стовпчику – назва групи, приписаної також до цих файлів (у даному разі – wheel); у першому стовпчику набір знаків типу "r" (читання), "w" (запис) та "-" (нічого) зазначає можливості для всіх трьох категорій користувачів. Слід зауважити, що в самому заголовку файла зберігаються не імена користувачів та груп, а їхні числові номери, а "права" насправді являють собою не ланцюжок літер, а набір бінарних бітів, просто команда ls зображує їх у більш узвичаєному вигляді [7, 8].