Zajęcia 1: Instalacja i podstawy administracji systemu Debian

Filozofia Unixa

Do one thing and do it well - Write programs that do one thing and do it well. Write programs to work together. Write programs to handle text streams, because that is a universal interface.

Everything is file - Ease of use and security is offered by treating hardware as a file.

Small is beautiful.

Store data and configuration in flat text files - Text file is a universal interface. Easy to create, backup and move to another system.

Use shell scripts to increase leverage and portability - Use shell script to automate common tasks across various UNIX / Linux installations.

Chain programs together to complete complex task - Use shell pipes and filters to chain small utilities that perform one task at time.

Choose portability over efficiency.

Keep it Simple, Stupid (KISS).

Instalacja systemu operacyjnego (w maszynie wirtualnej)

Wirtualizacja — pozwala uruchomić jednocześnie wiele systemów operacyjnych na tej samej maszynie

  • Host (lub “matka”) — system, w którym urcuomione są inne systemy operacyjne (poprzez odpowiednie oprogramowanie)
  • Gość — system, który jest uruchomiony w oprogramowaniu symulującym komputer, które działa na hoście

Kiedy wirtualizacja jest przydatna:

  • Kiedy systemem matką jest Linux, a musimy pracować na Windows’ie
  • Wirtualizacji używa się 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.
  • Wirtualizacja jest używana przy wdrażaniu aplikacji. Na jednym serewerze może działać wiele aplikacji. Jeśli każda aplikacja jest na swojej maszynie wirtualnej wszystkie aplikacje są od siebie całkowicie odizolowane, mogą działać na różnych systemach operacyjnych, mieć przypisane inne adresy IP, można je oddzielnie włączać i wyłączać.

Stworzenie maszyny wirtualnej: 20 min

  1. Włączenie kreatora tworzenia maszyn wirtualnych (Machine -> New)

  2. Nazwa: Wasze imie i nazwisko (jan-kowalski)

  3. Operating System Linux, Version Debian 64bit

    Note

    Konfigurujemy VirtualBox’a tak, że systemem gościem będzie GNU/Linux Debian w wersji o 64 bitowej architekturze procesora (chodzi tu o architekturę maszyny gościa, można na 64-bitowym hoście ustawić 32-bitową maszynę wirtualną — na odwrót nie jest to możliwe).

  4. Memory: ustaw 1GB. Pozwala to określić ile z pamięci RAM systemu host jest widoczne dla maszyny wirtualnej. Ustawienie to można łatwo zmienić.

  5. Stworzenie wirtualnego dysku: Create New

    Note

    Dyski maszyny wirtualej widzoczne są jako pliki na maszynie matce. Teraz konfigurujemy taki dysk.

  1. Rodzaj dysku: VDI. Jest to natywny format dysków VirtualBoksa.

  2. Na następnej karcie: Dynamically allocated: w tym formacie rozmiar pliku z dyskiem rośnie w trakcie pracy.

  3. Położenie. Bez zmian. Domyślnie dysk zapisze się w katalogu ~

  4. Size: 8GB.

    Note

    Dla praktycznych zastosowań radzę wybrać większy dysk. Zmiana rozmiaru dysku po utworzeniu jest nietrywialna.

Po stworzeniu maszyny wirtualnej, należy umieścić obraz płyty w wirtualnym napędzie CD. By to zrobić należy wybrać Settings, dalej Storage kliknąć na ikonce dysku CD, wybrać: “Choose Virtual Optical Disk File”, następnie wybrać obraz z pliku /opt/sk/shared/iso/*iso (Obraz płyty instalacyjnej debiana 8.1).

_images/open-cdrom.png

Wybór płyty.

Instalacja systemu Debian: 45 min

  1. Language: English.

  2. Country: Poland

  3. Locale: en_US.utf8

  4. Hostname: debian

  5. Domain: dowolne

  6. Wybór hasła root. Pozostawiamy puste

    Note

    Konto roota jest kontem administracyjnym zawierającym wszystkie uprawnienia. Dobrą praktyką bezpieczeństwa jest uniemożliwienie logowania na konto roota.

    Więcej w Podstawy administracji systemem linux

  7. Użytkownik i hasło. Proszę wybrać swoje imie i nazwisko i hasło: student.

  8. Partycjonowanie dysków.

Note

Polecam zapoznanie się hierarchią systemu plików w systemie UNIX: System plików w Linuksie

  1. Wybieramy opcję Manual.
  2. Tworzymy dwie partycje:

Partycję na główny system plików

Parametry:

  1. Rozmiar 7GB
  2. Typ primary
  3. Format ext4
  4. Mount point /

Note

W tej konfiguracji wszystkie dane będą na jednej partycji.

W produkcyjnych środowiskach raczej przydziela się partycje na wybrane podkatalogi, na przykład /home jest na oddzielnej partycji.

Partycję na plik wymiany

  1. Rozmair (reszta wolnej przestrzeni)
  2. Typ: Logical
  3. Use as: swap

Note

Obszar wymiany jest obszarem na dysku, do którego system operacyjnu może kopiować zawartość pamięci RAM, gdy pamięci tej zbyt mało.

W Windowsie plik wymiany jest plikiem na jednej z partycji, w UNIXach jest on z reguły oddzielną partycją.

Note

Uwaga: Jeśli instalujecie Debiana w domu, możecie spokojnie użyć opcji “Guided”.

  1. Scan another CD: No

  2. Use network mirror: yes, Poland, ftp.pl.debian.org

  3. Popularity contest: No

  4. Software Selection:

    1. Debian desktop Enviorment
    2. Standard system utilities
  5. Install GRUB to master boot record: wybieramy yes. Następnie Wybieracie /dev/sda....

    Note

    Grub (Grand Unified Boot Loader) zarządza ładowaniem systemu operacyjnego (i pozwala wybrać odpowiedni jeśli jest kikla systemów do zastosowania).

Instalacja Guest Additions

Proszę wykonać:

sudo aptitude install virtualbox-guest-utils

Ustawienia sieci w narzędziu VirtualBox

  1. Wchodzimy w ustawienia maszyny wiertualnej (zaznaczyć i kliknąć settings).
  2. Ustawienia dysków są pod Network.
  3. Nie dokonujemy zmian, ale warto wiedzieć jakie są możliwości.

Do maszyny wirtualnej można podpiąć 4 karty sieciowe. Każda z tych kart może działać w takich trybach:

Warning

Opisy te mogą się wydać enigmatyczne, ale przy odrobinie szczęścia, po kolejnych wykładach będą jasne.

NAT

Maszyna dziecko funkcjonuje w wirtualnej podsieci, w której rolę bramy pełni maszyna matka. Można skonfigurować przekierowania portów, tak, by połączenie do maszyny matki na port X było przekierowane na daną maszynę wirtualną.

Jest to najprostsze rozwiązanie.

Host-only-network

Dana karta sieciowa jest wpięta w wirtualną sieć na komputerze matce, ma w tej sieci dostęp do:

  • Wszystkich uruchomionych maszyn wirtualnych
  • Maszyny matki

Dane z tej sieci nie wchodzą na zewnątrz maszyny matki.

Warto skorzystać z takiej sieci jeśli:

  • Dane, które wynieniają między sobą maszyny wirtualne są poufne.
  • Jeśli chcemy mieć pełną kontrolę nad adresami IP maszyn w wirtualnej sieci.

Bridged

Dana karta jest podpięta do wybranego interfejsu sieciowego na maszynie matce (np. połączenie kablowe eth0, połączenie WiFi wlan0).

Maszyna będzie funkcjonować jako kolejny host działający bezpośrednio w danej sieci. Gdybyśmy wybrali tą opcję, nasza maszyna byłaby widoczna w sieci Wydziału Fizyki.

Warto skorzystać z tej sieci jeśli:

  • Nasza maszyna wirtualna ma być widoczna w sieci maszyny matki (jest na przykład serwerem).

Powtórzenie komend Linuxa

Proszę pobrać tekst Romeo i Julii po angielsku:

wget http://db.fizyka.pw.edu.pl/sk-2015/_downloads/pg1112.txt

Sprawdzić, w którym jesteśmy katalogu (pwd).

Stworzyć w katalogu /tmp, katalogi foo i bar (polecenie mkdir).

Skopiować do katalogu foo plik z tekstem dramatu.

Przejść do katalogu bar i wyświetlić zawartość dramatu za pomocą ścieżki absolutnej.

Skopiować dramat z katalogu foo do bar za pomocą ścieżki względnej.

Użytkownik administracyjny

W GNU/Linuksie istnieje bardzo mocno wymuszany podział na administratora komputera, oraz zwykłego użytkownika (w nowszych wersjach systemu Windows jest analogicznie).

Do wykonywania czynności administracyjnych stworzono użytkownika o nazwie root, o specjalnym id równym 0.

Na nowszych systemach konto administracyjne jest domyślnie wyłączone, a jego uprawnienia zdobywa się tymczasowo, z użyciem komendy sudo.

Komenda sudo

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

Przykłady:

sudo adduser jbzdak # Wykona polecenie adduser jbzdak z uprawnieniami administratora
sudo -i # Zalogouje się do konsoli administratora
sudo -u user -i # Uruchomi konosolę z zalogowanym użytkownikiem user

Instalowania oprogramowania

Wszystkie sytemy operacyjne Linux przychodzą z (mniej lub bardziej bogatym) zestawem oprogramowania, oraz narzędziami do automatycznej instalacji wspomnianego oprogramowania.

Ma to wiele zalet:

  • Jest znacznie bezpieczniejsze niż pobieranie pliku setup.exe z Internetu. Pakiety (przynajmniej w tych dystrybucjach które znam) posiadają system kryptograficznej weryfikacji.
  • Znacznie ułatwia zarządzanie wieloma serwerami.
  • Znacznie ułatwia zarządzanie wersjami bibliotek

System paczek debiana oparty jest o programy dpkg oraz apt.

Note

Niektóre dystrybucje (np. Ubuntu) posiadają całkiem użyteczne graficzne nakładki na system pakietów, nakładki te przypominają “Sklepy” znane z polularnych marek smartfonów.

Debian posiada też inne narzędzia do pracy z Pakietami, np. bardzo dobry aptitude (tekstowy lub graficzny) oraz graficzny synaptic, jednak w “pierwszym kontakcie” mogą obe być mniej intuicyjne w użyciu

Repozytoria oprogramowania

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

Można dopisywać do tych plików repozytoria będące poza kontrolą dostawcy Waszej dystrybucji np. by zainstalować najnowszą wersję przeglądarki.

Aktualnie Wasze maszyny wirtualne mogą być skonfigurowane do pobierania pakietów z płyty CD.

Konfigiracja managera pakietów powinna wyglądać tak:

deb http://ftp.pl.debian.org/debian/ jessie main non-free contrib
deb http://security.debian.org/ jessie/updates main contrib non-free
deb http://ftp.pl.debian.org/debian/ jessie-updates main non-free contrib

Instalujemy pakiety z aktuanej stabilnej wersji Debiana (jessie).

Repozytorium debiana podzielone jest na sekcje:

  • main główna sekcja oprogramowania wspierana przez zespół Debiana
  • contrib oprogramowanie na wolnej licencji nie wspierane przez zespół debiana
  • non-free oprogramowanie nie wydane na wolnej licencji

Note

Na komputer “domowy” możecie śmiało użyć tej konfigurajci, na serwer warto się zastanowić czego potrzebujecie.

Zadania 1

Za pomocą sudo oraz Waszego ulubionego edytora tekstu ustawcie zawartość pliku /etc/apt/sources.list na:

deb http://ftp.pl.debian.org/debian/ jessie main non-free contrib
deb http://security.debian.org/ jessie/updates main contrib non-free
deb http://ftp.pl.debian.org/debian/ jessie-updates main non-free contrib

Przeszukiwanie pakietów

Po zmianie konfiguracji repozytorióœ nalezy pobrać informacje o pakietów z repozytorium:

sudo apt-get update

Komenda sudo apt-get update pobiera również informacje o nowych pakietach które wydali twórcy Debiana i dobrze ją wykonać przed każdą czynnością dotyczącą pakietów.

Do przeszukiwania repozytorium pakietów służy program apt-cache.

By wyszukać pakietów które mają w nazwie lub opisie ciąg znaków foo należy napisać polecenie:

apt-cache search foo

By wyszukać tylko w nazwie pakietu należy napisać:

apt-cache search -n foo

Zadanie 2

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.

Za pomocą apt-get install zainstalować program emacs oraz serwer ssh (openssh-server).

Dodawanie i usuwanie użytkowników

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

Przy dodawaniu użytkowników można:

  • Ustawić domyślną powłokę dla użytkownika (np. na /bin/sh, albo /bin/false),
  • Ustawić położenie katalogu domowego,
  • Wyłączyć możliwość logowania hasłem,
  • Wyłączyć możliwość logowania w ogóle.

Note

Każda usługa działająca w systemie Linux musi działać jako jakiś użytkownik, najczęściej nie powinien to być użytkownik ``root``. Dobrym zwyczajem jest stworzenie oddzielnego użytkownika na każdą z usług, które uruchamiacie na swoim systemie.

Wszystkie informacje o użytkowniku są w /etc/passwd, skrót hasła jest w pliku /etc/shadow.

Grupy

Użytkownik może należy do jednej bądź wielu grup. Grupy ułatwiają kontrolę wielu użytkowników.

By dodać użytkownika do grupy można wykonać:

adduser username group

Zarządzanie uprawnieniami sudo

Sudo pozwala na trochę lepszą kontrolę, niż tylko nadanie uprawnień do wykonania dowolnej komendy.

Pozwala 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 jest w pliku /etc/sudoers, jednak plik ten nie może być po prostu edytowany — 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 polecenie visudo.

Note

Nie jest łatwo bezpiecznie skonfigurować sudo, przykładowo jeśli dacie komuś dostęp do wykonywania edytora vim z uprawnieniami root to, zasadniczo, może on wykonywać dowolne operacje na systemie (ponieważ edytor vim pozwala na uruchomienie dowolnej komendy.

Zadanie 3

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

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

Zadanie 4

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