Wykład 2 – filozofia działania oraz podstawy obsługi systemów
Transkrypt
Wykład 2 – filozofia działania oraz podstawy obsługi systemów
Wykład 2 – filozofia działania oraz podstawy obsługi systemów unixowych na przykładzie GNU/Linux ➔ przegląd systemów unixowych, licencje oprogramowania, (GPL,BSD), porównanie “filozofii” działania ➔ dystrybucje GNU/Linuxa ➔ struktura katalogów ➔ polecenia systemowe ➔ jądro systemu (ang. kernel), obsługa urządzeń, kompilacja ➔ konfiguracja środowiska sieciowego (netstat, ifconfig, ping, etc) ➔ zarządzanie prawami do uruchamiania programów administratorskich (sudo) (c) mgr inż. Adam Mencwal, Katedra Informatyki Stosowanej licencje oprogramowania – BSD (Berkeley Software Distribution ) ● ● BSD – pochodna Unixa rozwijana od lat 70-tych w Uniwersytecie Kalifornijskim w Berkeley Bardziej liberalna niż GPL (wolność modyfikacji i dystrybuowania kodu ale również możliwość „zamknięcia” kodu, (warunek: informacja o autorach) 1969 UNIX PDP7 1975 BSD 1 1980 GNU 1985 ● preferowana licencja (i system operacyjny) dużych firm: Sun – Solaris, Mac OS X – Apple, Juniper OS 1990 Free BSD 1996 ● ciekawostka: Pionerski system obsługujacy protokół IP Solaris Net BSD GNU/Linux Open BSD (c) mgr inż. Adam Mencwal, Katedra Informatyki Stosowanej licencje oprogramowania – GPL (GNU Public Licence) najbardziej “wolna” , tj. gwarantująca wolnosci: 0- uruchamiania; 1- analizowania i dostosowywania do własnych potrzeb 2- kopiowania (dystrybucji) 3- udoskonalania i publikowania poprawek ● najpopularniejsza licencja wolnodostępnego oprogramowania (dystrybucji Red Hat Linux 7, 55.30% było udostępnione na licencji GPL ) Prace nad v3 : nacisk na DRM (Digital Restrictions Management) i patenty na oprogramowanie Zasada „copyleft” Krytyka: licencja „wirusowa” ,zaraża wszelkie pochodne prace ● Ciekawostka: Microsoft Windows Services for UNIX na GPL przez Microsoft ● (c) mgr inż. Adam Mencwal, Katedra Informatyki Stosowanej Dystrybucje GNU/Linuxa ● ● ● ● Dystrybucja - zestaw programówdziałających pod systemem GNU/Linux rozpowszechnianych łącznie i dający po zainstalowaniu gotowy do użycia system. (wikipedia.pl) oparte o “rdzeń” GNU, różniące się interfejsem graficznym, sposobem obsługi, ideologia, wsparciem technicznym, cyklem aktualizacji, itp. programy (jak i też pojedyncze biblioteki i całe podsystemy) najczęściej dystrybuowane w postaci binarnej (tzw. pakietów) i zarządzane przez managera pakietów pilnującego zależności najbardziej znane: Debian,Fedora Core, Gentoo, Knoppix, Linspire, Mandriva (dawniej Mandrake), PLD, Red Hat, Slackware, SUSE, Ubuntu (lista wszystkich na www.distrowatch.com) (c) mgr inż. Adam Mencwal, Katedra Informatyki Stosowanej struktura katalogów systemu GNU/Linux /bin/ /boot/ /dev/ /etc/ /home/ /lib/ /mnt/ /proc/ /sbin/ /tmp/ /var/ /usr/ <= podstawowe polecenia systemowe <= pliki jąder ładowane przy uruchamianiu systemu <= pliki specjalne jako interfejs do obsługi urządzeń <= globalne pliki konfiguracyjne <= katalogi domowe użytkowników <= biblioteki systemowe <= podmontowane napędy <= pseudosystem plików jako interfejs do ustawien jadra <= uslugi systemowe <= katalog plików tymczasowych <= dodatkowe dane (biblioteki, skrypty, itp) programow <= dodatkowe programy (c) mgr inż. Adam Mencwal, Katedra Informatyki Stosowanej podstawowe polecenia i narzędzia systemowe (unixowe) ● zarządzanie systemem i użytkownikami df, du <= raport o zajętości dysku/katalogu fuser <= identyfikacja procesów używających podane zasoby uname <= informacje o systemie i kernelu users,who <= raport o aktualnie zalogowanych użytkownikach last <= raport o ostatnio zalogowanych użytkownikach env <= przegląd zmiennych systemowych adduser,useradd,deluser,userdel <= zarządzanie użytkownikami modprobe, rmmod, lsmod <= operacje na tzw. modułach, odp.: załadowanie/ usunięcie z pamięci, listing ● zarządzanie procesami chroot kill/killall/pkill nice ps, top watch <= umieszczanie procesu w środowisku izolowanym <= zakończenie procesu po PIDzie/nazwie/atrybutach <= modyfikacja priorytetu wykonywania procesu <= listing uruchomionych procesów/ z odświeżaniem <= podgląd na bieżąco działającego procesu (c) mgr inż. Adam Mencwal, Katedra Informatyki Stosowanej podstawowe polecenia i narzędzia systemowe c.d. ● zarządzanie plikami i systemem plików chmod <= zmiana uprawnień plików lub katalogów chown <= zmiana właściciela pliku cp, mv, rm, shred ,dd <= odpowiednio: kopiowanie, przenoszenie, usuwanie, bezpieczne usuwanie plików, kopiowanie bloków danych ln <= tworzenie dowiązania między dwoma plikami ls <= listing plików w katalogu mkdir <= tworzenie katalogów pwd <= wypisanie bieżącego katalogu mknod <= tworzenie węzłów specjalnych (dostępu do urządzenia) touch <= zmiana znacznika czasowego (ang. timestamp) pliku ● przetwarzanie tekstu cat, tac cut grep head,tail sort uniq wc ● <= wyświetlenie pliku/wypisanie liniami wstecz <= wyświetlenie fragmentów tekstu <= wyświetlenie linii tekstu zawierających dane wyrażenie <= wyświetlenie poczatku/końca tekstu <= sortowanie linii tekstu, <= wyświetlenie tylko niepowtarzających się linii tekstu <= zliczenie słów/bajtów/linii w tekście pełna lista programów unixowych: http://en.wikipedia.org/wiki/List_of_Unix_programs porównanie poleceń systemowych na różnych systemach unixowych: http://bhami.com/rosetta.html (c) mgr inż. Adam Mencwal, Katedra Informatyki Stosowanej obsługa urządzeń, kompilacja jądra ● ● ● Dostępność kodów źródłowych umożliwia selekcję wybranych funkcjonalności jądra uruchomienie menu konfiguracyjnego: make menuconfig (w katalogu ze źrodłami kernela - najczęściej /usr/src/linux/ ) kompilacja: make bzImage modules modules_install (c) mgr inż. Adam Mencwal, Katedra Informatyki Stosowanej Podstawy konfiguracji środowiska sieciowego systemu GNU/Linux ● ● ● ● ● ● ● ● modprobe/lsmod/rmmod ifconfig route netstat ping, traceroute <= zarządzanie modułem karty sieciowej <= konfiguracja interfejsu sieciowego <= konfiguracja rutingu statycznego <= wyświetlanie otwartych gniazd UDP, połączeń TCP, tablicy rutingu,itp. <= testowanie drożności tras /etc/hosts <= /etc/resolv.conf <= /etc/hosts.{allow/deny} <= rozwiazywanie nazw(stat.) rozwiązywanie nazw(dyn.) restrykcje dostępu do usług (c) mgr inż. Adam Mencwal, Katedra Informatyki Stosowanej Ifconfig – zarządzanie interfejsami sieciowymi ifconfig <interfejs> <opcje> <interfejs> <opcje> up/down <IP> netmask <maska> arp [-]promisc mtu <N> hw ether <MAC> <= nazwa interfejsu (np. eth0, eth1, ppp0) mogą przyjmować przykładowe wartości: <= włączanie/wyłączanie interfejsu <= numer IP przydzielony interfejsowi <= ustawienie maski sieciowej <= włączanie/wyłączanie używania protokołu ARP <= włączanie/wyłączanie trybu promiscous (przechwytywanie wszystkich pakietów) <= ustawienie MTU <= ustawienie adresu MAC (c) mgr inż. Adam Mencwal, Katedra Informatyki Stosowanej route – zarządzanie trasami route [add/del] <cel> <opcje> <cel> <= docelowa sieć lub stacja <opcje> mogą przyjmować przykładowe wartości: gw GW netmask M dev IF mss M <= <= <= <= trasowanie pakietów poprzez bramkę GW ustawienie maski sieciowej M związanie trasy z podanym interfejsem ustawienie MSS na M (c) mgr inż. Adam Mencwal, Katedra Informatyki Stosowanej route – przykład wyjścia polecenia Destination Gateway Genmask Flags Metric Ref 213.25.2.139 0.0.0.0 255.255.255.255 UH 0 0 192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0.0.0.0 213.25.2.139 0.0.0.0 UG 0 0 U H G R D M A C ! - trasa jest zestawiona [up] cel jest stacją [host] użyj bramki [gateway] reinstancjuj trasę na trasowanie dynamiczne dynamicznie instalowana przez demona lub przekierowanie modyfikowana z demona trasowania lub przekierowania instalowana przez addrconf wpis bufora podręcznego [cache] trasa odrzucenia [reject] Use 0 0 0 Iface ppp0 eth0 ppp0 (c) mgr inż. Adam Mencwal, Katedra Informatyki Stosowanej netstat – przykład wyjścia polecenia (fragment) Active Internet connections (servers and established) Proto Recv-Q Send-Q tcp 0 0 tcp 0 0 tcp 0 0 tcp 0 22 tcp 131 0 tcp 0 0 udp 0 0 udp 0 0 Proto RefCnt Flags unix 16 [] unix 2 [ACC] Local Address Foreign Address State 0.0.0.0:8192 0.0.0.0:* LISTEN 0.0.0.0:5222 0.0.0.0:* LISTEN 192.168.0.5:80 0.0.0.0:* LISTEN 83.26.26.21:3613 82.21.16.92:105 FIN_WAIT2 83.26.26.21:4247 80.108.9.23:2456 TIME_WAIT 83.26.26.21:4662 83.24.14.20:3414 ESTABLISHED 0.0.0.0:4666 0.0.0.0:* 127.0.0.1:53 0.0.0.0:* Type State I-Node Path DGRAM 983 /dev/log STREAM LISTENING 11375257 /var/run/mysqld.sock (c) mgr inż. Adam Mencwal, Katedra Informatyki Stosowanej /etc/hosts & /etc/resolv.conf – przykłady ● /etc/hosts 127.0.0.1 192.168.1.10 192.168.1.13 146.82.138.7 209.237.226.90 ● localhost foo.mydomain.org foo bar.mydomain.org bar master.debian.org master www.opensource.org /etc/resolv.conf domain kis.p.lodz.pl search kis.p.lodz.pl lab.kis.p.lodz.pl nameserver 127.0.0.1 nameserver 194.204.159.1 (c) mgr inż. Adam Mencwal, Katedra Informatyki Stosowanej hosts.{allow/deny} hosts.allow i hosts.deny to pliki definiujące restrykcje dostępu do lokalnego komputera według kryteriów: ● wywoływany program (demon) ● adres źródłowy połączenia Kolejność wpisów ma znaczenie! (sprawdzanie w kolejności: hosts.allow => hosts.deny => przyjęcie połączenia) Można nastawić wykonanie komendy przy trafieniu! (c) mgr inż. Adam Mencwal, Katedra Informatyki Stosowanej hosts.{allow/deny} - przykłady /etc/hosts.allow in.tftpd: LOCAL, host.domain telnet: 10.0.0.8, .sub.domain (echo „uwaga!”) ALL : spawn /usr/bin/mail /etc/hosts.deny Polecenie wywoływane (demon) ALL: Źródło połączenia Uruchomienie programu (opcjonalne) (c) mgr inż. Adam Mencwal, Katedra Informatyki Stosowanej sudo – co to takiego? Sudo (ang. 'superuser do') to program stosowany w systemach operacyjnych GNU/Linux, Unix i podobnych, w celu umożliwienia użytkownikom uruchomienia aplikacji, normalnie zarezerwowanych dla administratora. (źródło: http://pl.wikipedia.org) (c) mgr inż. Adam Mencwal, Katedra Informatyki Stosowanej Sudo – jak to działa? Działanie sudo opiera się na zczytaniu pliku konfiguracyjnego /etc/sudoers w którym można definiować restrykcje wykonywania poleceń według: ● Komputera użytkownika ● Loginu użytkownika ● Uruchamianej komendy (c) mgr inż. Adam Mencwal, Katedra Informatyki Stosowanej Sudo – podstawowa składnia Podstawowa składnia /etc/sudoers: użytkownik komputer = (uruchom-jako-użytkownik) komenda Realny przykład /etc/sudoers: janek localhost = /usr/bin/ftp Z prawami administratora (!) piotrek server = (krzysiek) /usr/bin/last (c) mgr inż. Adam Mencwal, Katedra Informatyki Stosowanej Sudo - aliasy Sudo zezwala na używanie tzw. aliasów przydatnych przy ustalaniu wielu wartości poszczególnie dla pól: ● nazwy użytkownika: ● User_Alias PRACOWNICY = janek, krzysiek nazwy komputera: ● Host_Alias SERWERY= moj_serwer, 125.0.0.0/8 Komendy ● Cmnd_Alias DRUK = /usr/sbin/lpc, /usr/bin/lprm Nazwy użytkownika 'uruchom jako' ● Runas_Alias ADMINI = root , db-operator (c) mgr inż. Adam Mencwal, Katedra Informatyki Stosowanej Sudo – przykład aliasów Przykład zastosowania aliasów w /etc/sudoers: User_Alias FULLTIMERS = millert, mikef, dowdy Runas_Alias DB = oracle, sybase Host_Alias Cmnd_Alias CUNETS = 128.138.0.0/255.255.0.0 KILL = /usr/bin/kill FULLTIMERS CUNETS = (DB) KILL (c) mgr inż. Adam Mencwal, Katedra Informatyki Stosowanej Tematyka Wykładu 2 – podsumowanie ➔ przegląd systemów unixowych, licencje oprogramowania, (GPL,BSD), porównanie “filozofii” działania ➔ dystrybucje GNU/Linuxa ➔ struktura katalogów ➔ polecenia systemowe ➔ jądro systemu (ang. kernel), obsługa urządzeń, kompilacja ➔ konfiguracja środowiska sieciowego (netstat, ifconfig, ping, etc) ➔ zarządzanie prawami do uruchamiania programów administratorskich (sudo) (c) mgr inż. Adam Mencwal, Katedra Informatyki Stosowanej