|   |     | 
| (179 intermediate revisions not shown) | 
| Line 3: | Line 3: | 
|  |    |} |  |    |} | 
|  |  |  |  | 
|  | + | == Skrót zadań z Laboratorium 1 == | 
|  | + | === Zadanie 1 i 2 === | 
|  | + | Należy utworzyć nową maszynę wirtualną przy użyciu programu '''VirtualBox''' o nazwie '''Imie Nazwisko''' (3 GB RAM, 10 GB domyślnego rozmiaru dysku) oraz zainstalować system '''Linux Ubuntu 16.04 LTS 64-bit''' (obraz płyty iso znajduje się w: <code>/opt/sk/shared/iso/ubuntu-mate-16.04.1-desktop-amd64.iso</code>). Użytkownik: <code>student</code>, hasło: <code>student</code>. Partycja główna 8 GB, ext4. Partycja wymiany swap - pozostała pamięć. | 
|  | + |  | 
|  | + | === Zadanie 3 === | 
|  | + | Powtórzenie komend systemu Linux: | 
|  | + | * polecenia: <code>cd, wget, pwd, mkdir, cp, cat</code> | 
|  | + | * ścieżka względna oraz ścieżka absolutna | 
|  | + |  | 
|  | + | === Zadanie 4 === | 
|  | + | Zmienić domyślne ścieżki, z których pobierane są repozytoria oprogramowania w ten sposób, by dodać repozytorium Canonical Partners. | 
|  | + |  | 
|  | + | === Zadanie 5  === | 
|  | + | Należy zainstalować programy: | 
|  | + | * serwer ''ssh'' | 
|  | + | * edytor tekstu ''emacs'' | 
|  | + | Należy pamiętać o komendzie <code>sudo apt-get update</code>! | 
|  | + |  | 
|  | + | === Zadanie 6 === | 
|  | + | Dodaj użytkownika '''test''' i nadaj mu uprawnienia do wykonywania dowolnych poleceń. | 
|  | + |  | 
|  | + | === Zadanie 7 === | 
|  | + | Dodaj użytkownika '''user''', który za pomocą polecenia <code>sudo</code> może tylko zrestartować komputer. | 
|  |  |  |  | 
|  | == Wirtualizacja == |  | == Wirtualizacja == | 
| Line 23: | Line 46: | 
|  |  |  |  | 
|  | W celu stworzenia nowej maszyny wirtualnej postępujemy według poniższego schematu: |  | W celu stworzenia nowej maszyny wirtualnej postępujemy według poniższego schematu: | 
| - | # otwieramy aplikację VirtualBox (wybieramy ''Applications'' w górnym menu), | + | # otwieramy aplikację VirtualBox (wybieramy '''Applications''' -> '''Accessories''' -> '''VirtualBox''' w górnym menu), | 
|  | # włączamy kreator tworzenia nowej maszyny wirtualnej ('''Machine''' -> '''New''') |  | # włączamy kreator tworzenia nowej maszyny wirtualnej ('''Machine''' -> '''New''') | 
| - | # '''Name''': Państwa imię i nazwisko (np. ''Jan Kowalski'') | + | # '''Name''': ''ImieNazwisko'' | 
|  | # '''Type''': ''Linux'' |  | # '''Type''': ''Linux'' | 
| - | # '''Version''': ''Debian (64 bit)'' | + | # '''Version''': ''Ubuntu (64 bit)'' | 
| - | #: <code>'''Uwaga:''' w laboratorium będziemy używać systemu LinuxDebian w wersji o 64-bitowej architekturze procesora. Na 64-bitowym hoście można postawić system typu guest o architekturze zarówno 64 jak i 32 bity. Na 32-bitowym hoście możliwe jest postawienie tylko 32-bitowego systemu typu guest.</code> | + | #: <code>'''Uwaga:''' na laboratorium będziemy używać systemu [http://cdimage.ubuntu.com/ubuntu-mate/releases/18.04/release/ Linux Ubuntu 18.04 LTS] w wersji o 64-bitowej architekturze procesora ze śrdowiskiem graficznym MATE. Na 64-bitowym hoście można postawić system typu guest o architekturze zarówno 64 jak i 32 bity. Na 32-bitowym hoście możliwe jest postawienie tylko 32-bitowego systemu typu guest.</code> | 
|  | # '''Memory size''': ''3 GB'' (trzeba pamiętać, że pula pamięci RAM jest wspólna dla obu systemów - jeśli udostępnimy za dużo systemowi goszczącemu, możemy doprowadzić do problemów z działaniem hosta) |  | # '''Memory size''': ''3 GB'' (trzeba pamiętać, że pula pamięci RAM jest wspólna dla obu systemów - jeśli udostępnimy za dużo systemowi goszczącemu, możemy doprowadzić do problemów z działaniem hosta) | 
|  | # '''Hard disk''': wybieramy ''Create a virtual hard disk now'' |  | # '''Hard disk''': wybieramy ''Create a virtual hard disk now'' | 
| Line 34: | Line 57: | 
|  | ## '''Hard disk file type''': ''VDI (VirtualBox Disk Image)'' |  | ## '''Hard disk file type''': ''VDI (VirtualBox Disk Image)'' | 
|  | ## '''Storage on physical hard disk''': ''Dynamically allocated'' (rozmiar pliku na dysku hosta będzie się zwiększał w zależności od zajętości miejsca w systemie gościa) |  | ## '''Storage on physical hard disk''': ''Dynamically allocated'' (rozmiar pliku na dysku hosta będzie się zwiększał w zależności od zajętości miejsca w systemie gościa) | 
| - | ## '''File location and size''': w pierwszym polu wpisujemy nazwę dysku dla naszej maszyny (np. ''JanKowalski'', dysk zostanie utworzony w katalogu domowym), natomiast rozmiar ustawiamy trochę większy od domyślnego (np. 10 GB) | + | ## '''File location and size''': w pierwszym polu wpisujemy nazwę dysku dla naszej maszyny (''ImieNazwisko'', dysk zostanie utworzony w katalogu domowym), natomiast rozmiar ustawiamy trochę większy od domyślnego (np. 10 GB) | 
|  | + |   | 
|  | + | W tym momencie maszyna wirtualna jest już utworzona. Aby zainstalować system, musimy "włożyć" do wirtualnego napędu maszyny wirtualnej obraz płyty ISO z systemem operacyjnym. W tym celu należy zaznaczyć utworzoną maszynę oraz kliknąć przycisk '''Settings''' (lub kliknąć prawy przycisk myszy i również wybrać '''Settings'''). Następnie przechodzimy do '''Storage''' i tam klikamy na ikonę płyty (podpisaną '''Empty''') znajdującą się pod polem '''Controller: IDE'''. Następnie w menu wybieramy opcję '''Choose Virtual Optical Disk File'''. W okienku wyboru pliku wybieramy plik '''ubuntu-mate-16.04.1-desktop-amd64.iso''' z folderu <code>/opt/sk/shared/iso/</code>. | 
|  | + |   | 
|  | + | [[File:Open-cdrom.png|750px]] | 
|  | + |   | 
|  | + | W tym momencie mamy stworzoną maszynę wirtualną z włożoną "płytą" do wirtualnego napędu optycznego. Możemy zatem przejść do Zadania 2. | 
|  | + |   | 
|  | + | == Zadanie 2: instalacja systemu Linux Ubuntu == | 
|  | + | # Uruchamiamy maszynę wirtualną (zaznaczamy maszynę w oknie VirtualBox'a i klikamy '''Start''' w górnym menu) | 
|  | + | #: '''Uwaga:''' Jeżeli w trakcie instalacji pokaże się ekran jak poniżej, to wciskamy '''prawy Ctrl + F7''' (pojawi się konsola) i następnie '''prawy Ctrl + F1''' (powinien wrócić graficzny instalator) | 
|  | + | #: [[File:UbuntuProblem VB.png|685px]] | 
|  | + | # W oknie '''Welcome''' wybieramy język angielski i klimay '''Install Ubuntu MATE''' | 
|  | + | # W kolejnym oknie '''zaznaczamy''' ściąganie aktualizacji i '''nie zaznaczamy''' ściągania dodatkowego oprogramowania (kodeków MP3, itp.) | 
|  | + | # W kolejnym oknie z menu wyboru dotyczącym sposobu instalacji wybieramy '''Something else''' (sami przeprowadzimy partycjonowanie dysku) | 
|  | + | #: <code>'''Uwaga:''' polecane jest zapoznanie się z hierarchią systemu plików w systemach Linux (można o tym poczytać [http://osworld.pl/systemowa-hierarchia-plikow/ tutaj] lub [http://www.qkiz.pl/blog/ubuntu/newbie/5-dlaczego-ubuntu-podstawy-i-teoria.html?showall=1 tutaj])</code> | 
|  | + | # W kolejnym oknie zaznaczamy dysk <code>/dev/sda</code> oraz klikamy '''New Partition Table''' i następnie w oknie '''Continue''' - pojawi się <code>free space</code>. Tworzymy dwie partycje: | 
|  | + | ## '''Partycja głównego systemu plików''' | 
|  | + | ##* Rozmiar: ''8 GB'' | 
|  | + | ##* Typ: ''primary'' | 
|  | + | ##* Location: ''Beginning of this space'' | 
|  | + | ##* Use as: ''Ext4 journaling file system'' | 
|  | + | ##* Mount point: / | 
|  | + | ##: <code>'''Uwaga:''' W tej konfiguracji wszystkie dane będą na jednej partycji. W praktyce raczej przydziela się partycje na wybrane podkatalogi; przykładowo katalog /home często tworzony jest na oddzielnej partycji.</code> | 
|  | + | ## '''Partycja wymiany (swap)''' | 
|  | + | ##* Rozmiar: ''2 GB'' (pozostały rozmiar dysku) | 
|  | + | ##* Typ: ''logical'' | 
|  | + | ##* Location: ''Beginning of this space'' | 
|  | + | ##* Use as: ''swap area'' | 
|  | + | # Klikamy '''Install now''' i '''Continue''' | 
|  | + | # W opcji wyboru lokacji zostawiamy ''Warsaw'' i klikamy '''Continue''' | 
|  | + | # W ekranie wyboru klawiatury ustawiamy ''Polish'' - ''Polish'' i klikamy '''Continue''' | 
|  | + | # W ekranie '''Who are you?''' wpisujemy: | 
|  | + | #* '''Your name:''' ''student'' | 
|  | + | #* '''Your computer's name:''' ''student-XX'', gdzie ''XX'' to numer komputera | 
|  | + | #* '''Pick a userame:''' ''student'' | 
|  | + | #* '''Choose a password:''' ''student'' | 
|  | + | #* Zaznaczamy opcję, by wpisywać hasło przy logowaniu | 
|  | + | # Na koniec instalacji wyskoczy okienko '''Installaction complete''' - klikamy '''Restart Now''' | 
|  | + | # Pojawi się ekran proszący o wyjęcie płyty - sprawdzamy, czy obraz iso jest w wirtualnym napędzie ('''Settings''' -> '''Storage'''), jeśli tak - usuwamy i następnie restartujemy system | 
|  | + | # Po restarcie pojawi się okno logowania - logujemy się na użytkownika ''student'' i w zasadzie mamy działający system | 
|  | + | # Możemy zauważyć, że okienko maszyny wirtualnej ma dość niską rozdzielczość i nie można tego rozmiaru zmienić. W tym celu istalujemy tzw. VirtualBox Guest Additions: | 
|  | + | #* w terminalu ('''Applications''' -> '''System Tools''' -> '''MATE Terminal''') wpisujemy komendę: <p><pre>sudo apt-get install build-essential module-assistant</pre></p> | 
|  | + | #* i następnie:  <p><pre>sudo m-a prepare</pre></p> | 
|  | + | #* w menu uruchomionej maszyny wirtualnej wybieramy '''Devices''' -> '''Install Guest Additions CD image''' | 
|  | + | #* procedura ta powoduje najpierw pobranie z internetu a następnie włożenie do wirtualnego napędu optycznego "płyty" z odpowiednim oprogramowaniem - napęd z płytą pojawi się na pulpcie, w wyskakujących okienkach i terminalu klikamy tak, by się nam one zainstalowały (jeśli nie wyskoczą okienka, uruchamiamy płytę poprzez skrót na pulpicie) | 
|  | + | #* po pomyślnej instalacji w terminalu wpisujemy: <p><pre>sudo apt-get install virtualbox-guest-dkms</pre></p> | 
|  | + | #* na koniec restartujemy system | 
|  | + |   | 
|  | + | == Ustawienia sieci maszyny wirtualnej == | 
|  | + | Ważnym elementem konfiguracji maszyny wirtualnej jest jej podłączenie do sieci ('''Settings''' -> '''Network''' -> '''Adapter 1''' -> '''Attached to'''). Może ona działać w jednym z kilku możliwych trybów: | 
|  | + |   | 
|  | + | * '''Not attached''' - w tym trybie system operacyjny zainstalowany na maszynie wirtualnej widzi wirtualną kartę sieciową, ale nie ma połączenia na zewnątrz - tak jakby kabel Ethernet nie był podłączony do komputera. Zmiana statusu w trakcie pracy systemu na ten tryb odpowiada "mechanicznemu" wyjęciu kabla z wtyczki. | 
|  | + |   | 
|  | + | * '''NAT Network''' - ''Network Address Translation'', maszyna funkcjonuje w wirtualnej podsieci. Jest to analogiczna sytuacja, gdy ustawiamy router, który tworzy własną sieć lokalną i do niego podłączamy komputer (w tym przypadku takim routerem jest ''host''). Adres IP maszyny wirtualnej nie jest widoczny na zewnątrz. | 
|  | + |   | 
|  | + | * '''Bridged networking''' - maszyna wirtualna jest podpięta bezpośrednio do interfejsu sieciowego hosta i będzie widoczna w sieci jako kolejne urządzenie podłączone bezpośrednio do niej. Nasz system dostanie adres IP z puli sieci oraz będzie widoczny dla wszystkich innych komputerów w tej sieci tak jakby to było fizyczne urządzenie. | 
|  | + |   | 
|  | + | * '''Generic networking''' - bardzo rzadko uzywany tryb, w którym użytkownik sam wybiera sterownik karty sieciowej (nie bedziemy tego trybu używać) | 
|  | + |   | 
|  | + | == Zadanie 3: powtórzenie podstawowych komend systemu Linux == | 
|  | + | Na zajęciach z Sieci komputerowych będziemy pracować w systemie Linux z dużym wykorzystaniem terminala i powłoki <code>bash</code> i stopniowo poznawać bardziej zaawansowane komendy.  | 
|  | + |   | 
|  | + | Pierwszym zadaniem jest przypomnienie sobie podstawowych komend, znanych jeszcze z PTI: | 
|  | + | # Proszę pobrać tekst "Romeo i Julii" po angielsku: <p><pre>wget http://db.fizyka.pw.edu.pl/sk-2015/_downloads/pg1112.txt</pre></p> | 
|  | + | # Sprawdzić, w którym katalogu się znajdujemy (<code>pwd</code>) | 
|  | + | # Stworzyć w katalogu <code>/tmp</code> katalogi <code>foo</code> i <code>bar</code> (do tworzenia katalogów polecenie <code>mkdir</code>, do przejścia do katalogu polecenie <code>cd</code>) | 
|  | + | # Skopiować do katalogu <code>foo</code> plik z tekstem dramatu (<code>cp</code>) | 
|  | + | # Przejść do katalogu <code>bar</code> i wyświetlić zawartość dramatu za pomocą ''ścieżki absolutnej'' (<code>cat</code>) | 
|  | + | # Skopiować dramat z katalogu <code>foo</code> do <code>bar</code> za pomocą ''ścieżki względnej'' | 
|  | + |   | 
|  | + | == Podstawy administracji systemem Linux - instalacja oprogramowania == | 
|  | + | === Użytkownik administracyjny i komenda sudo === | 
|  | + | W systemie Linux istnieje bardzo mocno wymuszany podział na administratora komputera oraz zwykłego użytkownika (w nowszych wersjach systemu Windows został wprowadzony analogiczny mechanizm). Do wykonywania czynności administracyjnych stworzono użytkownika o nazwie '''root'''. W nowszych systemach (np. naszym Ubuntu) konto administracyjne jest domyślnie wyłączone (nie da się zalogować na takiego użytkownika), a jego uprawnienia nabywa zwykły użytkownik tymczasowo, z użyciem komendy <code>sudo</code>. | 
|  | + |   | 
|  | + | Komenda sudo pozwala aktualnemu użytkownikowi (o ile spełnia dodatkowo pewne wymagania) wykonywać zadania administracyjne. | 
|  | + |   | 
|  | + | Przykłady użycia:<br/> | 
|  | + |  sudo adduser ola # wykona polecenie adduser ola z uprawnieniami administratora<br/> | 
|  | + |  sudo -i # zalogouje sie do konsoli administratora<br/> | 
|  | + |  sudo -u ola -i # uruchomi konosole z zalogowanym uzytkownikiem ola | 
|  | + |   | 
|  | + | === Instalowanie oprogramowania === | 
|  | + | Wszystkie sytemy operacyjne Linux przychodzą z (mniej lub bardziej bogatym) zestawem oprogramowania oraz narzędziami do automatycznej instalacji programów. Instalowanie programów w systemach Linux przypomina bardziej znane ze smartfonów aplikacje typu ''Google Play'' czy ''Apple Store'', które pozwalają na automatyczną instalację zweryfikowanych aplikacji. W systemach Linux tego typu "sklepy" z (darmowym) nazywamy najczęściej '''repozytoriami''' a programy (jak i dodatkowe biblioteki) '''pakietami''' lub '''paczkami'''. Takie podejście jest znacznie bezpieczniejsze i pewniejsze niż uruchamianie losowych plików typu ''setup.exe'' ściągniętych z podejrzanych stron. | 
|  | + |   | 
|  | + | <code>'''Uwaga:''' Oczywiście w systemie Linux istnieje możliwość ściągnięcia i zainstalowania programu, który nie istnieje w repozytoriach. Z reguły ściągamy wtedy archiwum ze skompilowany programem, po czym uruchamiamy dołaczony do niego skrypt instalacyjny.</code> | 
|  | + |   | 
|  | + | W Ubuntu (i innych dystrybucjach pochodzących od systemu Debian) do zarządzania pakietami/paczkami służą narzędzia '''dpkg''' oraz '''apt'''. | 
|  | + |   | 
|  | + | <code>'''Uwaga:''' Niektóre dystrybucje Linuxa (np. nasze Ubuntu) posiadają całkiem użyteczne graficzne nakładki na system instalacji pakietów z repozytoriów (np. program '''Synaptic'''). Taki graficzny program to już w zasadzie to samo co “sklepy” w smartfonach.</code> | 
|  | + |   | 
|  | + | === Typy repozytoriów w Ubuntu === | 
|  | + | Żródła z których pobieramy oprogramowanie są opisane w pliku <code>/etc/apt/sources.list</code>. | 
|  | + |   | 
|  | + | Domyślne repozytorium Ubuntu podzielone jest na 4 części: | 
|  | + | * '''Main''' – aplikacje o otwartym kodzie źródłowym szczególnie ważne i potrzebne, wspierane przez developerów Ubuntu | 
|  | + | * '''Restricted''' – programy dodatkowe, wspierane przez Ubuntu, ale nieoparte na wolnej licencji | 
|  | + | *  '''Universe''' – niewspierane oprogramowanie Open Source | 
|  | + | *  '''Multiverse''' – niewspierane i niewolne oprogramowanie | 
|  | + |   | 
|  | + | Do tego pliku można dopisywać kolejne repozytoria będące poza kontrolą dostawcy. | 
|  | + |   | 
|  | + | === Przeszukiwanie pakietów === | 
|  | + | Po zmianie konfiguracji repozytoriów (tj. modyfikacji pliku <code>/etc/apt/sources.list</code>) nalezy pobrać informacje o pakietach z repozytorium. Służy do tego komenda | 
|  | + |   | 
|  | + |  sudo apt-get update | 
|  | + |   | 
|  | + | Komenda <code>sudo apt-get update</code> pobiera również informacje o nowych pakietach, które wydali twórcy Ubuntu i dobrze ją wykonać przed każdą czynnością dotyczącą pakietów. | 
|  | + |   | 
|  | + | Do aktualizacji pakietów służy komenda: | 
|  | + |   | 
|  | + |  sudo apt-get upgrade | 
|  | + | lub | 
|  | + |  sudo apt-get dist-upgrade | 
|  | + | (druga komenda nie tylko aktualizuje zainstalowane pakiety, ale również usuwa pakiety już niepotrzebne i usuwa niepotrzebne zależności między pakietami) | 
|  | + |   | 
|  | + | Do przeszukiwania repozytorium pakietów służy program <code>apt-cache</code>. By wyszukać pakiety, które mają w nazwie lub opisie ciąg znaków ''foo'', należy napisać polecenie: | 
|  | + |   | 
|  | + |  apt-cache search foo | 
|  | + |   | 
|  | + | By wyszukiwać tylko w nazwie pakietu należy wpisać: | 
|  | + |   | 
|  | + |  apt-cache search -n foo | 
|  | + |   | 
|  | + | == Zadanie 4:  dodawanie nowych repozytoriów == | 
|  | + | Należy zmodyfikować plik <code>/etc/apt/sources.list</code> w ten sposób, aby umożliwić korzystanie z oprogramowania Canonical Partners. W tym celu należy odkomentować linijkę: | 
|  | + |   | 
|  | + |  deb http://archive.canonical.com/ubuntu xenial partner | 
|  | + |   | 
|  | + | Należy pamiętać, że po każdej modyfikacji repozytoriów należy wykonać pownonie komendę <code>apt-get update</code>! | 
|  | + |   | 
|  | + | == Zadanie 5:  instalacja pakietów == | 
|  | + | Odnaleźć nazwę pakietu który dostarcza serwer ''ssh'', w tym celu proszę przeszukać paczki które w nazwie mają ''ssh'' a następnie za pomocą grep znaleźć paczki które w nazwie mają server: | 
|  | + |  apt-cache search ssh | grep server | 
|  | + |   | 
|  | + | Za pomocą <code>apt-get install</code> zainstalować program '''emacs''' oraz '''serwer ssh''' (<code>openssh-server</code>). | 
|  | + |   | 
|  | + | == Podstawy administracji systemem Linux - użytkownicy == | 
|  | + | === Dodawanie i usuwanie użytkowników === | 
|  | + | Do dodawania użytkownikow służy komenda <code>adduser</code>, a do ich kasowania <code>deluser</code>. | 
|  | + | <!-- | 
|  | + | Przy dodawaniu użytkowników można: | 
|  | + | * Ustawić domyślną powłokę dla użytkownika (na inną niż ''bash'', np. <code>/bin/sh</code>, albo <code>/bin/false</code>), | 
|  | + | * Ustawić położenie katalogu domowego, | 
|  | + | * Wyłączyć możliwość logowania hasłem, | 
|  | + | * Wyłączyć możliwość logowania w ogóle.--> | 
|  | + |   | 
|  | + | Wszystkie informacje o użytkowniku znajdują się w pliku <code>/etc/passwd</code>. | 
|  | + |   | 
|  | + | === Grupy użytkowników === | 
|  | + | Użytkownik może należy do jednej bądź wielu '''grup'''. Grupy ułatwiają kontrolę wielu użytkowników (łatwo przypisywać np. użytkownikom prawa dostępu poprzez przypisanie ich do grupy). | 
|  | + |   | 
|  | + | By dodać użytkownika do grupy można wykonać: | 
|  | + |   | 
|  | + |  sudo adduser username group | 
|  | + |   | 
|  | + | === Zarządzanie uprawnieniami <code>sudo</code> === | 
|  | + | Polecenie <code>sudo</code> ma większe możliwości, niż tylko nadanie uprawnień do wykonania dowolnej komendy. | 
|  | + |   | 
|  | + | Pozwala ono np. na: | 
|  | + | * umożliwienie użytkownikowi wykonania tylko kilku poleceń z uprawnieniami ''root'', | 
|  | + | * umożliwienie wykonania niektórych poleceń bez podania hasła. | 
|  | + |   | 
|  | + | Konfiguracja polecenia <code>sudo</code> znajduje się w pliku <code>/etc/sudoers</code>, jednak plik ten nie może być tak po prostu edytowany za pomocą zwykłego edytora tekstu - jeśli jego składnia będzie niepoprawna, to kolejne polecenia sudo nie będą mogły się wykonać! | 
|  | + |   | 
|  | + | Do edycji pliku <code>/etc/sudoers</code> służy '''tylko i wyłącznie''' polecenie <code>visudo</code>. | 
|  | + |   | 
|  | + | <code>'''Uwaga:''' Nie jest łatwo bezpiecznie skonfigurować sudo, przykładowo jeśli damy komuś dostęp do używania edytora vim z uprawnieniami root to, zasadniczo, będzie on mógł wykonywać dowolne operacje w systemie (ponieważ edytor vim sam z siebie pozwala na uruchomienie dowolnej komendy). Przykładowo: komenda '''sudo rm -rf /''' usunie nam cały system operacyjny i wszystkie pliki na dysku!</code> | 
|  | + |   | 
|  | + | == Zadanie 6: dodawanie uprawnień <code>sudo</code> użytkownikowi == | 
|  | + | Domyślna konfiguracja <code>sudo</code>, pozwala na wykonanie polecenia z uprawnieniami administratora każdemu użytkownikowi w grupie <code>sudo</code>. | 
|  | + |   | 
|  | + | Dodaj w systemie użytkownika '''test''' i nadaj mu uprawnienia do wykonywania dowolnych poleceń. | 
|  | + |   | 
|  | + | == Zadanie 7: dodawanie wybranych uprawnień <code>sudo</code> == | 
|  | + | Dodaj w systemie nowego użytkownika '''user''', który za pomocą polecenia <code>sudo</code> może tylko zrestartować komputer (czyli wykonać komendę <code>/sbin/reboot</code>). | 
|  | + |   | 
|  |  |  |  | 
| - | W tym momencie maszyna wirtualna jestjuż utworzona.Aby zainstalować system, musimy "włożyć" do wirtualnego napędu maszyny wirtualnej obraz płyty ISO z systemem operacyjnym.W tym celu należy zaznaczyć utworzoną maszynę oraz kliknąć przycisk '''Settings''' (lub kliknąć prawy przycisk myszy i również wybrać '''Settings''').Następnie przechodzimy do '''Storage''' i tam klikamy na ikonę płyty (podpisaną '''Empty''') znajdującą się pod polem '''Controller: IDE'''.
 | + | == Zapasowa maszyna wirtualna == | 
|  | + | Zapasowa maszyna wirtualna jest dostępna tutaj: [http://if.pw.edu.pl/~lgraczyk/SK2022/VM/SieciKomputerowe21.vdi link]. | 
Zmienić domyślne ścieżki, z których pobierane są repozytoria oprogramowania w ten sposób, by dodać repozytorium Canonical Partners.
Wirtualizacja - jest jednym ze sposobów wydajniejszego wykorzystania sprzętu komputerowego; w naszym przypadku zajmiemy się wirtualizacją systemu operacyjnego, czyli uruchomieniem dwóch systemów operacyjnych na jednym komputerze jednocześnie. 
W przypadku laboratorium z Sieci komputerowych tworzymy maszynę wirtualną po to, by Państwo mieli pełną kontrolę nad systemem operacyjnym. Przykładowo, ewentualne przypadkowe usunięcie plików systemowych w maszynie wirtualnej uniemożliwi pracę tylko systemowi guest, host zaś będzie pracował normalnie.
Istnieje wiele programów (narzędzi wirtualizacji), które umożliwiają wirtualizację systemu operacyjnego. W naszym przypadku wykorzystamy program VirtualBox firmy Oracle. Jest on już zainstalowany na komputerach w laboratorium.
W celu stworzenia nowej maszyny wirtualnej postępujemy według poniższego schematu:
W tym momencie maszyna wirtualna jest już utworzona. Aby zainstalować system, musimy "włożyć" do wirtualnego napędu maszyny wirtualnej obraz płyty ISO z systemem operacyjnym. W tym celu należy zaznaczyć utworzoną maszynę oraz kliknąć przycisk Settings (lub kliknąć prawy przycisk myszy i również wybrać Settings). Następnie przechodzimy do Storage i tam klikamy na ikonę płyty (podpisaną Empty) znajdującą się pod polem Controller: IDE. Następnie w menu wybieramy opcję Choose Virtual Optical Disk File. W okienku wyboru pliku wybieramy plik ubuntu-mate-16.04.1-desktop-amd64.iso z folderu /opt/sk/shared/iso/.
W tym momencie mamy stworzoną maszynę wirtualną z włożoną "płytą" do wirtualnego napędu optycznego. Możemy zatem przejść do Zadania 2.
Na zajęciach z Sieci komputerowych będziemy pracować w systemie Linux z dużym wykorzystaniem terminala i powłoki bash i stopniowo poznawać bardziej zaawansowane komendy. 
Pierwszym zadaniem jest przypomnienie sobie podstawowych komend, znanych jeszcze z PTI:
W systemie Linux istnieje bardzo mocno wymuszany podział na administratora komputera oraz zwykłego użytkownika (w nowszych wersjach systemu Windows został wprowadzony analogiczny mechanizm). Do wykonywania czynności administracyjnych stworzono użytkownika o nazwie root. W nowszych systemach (np. naszym Ubuntu) konto administracyjne jest domyślnie wyłączone (nie da się zalogować na takiego użytkownika), a jego uprawnienia nabywa zwykły użytkownik tymczasowo, z użyciem komendy sudo.
Komenda sudo pozwala aktualnemu użytkownikowi (o ile spełnia dodatkowo pewne wymagania) wykonywać zadania administracyjne.
Wszystkie sytemy operacyjne Linux przychodzą z (mniej lub bardziej bogatym) zestawem oprogramowania oraz narzędziami do automatycznej instalacji programów. Instalowanie programów w systemach Linux przypomina bardziej znane ze smartfonów aplikacje typu Google Play czy Apple Store, które pozwalają na automatyczną instalację zweryfikowanych aplikacji. W systemach Linux tego typu "sklepy" z (darmowym) nazywamy najczęściej repozytoriami a programy (jak i dodatkowe biblioteki) pakietami lub paczkami. Takie podejście jest znacznie bezpieczniejsze i pewniejsze niż uruchamianie losowych plików typu setup.exe ściągniętych z podejrzanych stron.
W Ubuntu (i innych dystrybucjach pochodzących od systemu Debian) do zarządzania pakietami/paczkami służą narzędzia dpkg oraz apt.
Do tego pliku można dopisywać kolejne repozytoria będące poza kontrolą dostawcy.
Po zmianie konfiguracji repozytoriów (tj. modyfikacji pliku /etc/apt/sources.list) nalezy pobrać informacje o pakietach z repozytorium. Służy do tego komenda
(druga komenda nie tylko aktualizuje zainstalowane pakiety, ale również usuwa pakiety już niepotrzebne i usuwa niepotrzebne zależności między pakietami)
Należy pamiętać, że po każdej modyfikacji repozytoriów należy wykonać pownonie komendę apt-get update!
Pozwala ono np. na: