Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

FileGuards czyli implementacja operacji na plikach przez u ż ytkownika

Podobne prezentacje


Prezentacja na temat: "FileGuards czyli implementacja operacji na plikach przez u ż ytkownika"— Zapis prezentacji:

1 FileGuards czyli implementacja operacji na plikach przez u ż ytkownika

2 Strażnik - wprowadzenie Tradycyjne systemy plików – obsługa w jądrze OS Nikłe (jeśli w ogóle) możliwości rozszerzenia funkcjonalności i zachowań plików. Strażnik – wyprowadzenie obsługi plików poza jądro OS Nieuprzywilejowane programy mogą obsługiwać pliki (lub katalogi) Więcej kosztują tylko podmienione funkcje na metryczkach (przełączenia kontekstu, kopiowanie, szeregowanie, opóźnienia w czytaniu z dysku, itp). Rozwiązanie transparentne dla programów!

3 Strażnik – jak ? Dodatkowa funkcja systemowa fglink. Funkcje rejestracji strażników [un]register_fgfunc Parametry = nazwa + file_operations W strukturze file dodatkowa file_operations Funkcja open() podmienia f_ops jeśli plik pilnowany. Tak uzyskujemy transparencję dla klientów sys_open User process Request Open() If (guarded & module_registered) { remember orig f_ops; f_ops = our_f_ops; }; Requests Read(), Write(), etc. Calls our wrappers !

4 Strażnik – właściwości Minimalna modyfikacja jądra Tylko 16 nowych/zmodyfikowanych linii kodu ! Na razie całość ma 2000 linii. Włączanie w konfiguracji jądra. Automatyczne ładowanie modułów Flaga fg_allow (/proc/fs)

5 Strażnik – akcje Co może podmieniona funkcja ? Wykonać operację i zwrócić wynik. Zwrócić błąd. Wykonać jakąś czynność, wywołać oryginalną funkcję z jądra, zmodyfikować wynik. Poprosić jądro o wykonanie funkcji jak zwykle. [ Jeśli brak funkcji, jądro wykonuje standardowy kod ]

6 Strażnik – moduł użytkownika Osobne struktury (działa jako moduł) Sam rejestruje procedury obsługi w jądrze w imieniu procesów użytkownika Zajmuje się wymianą danych między jądrem i procesami

7 Strażnik – komunikacja z procesami Komunikacja za pomocą urządzeń /dev/fguX Restrykcyjny protokół = bezpieczeństwo ? Komunikacja: żądanie – odpowiedź. Jądro nie przyjmuje żądań – tylko odpowiedzi. Ścisłe komunikaty { magic, cmd, nr, sid, pid, datalen, data } Dane również maja strukturę zależną od funkcji. Kolejki komunikatów: do wysłania i do odebrania

8 Strażnik – proces Odczytaj MINOR z /dev/fgu0 Zarejestruj nazwę i obsługiwane funkcje poprzez /dev/fguMINOR Zamknij /dev/fgu0 While (true) { odczytaj komunikat sprawdź typ komunikatu, wykonaj odpowiednie akcje wygeneruj komunikat odpowiedzi i wyślij do jądra } Cała komunikacja odbywa się przez urządzenie /dev/fguMINOR, Jądro nie zaakceptuje danych od innego procesu niż ten, który otworzył urządzenie.

9 Strażnik – moduł Proces Strażnik systemowa tablica otwartych plików /dev/fguX STRZEŻONY PLIK systemowa tablica sesji Struktura FGU_DATA Komunikaty Wygeneruj żądanie

10 Strażnik – moduł Proces Strażnik systemowa tablica otwartych plików /dev/fguX STRZEŻONY PLIK systemowa tablica sesji Struktura FGU_DATA Komunikaty Odczytaj odpowiedź

11 Strażnik – czego brak ? Podmiany inode_operations, a przynajmniej permission() W module użytkownika nie ma jak zaimplementować niektórych funkcji (mmap). readv/writev – ale to nie jest brak !

12 Strażnik – Wydajność CPU = Hz Przykładowo: 170 = 0.29 microsek, 426 = 0.74 microsek Open() in kernel_space Bez strażnika Strażnik bez funkcjiStrażnik z funkcją pustą Nazwa relatywna 125/ (440)/ (488)/ Nazwa absolutna 198/ (460)/ (499)/

13 Strażnik – Wydajność 170 = 0.29 microsek, = 33 microsek Open() in user_space Bez strażnika bez funkcjifunkcja pusta funkcja z sesją Nazwa absolutna

14 Strażnik – Wydajność Read() – czytanie daty kerneluser

15 Strażnik – Wydajność Read() – czytanie crypt nonekerneluser Max 4K (285) (313) (835) 36900

16 Strażnik – Dalsze plany Rozwijanie projektu Utrzymywanie patchy Może nawiązanie kontaktu z ludźmi od MonaFS Obrona pracy


Pobierz ppt "FileGuards czyli implementacja operacji na plikach przez u ż ytkownika"

Podobne prezentacje


Reklamy Google