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)
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) preferowana licencja (i system operacyjny) dużych firm: Sun Solaris, Mac OS X Apple, Juniper OS ciekawostka: Pionerski system obsługujacy protokół IP 1969 UNIX PDP7 1975 BSD 1 1980 GNU 1985 1990 Solaris GNU/Linux Free BSD Net BSD 1996 Open BSD
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
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)
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
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
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
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/ ) obsługa urządzeń, kompilacja jądra kompilacja: make bzimage modules modules_install
Podstawy konfiguracji środowiska sieciowego systemu GNU/Linux modprobe/lsmod/rmmod <= zarządzanie modułem karty sieciowej ifconfig <= konfiguracja interfejsu sieciowego route <= konfiguracja rutingu statycznego netstat <= wyświetlanie otwartych gniazd UDP, połączeń TCP, tablicy rutingu,itp. ping, traceroute <= testowanie drożności tras /etc/hosts <= rozwiazywanie nazw(stat.) /etc/resolv.conf <= rozwiązywanie nazw(dyn.) /etc/hosts.{allow/deny} <= restrykcje dostępu do usług
Ifconfig zarządzanie interfejsami sieciowymi ifconfig <interfejs> <opcje> <interfejs> <= nazwa interfejsu (np. eth0, eth1, ppp0) <opcje> mogą przyjmować przykładowe wartości: up/down <= włączanie/wyłączanie interfejsu <IP> <= numer IP przydzielony interfejsowi netmask <maska> <= ustawienie maski sieciowej arp <= włączanie/wyłączanie używania protokołu ARP [-]promisc <= włączanie/wyłączanie trybu promiscous (przechwytywanie wszystkich pakietów) mtu <N> <= ustawienie MTU hw ether <MAC> <= ustawienie adresu MAC
route zarządzanie trasami route [add/del] <cel> <opcje> <cel> <opcje> gw GW netmask M dev IF mss M <= docelowa sieć lub stacja mogą przyjmować przykładowe wartości: <= trasowanie pakietów poprzez bramkę GW <= ustawienie maski sieciowej M <= związanie trasy z podanym interfejsem <= ustawienie MSS na M
route przykład wyjścia polecenia Destination Gateway Genmask Flags Metric Ref Use Iface 213.25.2.139 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0 192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 0.0.0.0 213.25.2.139 0.0.0.0 UG 0 0 0 ppp0 U - trasa jest zestawiona [up] H - cel jest stacją [host] G - użyj bramki [gateway] R - reinstancjuj trasę na trasowanie dynamiczne D - dynamicznie instalowana przez demona lub przekierowanie M - modyfikowana z demona trasowania lub przekierowania A - instalowana przez addrconf C - wpis bufora podręcznego [cache]! - trasa odrzucenia [reject]
netstat przykład wyjścia polecenia (fragment) Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:8192 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:5222 0.0.0.0:* LISTEN tcp 0 0 192.168.0.5:80 0.0.0.0:* LISTEN tcp 0 22 83.26.26.21:3613 82.21.16.92:105 FIN_WAIT2 tcp 131 0 83.26.26.21:4247 80.108.9.23:2456 TIME_WAIT tcp 0 0 83.26.26.21:4662 83.24.14.20:3414 ESTABLISHED udp 0 0 0.0.0.0:4666 0.0.0.0:* udp 0 0 127.0.0.1:53 0.0.0.0:* Proto RefCnt Flags Type State I-Node Path unix 16 [ ] DGRAM 983 /dev/log unix 2 [ACC] STREAM LISTENING 11375257 /var/run/mysqld.sock
/etc/hosts & /etc/resolv.conf przykłady /etc/hosts 127.0.0.1 localhost 192.168.1.10 foo.mydomain.org foo 192.168.1.13 bar.mydomain.org bar 146.82.138.7 master.debian.org master 209.237.226.90 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
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!
hosts.{allow/deny} - przykłady /etc/hosts.allow /etc/hosts.deny in.tftpd: LOCAL, host.domain telnet: 10.0.0.8,.sub.domain (echo uwaga! ) ALL : ALL: spawn /usr/bin/mail Polecenie wywoływane (demon) Źródło połączenia Uruchomienie programu (opcjonalne)
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)
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
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
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
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 CUNETS = 128.138.0.0/255.255.0.0 Cmnd_Alias KILL = /usr/bin/kill FULLTIMERS CUNETS = (DB) KILL
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)