• Nie Znaleziono Wyników

Kontrola dostępu do pliku

6. SYSTEMY PLIKÓW

6.4. Kontrola dostępu do pliku

6.4.1. Organizacja kontroli dostępu w systemie UNIX

W systemie operacyjnym UNIX prawa dostępu do pliku lub katalogu są określone dla trzech rodzajów użytkowników:

 właściciela pliku (identyfikator UID – ang. User Identifier),

 członków grupy, do której należy właściciel (GID – ang. Group Identifier),

 pozostałych użytkowników systemu.

Biorąc pod uwagę, że w systemie występują trzy rodzaje uprawnień: r (odczyt), w (zapis) oraz x (wykonanie), uprawnienia dostępu do pliku (katalogu) zostają zapisane na 9 bitach.

Z każdym procesem UNIX są związane dwa identyfikatory: użytkownika, dla którego został utworzony dany proces, oraz grupy, do której należy dany użytkownik. Identyfikatory te noszą następujące nazwy: RUID (ang. Real UID) – rzeczywisty identyfikator użytkownika, oraz RGID (ang. Real GID) –

rzeczywisty identyfikator grupy użytkownika. Podczas sprawdzania uprawnień dostępu do pliku nie są jednak brane pod uwagę RUID oraz RGID, lecz tzw. uprawnienia efektywne – EUID oraz EGID. W momencie tworzenia procesu uprawnienia efektywne są identyczne jak uprawnienia rzeczywiste (rys. 6.24).

Podczas otwarcia pliku przez proces system operacyjny porównuje EUID oraz EGID z UID oraz GID otwartego pliku. Określenie uprawnień procesu do wykonywania operacji na pliku następuje na podstawie następującego algorytmu:

 jeżeli EUID = UID to proces posiada uprawnienia właściciela pliku,

 jeżeli EGID = GID to proces posiada uprawnienia grupy właściciela pliku,

 jeżeli EUID ≠ UID i EGID ≠ GID to proces posiada uprawnienia dla pozostałych użytkowników. EUID EGID Proces Użytkownik Grupa UID GID R W X R X R Pozostali Grupa Plik Właściciel

Rys. 6.24. Kontrola praw dostępu do pliku w systemie UNIX

Jednak w sytuacji, gdy dany proces wykonuje wywołanie systemowe exec, w procesie rozpoczyna się realizacja nowego programu pobranego z określonego pliku. Jeśli dla nowo wczytanego pliku są ustawione dwa znaczniki SUID (ang. Set UID) oraz SGID (ang. Set GID) (bity te są uzupełnieniem 9 bitów określających uprawnienia dostępu do pliku), pozwalające na zmianę identyfikatorów użytkownika i grupy podczas wykonywania tego programu, to uprawnienia efektywne EUID oraz EGID zostają zmienione na uprawnienia nowo wczytanego pliku. Omówioną sytuację

przedstawiono na rys. 6.25. Na początkowym etapie proces A posiada RUID równy EUID oraz RGID równy EGID (odpowiednio 31 i 47). Następnie w procesie wykonano funkcję exec powodującą załadowanie nowego programu pr.exe, dla którego UID = 51 i GID = 63. Ponieważ dla pliku pr.exe ustawione są znaczniki SUID = 1 oraz SGUID = 1, więc efektywne identyfikatory procesu A przyjmują wartości odpowiednio EUID = 51 oraz EGID = 63. Pozwala to na wykonanie operacji zapisu do pliku p1.txt.

RUID = 31 EUID = 31 GUID = 47 EUID = 47 RUID = 31 EUID = 51 GUID = 47 EUID = 63 UID=51 R W X GID=63 R X R X Pozostali Grupa Właściciel SUID = 1 SGID = 1 UID=56 R W GID=63 R R Pozostali Grupa Właściciel Proces A Proces A Wykonanie pr. exe Plik pr. exe Zapis do pliku p1.txt Plik p1.txt W

Rys. 6.25. Zmiana efektywnych identyfikatorów

6.4.2. Organizacja kontroli dostępu w systemie Windows NT

Kontrola uprawnień dostępu do obiektów dowolnego typu w systemie Windows odbywa się za pomocą monitora bezpieczeństwa (ang. Security Reference Monitor), wykonywanego w trybie uprzywilejowanym. Cechą charakterystyczną systemu bezpieczeństwa jest znaczna liczba wbudowanych (predefiniowanych) podmiotów dostępu – tak poszczególnych użytkowników (Administrator, System, Guest), jak i grup (Users, Administrators, Account Operators, Server Operators, Everyone itd.). Poszczególni użytkownicy oraz grupy posiadają przydzielone określone uprawnienia, co w istotny sposób ułatwia pracę administratorowi. Podczas dodawania nowego użytkownika administrator musi jedynie podjąć decyzję, do której grupy (lub grup) go

dołączyć. Oczywiście administrator może tworzyć nowe grupy użytkowników, a także dodawać nowe uprawnienia do istniejących grup, jednak w bardzo wielu przypadkach istniejące grupy są w pełni wystarczające.

Windows NT wspiera następujące trzy klasy operacji dostępu, różniące się typem podmiotów oraz obiektów biorących w nich udział:

 zezwolenia (ang. permissions) – zbiór operacji, które mogą być określone dla wszystkich podmiotów w stosunku do obiektu dowolnego typu (plików, katalogów, drukarek, sekcji pamięci itp.). Zezwolenia odpowiadają prawom dostępu do plików i katalogów w systemie UNIX,

 prawa (ang. user rights) – są określane dla grupy w celu umożliwienia wykonywania niektórych operacji systemowych, takich jak ustawianie zegara systemowego, archiwizacja plików, wyłączenie komputera itp. W takich operacjach występuje szczególny obiekt dostępu, jakim jest cały system operacyjny. To prawa, a nie zezwolenia odróżniają jedną grupę użytkowników od drugiej,

 możliwości użytkowników (ang. user abilities) są określane dla poszczególnych osób korzystających z programu i umożliwiają formowanie środowiska pracy, jak np.: zmiana zawartości menu głównego programów, możliwość korzystania z punktu Menu Run itp. Prawa oraz zezwolenia przydzielone danej grupie są nadane wszystkim członkom tej grupy, co pozwala administratorowi traktować ich jednakowo. Podczas przyłączania się do systemu użytkownik otrzymuje tzw. żeton dostępu (ang. access token), zawierający identyfikator użytkownika oraz identyfikatory wszystkich grup, do których należy, listę zarządzania dostępem (ang. Access Control List – ACL), zawierającą zbiór zezwoleń dla danego użytkownika, a także zbiór praw na wykonywanie określonych operacji systemowych.

W systemie NTFS administrator ma możliwość zarządzania dostępem użytkowników do poszczególnych katalogów oraz plików. Zezwolenia w Windows NT można zaliczyć do jednej z dwu grup: zezwoleń indywidualnych oraz standardowych. Zezwolenia indywidualne odnoszą się do operacji elementarnych na katalogach i plikach, natomiast zezwolenia standardowe stanowią zbiory odpowiednich zezwoleń indywidualnych. W tabeli 6.2 przedstawiono sześć zezwoleń indywidualnych (operacji elementarnych) mających znaczenie dla plików i katalogów.

Tabela 6.2

ZEZWOLENIE DLA KATALOGU DLA PLIKU

Read (R) Odczyt nazw plików i

katalogów wchodzących w skład danego katalogu, a także atrybutów oraz właściciela katalogu.

Odczyt danych,

atrybutów, właściciela pliku.

Write (W) Dodawanie plików i podkatalogów do katalogu, zmiana atrybutów katalogu, odczyt właściciela. Odczyt właściciela, zmiana atrybutów pliku, zmiana oraz dopisanie danych do pliku.

Execute (X) Odczyt atrybutów

katalogu, dokonywanie zmian w podkatalogach wchodzących do danego katalogu, odczyt właściciela.

Odczyt atrybutów pliku, właściciela. Wykonanie pliku, jeśli zawiera kod programu.

Delete (D) Usunięcie katalogu. Usunięcie pliku. Change Permission (P) Zmiana zezwoleń dla

katalogu.

Zmiana zezwoleń dla pliku.

Take Ownership (O) Zmiana właściciela katalogu.

Zmiana właściciela pliku.

Dla plików przewidziano cztery zezwolenia standardowe: No Access, Read, Change oraz Full Control, grupujące następujące zezwolenia indywidualne (tabela 6.3).

Tabela 6.3

ZEZWOLENIA STANDARDOWE ZEZWOLENIA INDYWIDUALNE

No Access -

Read R, X

Change R, W, X, D

Full Control R, W, X, D, P, O

Zezwolenie Full Control różni się od zezwolenia Change tym, że daje możliwość zmiany zezwoleń (P) oraz zmiany właściciela (O).

Dla katalogów w Windows NT określono siedem zezwoleń standardowych: No Access, List, Read, Add, Add&Read, Change oraz Full Control. W tablicy 6.4 zestawiono zbiory zezwoleń indywidualnych przypisanych poszczególnym zezwoleniom standardowym w odniesieniu do katalogów, a także informację o tym, w jaki sposób zezwolenia standardowe są przekształcane na zezwolenia dla poszczególnych plików wchodzących w skład katalogu, w przypadku gdy pliki dziedziczą zezwolenia dla katalogów.

Tabela 6.4. ZEZWOLENIA STANDARDOWE ZEZWOLENIA INDYWIDUALNE DLA KATALOGÓW ZEZWOLENIA INDYWIDUALNE DLA PLIKÓW PRZY DZIEDZICZENIU No Access - - List R, X -

Read R, X R, X

Add W, X -

Add&Read R, W, X R, X

Change R, W, X, D R, W, X, D

Full Control Wszystkie Wszystkie

W przypadku gdy w katalogu ustawiony jest znacznik dziedziczenia zezwoleń, podczas tworzenia plik otrzymuje zezwolenia od katalogu, w którym został stworzony.