Xii. Защита и безопасност на ос



страница2/5
Дата01.09.2016
Размер0.62 Mb.
#8028
ТипГлава
1   2   3   4   5

UNIX


Защитата на UNIX основно е концентрирана около файловата система. Три полета за защита са свързани с потребител, група и други (в i-възела на вески файл - вж. гл. X. Всяко поле има 3 бита: r, w, x. Доменът в UNIX e свързан с потребителя. Превключването на домените съответства на временна промяна на идентификацията на потребителя. Домен на процес се дефинира от идентификаторите на потребителя и на групата му - uid и gid. Давайки комбинация (uid, gid) e възможно да се направи пълен списък на всички обекти (файлове - обикновени, специални, справочници), които са достъпни и какъв е достъпът - четене, запис или изпълнение. Два процеса с еднакви (uid, gid) имат еднакъв достъп до еднакви обекти. Процеси с различии (uid, gid) ще имат достъп до друго множество от файлове, въпреки че може да има значително припокриване в много случаи.

Всеки процес в UNIX има две фази - потребителска и системна. Когато процес изпълнява системно извикване, той се превключва в системна фаза. В системната фаза се изпълняват функциите на ядрото и тук процесът има достъп до обекти, различии от тези в потребителската фаза. Например ядрото има достъп до всички страници в паметта, до целия диск и до други защитени ресурси. Така системата извършва превключване на домен.

Когато процес изпълнява ехес над двоичен файл с установен бит setuid или setgid (установи идентификатор на потребител или група при изпълнение), той изисква нови ефективни uid или gid. С различии комбинации (uid, gid) процесът има различно множество от файлове и достъпни операции. Изпълнение на програма с setuid или setgid e също превключване на домени, съответстващо на временната промяна на идентификацията на потребителя.

Деленето на процесите в UNIX на две фази идва от много по-мощен механизъм за превключване на домени, използван в Multics. В тази .система апаратурата не поддържа само 2 домена (потребител и ядро) за процес, а много повече.



MULTICS

Схемата за защита е съсредоточена около файловата система и пръс-теновидна структура. Възможностите за защита, свързани с файловата система, са описани в т. 10.6.2. Накратко, списък на достьп (име на потребител и типове достъп), както полета за собственик и универсален достьп, са свързани с всеки файл.





Домените за защита са йерархично организирани в пръстеновидна структура (фиг. 12.8). Всеки пръстен отговаря на единичен домен. Апаратурата поддържа до 64 домена за процес. Процесът може да се състои от процедури, всяка изпълнявана в някакъв домен. Процедурите могат да бъдат свързвани динамично към процеса по време на изпълнение.

Нека di и dj са кои да са два доменни пръстена. Ако i > j, тогава di e подмножество на dj. Това означава, че процес изпълняван в домен dj има повече привилегии, отколкото процес, изпълняван в di. Най-много привилегии има процес, изпълняван в d0. Ако има само два пръстена, схемата е еквивалентна на супервайзор/потребител начин на изпълнение, където супервайзорен режим отговаря на d0 и потребителски - на di.

Multics има сегментирано адресно пространство - всeки сегмент е файл. Всеки сегмент е свързан с един от пръстените. Дескрипторът на сегмента има елемент, идентифициращ номер на пръстен. Има още три бита за достьп: четене, запис и изпълнение. Съединението между сегментите и пръстените е политическо решение, коего няма да се разглежда тук. С всeки процес е свързан брояч „текущ номер на пръстен", идентифициращ пръстена, в който процесът текущо се изпълнява. Когато процес се изпълнява в пръстен i, той не може да достигне сегмент, свързан с пръстен j, jТой обаче може да се обръща към сегмент, свързан с пръстен k, k >=i. Типът на достьп е ограничен в съответствие с битове за достьп, свързани със сегмента.

Превключване на домени насгьпва, когато процес пресича от един пръстен в друг, извиквайки процедура в друг пръстен. Очевидно е, че това пресичане трябва да се управлява, в противен случай процес може да стартира изпълнение в пръстен 0 и никаква защита няма да има. За да се позволи контролирано превключване на домените, полето на пръстена в дескриптора на сегмента се модифицира да включва:

- Скоба на достъп. Двойка цели – b1 и b2, така че b1<=b2.



- Граница. Цяло b3, такова че b3 > b2.

- Списък на входове. Входните точки, в които сегментите могат да бъдат извиквани.

Ако изпълняван в пръстен i процес извика процедура (сегмент) със скоби на достьп (b1,b2), тогава извикването е разрешено, ако b1<=i<=b2 и текущият номер на пръстена на процеса остава i. В противен случай, настъпва изключителна ситуация и обръщане към ОС, която се обработва така:

- Ако i, извикването е разрешено да се осъществи, тьй като има трансфер към пръстен (домен) с по-ниски привилегии. Обаче, ако са изпратени параметри, които сочат сегменти в по-нисък пръстен (т.е. сегменти, които не са достъпни на извикващата процедура), тогава тези сегменти трябва да се изкопират в облает, която е достьпна на извикващата процедура.

- Ако i>b2, тогава извикването е разрешено, само ако границата b3 е по-малка или равна на i, и извикването е към една от входните точки в списъка на входовете.Тази схема разрешава процеси с ограничени права на достъп да извикват процедури в по-ниски пръстени с повече права на достъп, но само чрез грижливо контролиран начин.

Главният недостатьк на пръстеновидната (йерархичната) структура е, че тя не позволява да се приложи принципът „трябва да знае". В частност, ако един обект трябва да бъде достьпен в домен dj, но не и в домен di, тогава трябва idi, е достьпен и в dj..


Каталог: files -> tu files
tu files -> Увод в компютърната графика
tu files -> Електрически апарати
tu files -> Средства за описание на синтаксиса
tu files -> Stratofortress
tu files -> Начало Решаване на проблеми
tu files -> Писане на скриптове за bash шел : версия 2
tu files -> 6Технологии на компютърната графика 1Модели на изображението
tu files -> Z=f(x), където x- входни данни; z
tu files -> Body name библиотека global Matrix imports (достъп по име) … var m[N, N] := … end decl., proc … resource f final code imports node, Matrix end name var x: node node; if x … Matrix m[3,4] :=: … end


Сподели с приятели:
1   2   3   4   5




©obuch.info 2024
отнасят до администрацията

    Начална страница