System UNIX
System plików: Podobieństwa i różnice w budowie systemu plików systemów UNIX i MS DOS (oraz pochodnych). Warstwowa struktura systemu UNIX; rola jądra i powłoki.
System Linuks obsługuje wiele różnych systemów plików, ale podstawowym systemem jest ext2, ponieważ został on stworzony specjalnie dla Linuksa i jest bardzo wydajny.
Cechami charakterystycznymi dla tego systemu są: superblok, i-węzeł, blok danych, blok katalogu oraz blok pośredni. Superblok zawiera informacje o systemie jako całości, np. rozmiar. I-węzeł zawiera wszelkie informacje o pliku za wyjątkiem jego nazwy. Nazwa przechowywana jest w katalogu razem z numerem i-węzła. Wpis katalogu zawiera nazwę i liczbę i-węzłów plików. I-węzeł zawiera numery kilku bloków danych, które używane są do przechowywania pliku. Automatycznie alokowane miejsce pozwala przechowywać tylko kilka numerów, jednak w razie potrzeby zostaje dynamicznie alokowana dodatkowa przestrzeń. Bloki alokowane dynamicznie nazywają się bezpośrednimi - nazwa wskazuje, że w celu znalezienia numeru bloku danych należy znaleźć pierwszy blok pośredni.
System plików UNIX'a składa się z katalogów o strukturze drzewiastej montowanych na partycjach dyskowych. Do pracy systemu niezbędne są dwie partycje: główna / (korzeń struktury) i tzw. swap (pliki wymiany stanowiące pamięć wirtualną systemu). Standardowe katalogi to:
/bin - narzędzia systemowe
/boot - jądro, loader systemu, mapy pamięci
/dev - pliki urządzeń (dysków, napędów)
/home - katalogi użytkowników
/mnt - tymczasowo montowane systemy plików takie jak /mnt/cdrom
/opt - opcjonalnie zainstalowane oprogramowanie
/root - kartoteka domowa użytkownika specjalnego root
/sbin - standardowe pliki administracyjne systemu
/usr - dodatkowe oprogramowane systemowe i narzędzia administracyjne
/var - pliki dzienników i drukarek
/etc - pliki administracyjne i konfiguracyjne
RÓŻNICE MIĘDZY UNIXEMA A MSDOS:
W MSDOS w celu podania ścieżki pliku używamy znaku „\” natomiast w Unixie znaku”/”
W Unixie wielkość liter ma znaczenie np. Root i root to dwa inne katalogi
PODOBIEŃSTWA:
Podobne komendy np. cd, mkdir, rm itp.
Oba systemy posiadaja interpreter poleceń w Unixie jest nią powłoka a w MSDOS command.com
Cechy charakterystyczne sytemu UNIX:
wielodostępność - liczba użytkowników zależy głównie od mocy obliczeniowej
sprzętu,
wielozadaniowość (wieloprocesowość) - jednostkami aktywnymi w systemie są pracujące współbieżnie procesy,
hierarchiczny, drzewiasty system plików, z jednolitym potraktowaniem wszystkich typów plików,
wykonywanie operacji wej/wyj niezależnie od typu urządzenia zewnętrznego,
duża liczba programów narzędziowych, tj. kompilatorów języków programowania,
duża liczba programów usługowych,
przenaszalność oprogramowania dzięki zapisowi w C.
Budowa systemu Unix
System Unix ma budowę warstwową. Centralnym elementem systemu jest sprzęt komputerowy (hardware). Bezpośrednio ze sprzętem komunikuje się jądro systemu (kernel), które pośredniczy pomiędzy urządzeniami komputerowymi a programami. Nad jądrem znajduje się powłoka (shell). Dopiero w shellu możemy uruchamiać programy i skrypty. System Unix umożliwia wykorzystywanie różnych shelli, które różnią się możliwościami, ilością komend, składnią. Najpopularniejsze to standardowy Bourne, rozszerzony Korn, C shell o składni języka C oraz rozpowszechniany z Linuxem shell Bash.
Hardware - sprzęt komputerowy
Kernel - jądro systemu obsługujące:
sprzęt komputerowy (procesor, pamięć, urządzenia zewnętrzne)
procesy wykonywane w systemie (deamons)
hierarchiczny system plików (file system)
Shell - powłoka systemu pośrednicząca pomiędzy użytkownikiem i jądrem, interpretująca polecenia użytkownika:
ROLA JĄDRA I POWŁOKI:
W jądrze systemu implementuje się wszystkie funkcje, które muszą być traktowane w sposób uprzywilejowany. Jądro odpowiada m.in. za: obsługę przerwań, przydział procesora, operacje we/wy. Ponadto w jądrze systemu są implementowane mechanizmy, które tworzą wspomnianą już maszynę wirtualną.
Warstwa zewnętrzna obejmuje procesy użytkowników (można przyjąć, że są to po prostu programy) i moduły systemu operacyjnego nienależące do jądra systemu. Jednym z procesów warstwy zewnętrznej jest POWŁOKA (ang. shell). Powłoka jest jedyną widoczną częścią maszyny wirtualnej.
Model warstwowy systemu Unix
W modelu tym dzieli się system na 4 warstwy:
jądro,
biblioteki,
powłoka
programy.
Jądro
zawiera m.in. program szeregujący oraz sterowniki urządzeń
zarządza pamięcią operacyjną
w nowszych systemach sterowniki rzadziej występujących urządzeń dostepne są w postaci zewnętrznych modułów, które można wybiórczo załadować do jądra -- dzięki temu jego rozmiary są mniejsze
jadro ma bezpośredni dostęp do wszystkich zasobów komputera
Biblioteki
zawierają zestawy podprogramów (zwykle napisanych w języku C), wykonujących różne, często stosowane, operacje (mogą to być np. zestawy funkcji matematycznych, procedury, umożliwiające obsługę monitora czy też operacje na dysku)
biblioteki te są zwykle dołączane do programów na etapie ich konsolidacji (program, np. w języku C, przed uruchomieniem zostaje poddany kompilacji, a następnie konsolidacji)
taka statyczna konsolidacja powoduje, że dana biblioteka jest dołączana do każdego z korzystających z niej programów -- nawet wtedy, gdy uruchamiane są one jednocześnie w systemie; powoduje to znaczną zajętość pamięci operacyjnej
biblioteki współdzielone (ang. shared libraries) składają się z 2 części: małej, zawierającej jedynie odwołania do biblioteki; zasadniczej biblioteki, umieszczonej w innym miejscu na dysku, niż korzystający z niej program i wczytywanej do pamięci operacyjnej dopiero w chwili startu samego programu
biblioteki współdzielone umożliwiają wielu programom korzystanie ze znajdujących się w nich procedur, co wydatnie oszczędza pamięć
inną zaletą bibliotek współdzielonych jest możliwość wymiany starszej wersji biblioteki na nowszą, bez konieczności rekonsolidacji korzystających z niej programów (których może być bardzo dużo)
Powłoka
nazwa pochodzi stąd, że warstwa ta oddziela wewnętrzna część systemu operacyjnego od użytkownika
powłoka zawiera interpreter poleceń, który umożliwia komunikację z użytkownikiem (jest to odpowiednik programu command.com z DOS'a)
interpreter poleceń uruchamia polecenia systemu operacyjnego oraz programy użytkowe
Programy
procesy uruchamiane przez użytkownika
zarządzane przez program szeregujący jądra
moga być przerwane w dowolnym momencie, np. komendą kill
każdy ma przydzielony odpowiedni obszar pamięci i priorytet
jeśli proces użytkownika próbuje dostać sie do cudzego obszaru pamięci, zostaje przerwany, a system wyświetla komunikat:
segmentation fault
bieżąca zawartość pamięci procesu może zastać zapisana na dysku w pliku o nazwie core (nazwa od słów core dump, czyli zrzut pamięci)
analiza zawartości tego pliku może pomóc programiście w wykryciu przyczyny wystąpienia błędu
Powłoka: Filtry, potoki i trójniki. Ogólne cechy języka powłoki typu sh, struktury sterowania przebiegiem wykonywania poleceń. Skrypty powłoki, klasyfikacja zmiennych, reagowanie na błędy wykonania poleceń.
Potok jest plikiem specjalnym, służącym do komunikacji pomiędzy procesami. Komunikacja za pośrednictwem potoków polega na tym, że jeden proces zapisuje informacje do łącza podobnie jak do pliku, jest jednak usypiany, jeśli łącze jest pełne, a inny proces ją odczytuje podobnie jak z pliku lub jest usypiany, jeśli łącze jest puste.
Informacja jest odczytywana w tej samej kolejności, w jakiej została zapisana, a
po odczycie jest usuwana z potoku (nie może być odczytana ponownie), na łączu wykonujemy tylko operacje odczytu / zapisu, nie można przemieszczać wskaźnika bieżącej pozycji (nie można wykonywać funkcji fcntl )
Potoki nie mogą być identyfikowane przez nazwę: procesy żeby móc komunikować
się poprzez łącze muszą znać jego deskryptory (za pomocą potoku mogą się więc komunikować procesy z których jeden utworzył potok, a następnie utworzył pozostałe komunikujące się procesy, które w ten sposób otrzymają w tablicy otwartych plików deskryptory istniejącego łącza).
Potok jest identyfikowany przez dwa deskryptory: do odczytu i do zapisu.
Procesy: Rola i przykłady sygnałów w systemie UNIX. Wywoływanie sygnałów z poziomu powłoki. Zadania pierwszo- i drugoplanowe. Przegląd zarządzania procesami w systemach UNIX.
Sygnały są formą komunikacji między procesami w systemie Unix, służącą do obsługi asynchronicznych zdarzeń (tzn. mogących wystąpić w dowolnym czasie działania procesu). Gdy proces otrzymuje sygnał zazwyczaj znaczy to, że nastąpiło zdarzenie, które wymaga od niego natychmiastowej reakcji. Może to być np. zakończenie pracy procesu potomnego lub naciśnięcie przez użytkownika klawisza przerwania.
Mówimy, że sygnał został wygenerowany wtedy, gdy nastąpiło zdarzenie, którego następstwem jest pojawienie się sygnału. Sygnał jest dostarczany do procesu wtedy, gdy proces podejmuje akcję obsługi sygnału. W czasie pomiędzy wygenerowaniem a dostarczeniem, sygnał oczekuje na dostarczenie.
Sygnał może być wygenerowany przez przerwanie z klawiatury, błąd w procesie (w rodzaju złego odniesienia do pamięci) lub za pomocą pewnej liczby zdarzeń asynchronicznych (np. sygnały od czasomierzy lub sygnały sterujące zadaniem pochodzące z powłoki). Prawie każdy sygnał może być też wytworzony za pomocą funkcji systemowej kill.
Rodzaje sygnałów
SIGINT |
Jest to sygnał przerwania (interrupt). Generowany jest zwykle, kiedy użytkownik naciśnie klawisz przerwania na terminalu. |
SIGQUIT |
Sygnał generowany zazwyczaj, kiedy użytkownik naciśnie na terminalu klawisz zakończenia pracy. Sygnał SIGQUIT jest podobny do sygnału SIGINT, ale dodatkowo generuje obraz pamięci. |
SIGKILL |
Wysłanie tego sygnału jest jedynym pewnym sposobem zakończenia procesu, ponieważ proces odbierający ten sygnał nie może go ani zignorować, ani przechwycić. |
SIGTSTP |
Charakterystyczny dla wersji UNIX-a systemu 4.3BSD. Sygnał wysyłany do procesu po naciśnieciu klawisza zawieszenia (na ogół CRTL+Z) lub klawisza zawieszenia z opóźnieniem (CTRL+Y). Proces zawieszony (zatrzymany), można wznowić sygnałem SIGCONT. |
SIGILL |
Sygnał ten jest generowany po wystąpieniu wykrywanej sprzętowo sytuacji wyjątkowej, spowodowanej przez niewłaściwą implementację systemu. |
SIGSTOP |
Charakterystyczny dla wersji UNIX-a systemu 4.3BSD. Sygnał ten zatrzymuje proces. Podobnie jak sygnał SIGKILL nie może zostać zignorowany lub przechwycony. Działanie zatrzymanego procesu można wznowić sygnałem SIGCONT. |
Wykonywanie poleceń w tle:
& - określa wykonywanie polecenia w tle.
ps - wyświetla procesy, które wykonują się na terminalu
ps aux - wszystkie procesy wykonujące się w systemie
Bezpieczeństwo systemu UNIX: Zagrożenia systemu, przedmiot i sposoby ochrony. Zasady postępowania w przypadku stwierdzenia włamania do systemu komputerowego. Ochrona kont użytkowników, danych i oprogramowania, ochrona systemu plików, łączy teleinformatycznych i usług sieciowych.
Najbardziej niebezpieczne usługi to te umożliwiające zdalne logowanie na serwerze:
rsh, rexec, rcp, rlogin , telnet
Najlepszym rozwiązanie jest zastąpienie ich usługą SSH.
SSH jest programem umożliwiającym logowanie na serwerze zdalnym i w przeciwieństwie do programu telnet posiada mechanizm silnego uwierzytelniania oraz szyfrowania sesji na podstawie specjalnych kluczy.
Inne usługi, które warto wyłączyć to:
finger (udostępnia informacje o użytkownikach systemu)
tftp (umożliwia pobieranie plików bez autoryzacji)
smpt (zdalne zarządzanie serwerem)
systat, netstat (podają informacje o systemie i sieci)
echo, daytime, discard, chargen, talk, ntalk, printer (inne niebezpieczne narzędzia)
Inne reguły, które warto przestrzegać to:
ograniczenie możliwość uruchamiania skryptów CGI na serwerze (szczególnie na serwerach WWW)
ostrożne używanie ustawień SUID , SGID
należy jeśli to tylko możliwe korzystać z protokołu SSL, który jest protokołem bezpiecznej komunikacji i stanowi doskonałą alternatywę dla połączeń http
należy stworzyć podstawowe reguły filtrowania pakietów (firewall), co może stanowić doskonałą ochronę dla naszego systemu i całej sieci lokalnej
należy często aktualizować oprogramowanie na nowsze i bezpieczne wersje
Linux, podobnie jak pozostałe systemy UNIX używa dosyć archaicznej metody wyznaczania praw dostępu do plików (w tym katalogów, urządzeń itp.). Metoda ta niestety nie pozwala na łatwe i elastyczne zarządzanie dostępem do plików, choć przy uzyskaniu pewnej wprawy pozwala na wprowadzenie niemal dowolnej polityki dostępu do zasobów.
Prawa dostępu dzielą się na trzy kategorie:
odczytu "r" (ang. read)
zapisu "w" (ang. write)
wykonywania "x" (ang. execute)
Przez prawo odczytu rozumieć należy możliwość odczytania zawartości pliku (co w przypadku katalogu oznacza możliwość odczytania listy plików znajdujących się w tym katalogu).
Prawo zapisu pozwala na dokonanie modyfikacji pliku (w tym dopisanie, zmiana lub usunięcie zawartości pliku. Przy czym usunięcie zawartości pliku nie jest tożsame z fizycznym usunięciem pliku). Dla katalogów to prawo oznacza możliwość tworzenia nowych i usuwania istniejących plików w katalogu.Prawo wykonywania pliku pozwala na uruchomienie pliku wykonalnego, a w przypadku katalogu oznacza prawo dostępu do plików wewnątrz katalogu. Minimalne prawa wymagane do wykonania operacji na pliku/katalogu przedstawione są w poniższej tabeli:
UŻYTKOWNICY, PRAWA DOSTĘPU ITD.
newgrp grupa - zmiana grupy
chmod g+r jeden.doc - dodanie użytkownikom grupy do której należy plik jeden.doc
prawa do jego czytania (dołączanie praw):
u - użytkownik
o - pozostali użytkownicy systemu
- - odebranie danego uprawnienia
chmod u=rw jeden.doc - nadanie tobie wyłącznie czytanie i pisania do pliku jeden.doc (zastępowanie praw)
chmod u=rw /katalog - masz prawo do przeszukiwania katalogu jeżeli nie miałbyś tych praw możesz znaleźć tylko plik którego znasz nazwę (zastępowanie praw)
chmod 777 nazwa_pliku - następny sposób zastępowania praw, numeryczny 777 oznacza akurat przyznanie wszystkich praw wszystkim użytkownikom do danego pliku a 666 prawo do odczytu i zapisu pliku dla wszystkich użytkowników
PRAWA DOSTĘPU I ICH ODPOWIEDNIKI NUMERYCZNE:
--- 0
--x 1
-w- 2
-wx 3
r-- 4
r-x 5
rw- 6
rwx 7
System UNIX
6