Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Watchdogs / Guardians czyli operacje na plikach kontrolowane przez u ż ytkownika

Podobne prezentacje


Prezentacja na temat: "Watchdogs / Guardians czyli operacje na plikach kontrolowane przez u ż ytkownika"— Zapis prezentacji:

1 Watchdogs / Guardians czyli operacje na plikach kontrolowane przez u ż ytkownika Rafal@Wijata.com

2 Watchdog (powtórka) Watchdog to demon w trybie użytkownika Implementacja wybranych wywołań systemowych na i-węźle. Jeśli i-węzeł jest katalogiem, to także na całym katalogu. Korzysta z funkcji systemowych, ale to jego wyniki są zwracane do użytkownika ACL, kompresja, biff, [dir|file]view, date, logowanie Kanały komunikatów jako interfejs

3 Ostrzezenie ! Proszę nie pytać o prędkość rozwiązania ! Będą jakieś wyniki... Prędkość rozwiązania nie jest najistotniejsza. Główne cele to: Użyteczność Bezpieczeństwo Możliwości

4 Pomysł Jest bardzo stary (1988r.) Brian Bershad & Brian Pinkerton Watchdogs – Extending the UNIX FileSystem Pierwowzór, na którym będę się opierał pisząc swoją pracę Podobno jest nawet gdzieś implementacja dla 4.3BSD

5 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). Rozwiązanie transparentne dla programów!

6 Strażnik – jak ? Komunikacja nadal za pomocą jądra systemu Jeśli plik jest pilnowany, to watchdog jest proszony o wykonanie operacji w imieniu jądra. Odpowiedź również przechodzi przez jądro. Tak uzyskujemy transparencję dla klientów Kernel User processes Requests Open, read etc... FS interface FS implementation File 1 File 2 Watchdog

7 Strażnik – komunikaty Żądanie od procesu Przekierowanie do strażnika = komunikat 1. Wykonanie operacji (może korzystać z usług jądra, nie ma bezpośredniego dostępu do systemu plików) 2. Zakazanie operacji = kod błędu 3. Zanotować operację, i poprosić jądro o wykonanie w standardowy sposób Odpowiedź do OS = komunikat Jeden strażnik może pilnować wiele plików. Proces wysyłający żądanie nie wie czy plik jest pilnowany.

8 Strażnik – implementacja Nowa funkcja systemowa wd_link(char *file, char *watchdog) Mechanizm komunikacji proces-jądro Implementacja takiego mechanizmu ? Wykorzystanie netlinka ? Nowy typ plików – wmc ? Kolejna funkcja createwmc() Nowy typ deskryptora pliku DTYPE_WDCHANNEL Zarządca strażników (?)

9 Strażnik – wmc Komunikat zawiera: typ, id_sesji, wiadomość Uwaga dla operacji read/write Strażnik może mieć ograniczony bufor, może odczytać mniej bajtów niż żądano ! W jądrze dwie dodatkowe tablice Tablica sesji Tablica otwartych wmc.

10 Strażnik – wmc Struktura Proces Strażnik systemowa tablica otwartych plików WMC STRZEŻONY PLIK systemowa tablica sesji SESJA systemowa tablica WMC STRUKTURA WMC Komunikaty

11 Strażnik – Zarządca Rola jądra – minimalna Znajdowanie WMC na podstawie nazwy strażnika Pamiętamy numery i-node i rdev strażnika. Rola zarządcy – uruchamiać i zabijać. Wiadomość do jadra – IAmChief Jądro w przypadku braku WMC wysyła żądanie do zarządcy, ten uruchamia właściwego strażnika. Może nie zabijać często używanych strażników Strażników można łatwo debugować Zupełnie jak normalne programy !

12 Strażnik – Aplikacje Wdacl – listy dostępu Wdcompact – kompresja w locie Wdbiff – reagujący na zmiany pliku Wdview – rożne zawartości dla różnych użytkowników (również katalogu) Wddate – aktualna data z pliku podmiana funkcji systemowych na pliki Wdvfs – wirtualny system plików

13 Strażnik – Wydajność Średnie czasy dla read/write na dużych plikach (ms) Bez strażnika Strażnik deffered Strażnik Not deffered Strażnik z cachem Read 1K read-ahead 5.0645.5725.3482.880 Read 1K no read-ahead 6.87210.2726.8722.880 Write 1K8.0928.1688.3042.916 Średnie czasy dla open (ms) Bez strażnika Strażnik żywy Strażnik martwy Absolutna nazwa 3.0709.591108.0 Nazwa relatywna 1.39821.356117.0 Średnie czasy dla read(strażnik) vs read(pipe) (ms) Dane z cacheuplik 1K, pipe2.7726.051 1K, strażnik2.8805.348

14 Strażnik – Główne pomysły zmiany Przeniesienie zarządcy (lub części) do jądra przyspieszy przypadek, gdy strażnik martwy brak możliwości manipulowania regułami zabijania strażników. Brak funkcji createwmc() jako systemowej. Strażnicy używają stdin i stdout do komunikacji. Zamiast tablic hashe lub drzewa (?) Pamięć dzielona między procesami zarządcy i klienta, lub remapowanie pamięci (buforów na operacje r/w) (?) Przeniesienie całości do jądra ?! (moduły)

15 Inny pomysł - TRON Tylko prawa dostępu ! Oparty na zasadzie domen wykonywania się programu Dodatkowe prawa dostępu dla domeny. Prawa są przyznawane dla procesu, nie pliku lub użytkownika !. Cele Obrona przed trojanami, wirusami, pomyłkami, suidami, powrotami z chroota itp. http://www.cs.washington.edu\homes\speed\papers\tron

16 TRON – prawa dostępu init = pełne prawa dostępu zwykłe prawa UNIXowe (również użytkownik po zalogowaniu) Prawa do plików maja typy read, write exec, del, chmod. Dla katalogów dodatkowo create i link. Pełne prawa oznaczają wszystkie prawa do /, czyli rwedmcl Prawa są nadawane do obiektów nazwanych np.: /bin/bash(ale /bin/sh nie jest tym objęty) Najpierw są sprawdzane prawa dostępu domeny, potem zwykłe UNIXowe. Obowiązują wszystkie procesy !

17 TRON – działanie Jądro Dodatkowa struktura dla domen wykonywania. Proces Dodatkowe dowiązanie do domeny w jakiej jest uruchomiony Fork nie zmienia domeny, dziecko jest w tej samej. Tron_fork, w razie potrzeby tworzy nową domenę. Dlaczego nie set_domain/create_domain ??? Przestrzeganie praw Funkcje sprawdzające prawa dostępu są otoczone kodem TRONu. W razie próby złamania praw jest wołana funkcja porażki.

18 TRON – nadawanie praw Funkcje systemowe tron_grant i tron_revoke Nasze prawa możemy przekazać komuś innemu, trzeba je również odwołać – nie dzieje się to automatycznie. Funkcja tron_get_cap_list Zmiany w jądrze zatem niewielkie ! Polecenia Tron, tron_loan Przykłady.plan Tron –p / -p all ~ftp(jakiekolwiek prawa tylko w katalogu ~ftp) Tron –p rw ~/Mailbox –c pine(pine tylko do poczty)

19 TRON – podsumowanie Prosty, dobry i efektyny !!! without full 15 50 80 test TRON rights capab capab capab ----- ------- ------ ----- ----- ----- Forktest 3388 3438 3625 3699 3719 Filetest 33726 33648 33730 33786 33717 Average in microseconds over 10000 tries

20 Modify-on-Access File System Kolejne podejście – modyfikacja funkcji systemowych w locie. Transformacje danych (strumieni) Rejestracja nowych funkcji w systemie Funkcje te działają tak jak pipey, np. read() Można transformować wszystkie file_operations Jest to nowy system plików, ale np. ext2 można zamountować jako MonAFS. http://www.cse.nd.edu\~ssr\papers\asplos97

21 MonA FS - VFS VFS na pliku.tar.gz ? Dokładnie tak ja w mc, tylko ze funkcje gunzip i untar ładowane do jądra jako moduły. Chronienie /etc/passwd Tak samo, potrzebna tylko kolejna funkcja. I tak dalej – takie same możliwości jak dla strażników. Sprawa uprzywilejowanego kodu Bezpieczeństwo i czasochłonność

22 MonA FS jak Stuktura tansformacji Umiejscowienie przed pulą buforów

23 MonA FS - interfejs Ograniczenia: Transformacje nie są zapamiętywane permanentnie. Operacje nie są uprzywilejowane fd = open(``empty_heap'', O_RDWR); /* Open empty ``heap'' file */ ioctl(fd, PUSH_INPUT, ``extract_max_heap'') /* Push transformations */ ioctl(fd, PUSH_OUTPUT, ``insert_heap'') Linki transformacji – nowość w systemie plików Tym razem permanentne lnx raw_heap heap -i extract_max_heap -o insert_heap

24 MonA FS - wyniki Open() + ioctl()s

25 MonA FS - wyniki Read() Identyczne transformacje w aplikacji są wolniejsze !


Pobierz ppt "Watchdogs / Guardians czyli operacje na plikach kontrolowane przez u ż ytkownika"

Podobne prezentacje


Reklamy Google