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

Slides:



Advertisements
Podobne prezentacje
Nowoczesne systemy plików
Advertisements

Wirtualizacja zasobów w systemach operacyjnych
Mechanizmy pracy równoległej
ROZDZIAŁ 12: Systemy wejścia-wyjścia
SYSTEMY OPERACYJNE WSTĘP
Sieci komputerowe Usługi sieciowe Piotr Górczyński 27/09/2002.
Wprowadzenie do języka skryptowego PHP
Kamil Smitkiewicz Bezpieczeństwo w PHP.
System operacyjny MS-DOS
1 Linux jako system wielozadaniowy i wielodostępny.
Microsoft Professional Developer Days 2004
Uwierzytelnianie i autoryzacja dostępu do portali
MS Access 2000 Tworzenie bazy danych Piotr Górczyński 2005.
Internet Communication Engine
Inżynieria oprogramowania Lecture XXX JavaTM – część IV: IO
System plików UNIX i sposób ich reprezentacji przez i-węzły
Systemy plików UNIX Krzysztof Ratkowski Mateusz Wosiński.
Wykład nr 3: Struktura systemu operacyjnego
Systemy operacyjne.
Podstawowe komendy UNIXA
Język ANSI C Operacje we/wy
Enteprise Java Beans Emil Wcisło.
10. PROSTE MECHANIZMY KOORDYNACJI DOSTĘPNE W JĘZYKU C W systemie Unix użytkownikowi (nie będącemu administratorem) nie wolno wykonywać bezpośrednio żadnych.
9. KOORDYNACJA PROCESÓW WSPÓŁBIEŻNYCH PRZY UŻYCIU INTERPRETATORA
Systemów Operacyjnych
1 Podstawy informatyki H. P. Janecki- 2006_ Systemy Operacyjne W6.
Każdy użytkownik sieci powinien zdawać sobie sprawę z odpowiedzialności jaką ponosi za dostęp do zasobów sieci. Używanie sieci jest przywilejem, a nie.
Procesy odrębne –Unikatowy PID ( ) –Zmienne –Zbiory deskryptorów plików –Przestrzeń stosu (lokalne zmienne, wywołania funkcji) –Środowisko –Licznik.
Konfiguracja polcenie SUDO
Bezpieczeństwo baz danych
SAMBA Linux.
Podstawy programowania II Wykład 2: Biblioteka stdio.h Zachodniopomorska Szkoła Biznesu.
DMS TimeFrame Software. Co to jest DMS? System zarządzania dokumentami Składowanie Specyfikowanie Indeksowanie Kontrola zawartości Kontrola dostępu Kontrola.
Interpretatory poleceń - powłoki systemu
Linux - polecenia.
Wielozadaniowowść systemu operacyjnego Linux
Systemy operacyjne.
Budowa systemu komputerowego
JAK ZROBIĆ STRONE WWW PIERWSZA STRONA W INTERNECIE
Etapy pracy biosu.
Podstawowe usługi systemów operacyjnych
System plików systemu linux
Systemy wejścia i wyjścia Michał Wrona. Co to jest system wejścia i wyjścia? Pobierania informacji ze źródeł danych, zdolnych przesyłać sekwencje bajtów,
M i k r o j ą d r o D e f i n i c j a. M i k r o j ą d r o to rodzaj jądra systemu operacyjnego, które zawiera tylko najbardziej niezbędne elementy, takie.
Polecenia systemowe dos, winodws, linux
Sieciowe systemy operacyjne - UNIX
Linux w sieci Konfigurowanie interfejsu sieciowego.
Konsola odzyskiwania.
Systemy zarządzania treścią Wykład 5
Etapy uruchamiania systemu Pliki konfiguracyjne
Bezpieczeństwo aplikacji w systemie Tizen
Systemy operacyjne (wiosna 2014)
Narzędzia klienta usługi archiwizacji Warsztaty „Usługa powszechnej archiwizacji” Michał Białoskórski, CI TASK Bartłomiej Balcerek, WCSS.
Skalowanie aplikacji JPA na przykładzie Oracle TopLink Grid
System plików.
FileGuards czyli implementacja operacji na plikach przez u ż ytkownika
Microsoft Disk Operating System
1. Logowanie z usługą Active Directory. a) logowanie do domeny Windows 2003 Server odbywa się znacznie szybciej niż w poprzednich wersjach. b) nie ma odwołania.
WSPM - Wirtualny System Plików Multimedialnych Igor BOKUN, Stanisław STRELNIK, Krzysztof ZIELIŃSKI Katedra Informatyki Akademia Górniczo-Hutnicza.
Struktura systemu operacyjnego
Wykład 3 Prowadzący: dr Paweł Drozda. Użytkownik bazy danych – osoba lub aplikacja, mająca dostęp do części danych zgromadzonych w bazie Uprawnienia –
ASP.NET Dostęp do bazy danych z poziomu kodu Elżbieta Mrówka-Matejewska.
Maciej Romanowski. Wirusy komputerowe to programy tworzone specjalnie do zakłócania pracy komputera, rejestrowania, uszkadzania lub rozprzestrzeniania.
Strumienie, Wczytywanie, Zapisywanie, Operacje na plikach
Linux ssh.
Sieci komputerowe Usługi sieciowe 27/09/2002.
Microsoft Disk Operating System
Aplikacje i usługi internetowe
Zapis prezentacji:

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

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

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

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

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!

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

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.

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 (?)

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.

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

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 !

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

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 Read 1K no read-ahead Write 1K Średnie czasy dla open (ms) Bez strażnika Strażnik żywy Strażnik martwy Absolutna nazwa Nazwa relatywna Średnie czasy dla read(strażnik) vs read(pipe) (ms) Dane z cacheuplik 1K, pipe K, strażnik

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)

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.

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 !

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.

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)

TRON – podsumowanie Prosty, dobry i efektyny !!! without full test TRON rights capab capab capab Forktest Filetest Average in microseconds over tries

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.

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ść

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

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

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

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