May 19, 2024, Sunday, 139

SK Zadanie 1 remote

From Łukasz Graczykowski

(Difference between revisions)
Jump to: navigation, search
m (Zadanie 3: powtórzenie podstawowych komend systemu Linux)
m (Przeszukiwanie pakietów)
Line 160: Line 160:
=== Przeszukiwanie pakietów ===
=== 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
+
Po zmianie konfiguracji repozytoriów (tj. modyfikacji pliku <code>/etc/apt/sources.list</code>) nalezy pobrać informacje o pakietach z repozytorium. Do takiej aktualizacji pakietów komenda
  sudo apt-get update
  sudo apt-get update
Line 166: Line 166:
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.
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:
+
Do aktualizacji już zainstalowanych pakietów służy komenda:
  sudo apt-get upgrade
  sudo apt-get upgrade

Revision as of 08:55, 7 March 2024

Contents

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, 12 GB domyślnego rozmiaru dysku) oraz zainstalować system Linux Ubuntu 20.04 LTS 64-bit (obraz płyty iso należy ściągnąć ze strony Ubuntu MATE 20.04 lub z serwera Wydziału Fizyki link). Użytkownik: student, hasło: własne, do zapamiętania. Partycja główna 10 GB, ext4. Partycja wymiany swap - pozostała pamięć.

Zadanie 3

Powtórzenie komend systemu Linux:

  • polecenia: cd, wget, pwd, mkdir, cp, cat
  • ś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 sudo apt-get update!

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 sudo może tylko zrestartować komputer.

Wirtualizacja

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.

Wyróżniamy:

  • Host (lub “matka”) — system, w którym uruchomione są inne systemy operacyjne (poprzez odpowiednie oprogramowanie)
  • Guest (lub "gość") — system, który jest uruchomiony w oprogramowaniu symulującym komputer, które działa na hoście. Jeden host może mieć uruchomionych wiele systemów operacyjnych typu guest. Tego typu wirtualny kompuer nazywamy maszyną wirtualną.

Kiedy wirtualizacja jest przydatna?

  • Gdy pracujemy na Windows'ie a musimy uruchomić program napisany pod Linux'a w tym samym czasie
  • W dużych zespołach programistycznych - każdy projekt ma dedykowany szablon maszyn wirtualnych, który jest skonfigurowany pod potrzeby tego projektu. W ten sposób programista może pracować nad dwoma projektami, które wymagają różnych konfiguracju systemu operacyjnego.
  • Na potrzeby testowania i wdrażania aplikacji. Możemy testować działanie tej samej aplikacji na różnych konfiguracjach systemu operacyjnego (czy nawet na różnych systemach operacyjnych).
  • W celu sprawdzenia komunikacji między aplikacjami - każda maszyna wirtualna (każdy system guest) może otrzymać swój indywidualny adres IP w sieci i być widoczny dla hosta i innych komputerów jako rzeczywista maszyna.

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.

Zadanie 1: tworzenie maszyny wirtualnej

Istnieje wiele programów (narzędzi wirtualizacji), które umożliwiają wirtualizację systemu operacyjnego. W naszym przypadku wykorzystamy program VirtualBox firmy Oracle. Instrukcja została dostosowana do angielskiej wersji programu VirtualBox, w przypadku polskiej wersji językowej należy odnaleźć słowne odpowiedniki. Jeśli chodzi o instalowany system operacyjny będziemy również instalować wersję angielską - w przypadku problemów umożliwia to łatwiejsze odnalezienie odpowiedzi w internecie.

W celu stworzenia nowej maszyny wirtualnej postępujemy według poniższego schematu:

  1. instalujemy aplikację VirtualBox VirtualBox firmy Oracle.
  2. otwieramy aplikację VirtualBox
  3. włączamy kreator tworzenia nowej maszyny wirtualnej (Machine -> New)
  4. Name: ImieNazwisko
  5. Type: Linux
  6. Version: Ubuntu (64 bit)
    Uwaga: domyślnie będziemy używać systemu Linux Ubuntu 20.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. Jeśli wasz komputer nie umożliwia instalacji wersji 64 bitowej należy ściągnąć 32 bitowy odpowiednik. Nie wpłynie to na resztę zajęć.
  7. 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; dostosujcie więc wartości do własnej maszyny, pamiętając, by zostawić minimum 1 GB RAMu dla hosta!)
  8. Hard disk: wybieramy Create a virtual hard disk now
    Uwaga: dysk maszyny wirtualnej będzie widoczny tylko w systemie typu guest. Na maszynie typu host będzie to po prostu zwykły plik.
    1. Hard disk file type: VDI (VirtualBox Disk Image)
    2. 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)
    3. File location and size: w pierwszym polu wpisujemy nazwę dysku dla naszej maszyny (ImieNazwisko, dysk zostanie utworzony w katalogu domowym), natomiast rozmiar ustawiamy na około 12 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-20.04.2.0-desktop-amd64.iso uprzednio ściągnięty ze strony Linux Ubuntu 20.04 LTS.

Open-cdrom.png

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

  1. 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)
    UbuntuProblem VB.png
  2. W oknie Welcome wybieramy język angielski i klikamy Install Ubuntu MATE
  3. W ekranie wyboru klawiatury ustawiamy Polish - Polish i klikamy Continue
  4. W kolejnym oknie zaznaczamy Normal installation, ściąganie aktualizacji i nie zaznaczamy ściągania dodatkowego oprogramowania (kodeków MP3, itp.)
  5. W kolejnym oknie z menu wyboru dotyczącym sposobu instalacji wybieramy Something else (sami przeprowadzimy partycjonowanie dysku)
    Uwaga: polecane jest zapoznanie się z hierarchią systemu plików w systemach Linux (można o tym poczytać tutaj lub tutaj)
  6. W kolejnym oknie zaznaczamy dysk /dev/sda oraz klikamy New Partition Table i następnie w oknie Continue - pojawi się free space. Tworzymy dwie partycje:
    1. Partycja głównego systemu plików
      • Rozmiar: 10 GB
      • Typ: primary
      • Location: Beginning of this space
      • Use as: Ext4 journaling file system
      • Mount point: /
      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.
    2. Partycja wymiany (swap)
      • Rozmiar: 2 GB (pozostały rozmiar dysku)
      • Typ: logical
      • Location: Beginning of this space
      • Use as: swap area
  7. Klikamy Install now i Continue
  8. W opcji wyboru lokacji zostawiamy Warsaw i klikamy Continue
  9. 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: własne, do zapamiętania
    • Zaznaczamy opcję, by wpisywać hasło przy logowaniu
  10. Na koniec instalacji wyskoczy okienko Installaction complete - klikamy Restart Now
  11. 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
  12. Po restarcie pojawi się okno logowania - logujemy się na użytkownika student i w zasadzie mamy działający system
  13. 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ę:

      sudo apt-get install virtualbox-guest-dkms

    • 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)
    • na koniec restartujemy system
  14. Po ponownym uruchomieniu obraz maszyny powinien się skalować wraz z wielkością okna. Jeśli po uruchomieniu nadal okno maszyny wirtualnej nie skaluje się poprawnie należy sprawdzić czy "View --> Auto-resize Guest Display" jest dostępne i zaznaczone; można również zmienić kilkakrotnie tryb widoku, by maszyna na pewno załadowała skalowanie z rozdzielczością.

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 bash i stopniowo poznawać bardziej zaawansowane komendy.

Pierwszym zadaniem jest przypomnienie sobie podstawowych komend, znanych jeszcze z PTI:

  1. Proszę pobrać tekst "Romeo i Julii" po angielsku:

    wget http://www.gutenberg.org/cache/epub/1112/pg1112.txt

  2. Sprawdzić, w którym katalogu się znajdujemy (pwd)
  3. Stworzyć w katalogu /tmp katalogi foo i bar (do tworzenia katalogów polecenie mkdir, do przejścia do katalogu polecenie cd)
  4. Skopiować do katalogu foo plik z tekstem dramatu (cp)
  5. Przejść do katalogu bar i wyświetlić zawartość dramatu za pomocą ścieżki absolutnej (cat)
  6. Skopiować dramat z katalogu foo do bar 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 sudo.

Komenda sudo pozwala aktualnemu użytkownikowi (o ile spełnia dodatkowo pewne wymagania) wykonywać zadania administracyjne.

Przykłady użycia:

sudo adduser ola # wykona polecenie adduser ola z uprawnieniami administratora
sudo -i # zalogouje sie do konsoli administratora
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) oprogramowaniem 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.

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.

W Ubuntu (i innych dystrybucjach pochodzących od systemu Debian) do zarządzania pakietami/paczkami służą narzędzia dpkg oraz apt.

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.

Typy repozytoriów w Ubuntu

Żródła z których pobieramy oprogramowanie są opisane w pliku /etc/apt/sources.list.

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 /etc/apt/sources.list) nalezy pobrać informacje o pakietach z repozytorium. Do takiej aktualizacji pakietów komenda

sudo apt-get update

Komenda sudo apt-get update 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 już zainstalowanych 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 apt-cache. 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 /etc/apt/sources.list 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 focal partner

Należy pamiętać, że po każdej modyfikacji repozytoriów należy wykonać ponownie komendę apt-get update!

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ą apt-get install zainstalować program emacs oraz serwer ssh (openssh-server).

Podstawy administracji systemem Linux - użytkownicy

Dodawanie i usuwanie użytkowników

Do dodawania użytkownikow służy komenda adduser, a do ich kasowania deluser.

Wszystkie informacje o użytkowniku znajdują się w pliku /etc/passwd.

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 sudo

Polecenie sudo 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 sudo znajduje się w pliku /etc/sudoers, 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 /etc/sudoers służy tylko i wyłącznie polecenie visudo.

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!

Zadanie 6: dodawanie uprawnień sudo użytkownikowi

Domyślna konfiguracja sudo, pozwala na wykonanie polecenia z uprawnieniami administratora każdemu użytkownikowi w grupie sudo.

Dodaj w systemie użytkownika test i nadaj mu uprawnienia do wykonywania dowolnych poleceń.

Zadanie 7: dodawanie wybranych uprawnień sudo

Dodaj w systemie nowego użytkownika user, który za pomocą polecenia sudo może tylko zrestartować komputer (czyli wykonać komendę /sbin/reboot).

Plik ISO z Ubuntu MATE 20.04

  • Link bezpośredni (Princeton): link
  • Link bezpośredni (serwer WF PW): link