in last 10 minutes
SIKSOP - Temat C - Linux, admin., VBox
W tym temacie będziemy eksperymentować jako root (admin) maszyny Linux-owej...Wskazówki co do używania VBox z puppy linux 5.0.0:
0. po pierwsze, patrz opis instalacji maszyn wirtualnych
1. jak "uaktywnić", a właściwie skonfigurować sieć w puppy linux pod VBox?
odp: dhcpcd eth0
2. jak kopiować pliki z VBox/ puppy linux-a do maszyny fizycznej?
odp: użyć klienta FTP, gftp &
podać maszynę/użytkownika/hasło jak przy logowaniu do maszyny students
Polecenia używane w tym temacie:
fdisk, mkfs, gparted, mount, umount, fsck.ext2,
swapon/off, su, adduser, addgroup, chgrp
manuale linux-owe w sieci: manual, manual2, manual3
Zadanie C.1 "VBox, mkfs" (2.5 pkt)
Utworzyć maszynę wirtualną VirtualBox z "Puppy Linuxem" (lupu),
wg tego opisu instalacji maszyn wirtualnych.
Dodatkowo proszę stworzyć 2 dyski wirtualne,
będą to (zapewne) /dev/sda i /dev/sdb,
sprawdzić to za pomocą polecenia:
fdisk -l
Następnie proszę utworzyć system plików ext2 na sda:
mkfs -t ext2 /dev/sda
i sprobować zamontować ten sys. pl. w katalogu dysk_a:
mkdir dysk_a
mount /dev/sda ./dysk_a
Następnie utworzyć plik ./dysk_a/plik.txt,
odmontować przez umount dysk_a,
zobaczyć zawartość katalogu ./dysk_a,
ponownie zamontować,
i znów zobaczyć zawartość tego katalogu...
Do sprawozdania dodać wydruki z poleceń "fdisk -l" oraz mount.
Uwaga: na ogół dysk dzieli sie na partycje, np. sda1 i sda2
a następnie w partycjach tworzy się sys. plików!
Zadanie C.2 "VBox, gparted"
Proszę na dysku sdb utworzyć 2 partycje po 200MB,
przy pomocy programu gparted (PARTition EDitor).
Pierwszą z nich, sdb1, sformatować (mkfs) jako ext2,
drugą jako ext3.
Proszę zaomontować obie partycje w katalogach dysk_b1 i dysk_b2,
proszę wstawić wydruk z programów "fdisk -l" oraz mount.
Zadanie C.3 "VBox, mount -o loop"
Proszę stworzyć system plików ext2 na pliku zwykłym,
patrzy slajdy z wykładu, blok 1, slajd.
Prosze spróbować wypróbować w działaniu taki sys. plików, tj:
zamontować, skopiować do niego pliki, odmontować,
znów zamontować, sprawdzić czy pliki tam są.
Odpowiednio długi plik zwykły tworzymy poleceniem dd (if=/dev/zero), patrz slajd.
Zadanie C.4 "VBox, fsck"
Proszę spróbować ręcznie naprawić system plików /dev/sdb1,
przy pomocy polecenia:
fsck.ext2 /dev/sdb1; # o ile jest tam ext2
Zbadać czy "powinno" się to robić na zamontowanym czy niezamontowanym sys. plików!
Proszę zrobić to samo z sys. plików w pliku zwykłym.
Zadanie C.4a "VBox, fsck, wersja zaawansowana" (2pkt) (?)
Spróbuj uszkodzić jakoś plik z syst. plików (z zadania C.3)
tak aby nie dało się go montować,
a następnie zobacz czy się go da naprawić przez fsck.
Wskazówki:
+ 22.05.2019: sys. plików można uszkodzić dodając do niego jakieś pliki
i "wyłączając komputer z prądu" (tj wył masz. wirt. nieprawidłowo, przez prawy/górny "X")
.............
Zadanie C.5 "VBox, mount -t cifs"
Spróbuj zamontować sieciowy sys. plików CIFS/SMB (z Windows).
Zakłada się, że z katalogu home na maszynie students
wystaje podkatalog "kat" z plikiem "plik1.txt" (trzeba je wcześniej utworzyć).
Docs o poleceniu "mount" i "mount -t cifs":
https://linux.die.net/man/8/mount
https://linux.die.net/man/8/mount.cifs
mkdir dysk
mount -t cifs //files.wmi.amu.edu.pl/students ./dysk \
-o rw,username=s?????,domain=LABS,iocharset=iso8859-2,prefixpath=s?????/kat
# UWAGI:
# 1. parametry muszą być starannie podane
# 2. program mount zapyta się o hasło do maszyny students
ls dysk/
# tu powinien się pojawić plik1.txt !
umount dysk
ls dysk/
# katalog powinien być pusty !
uwaga, 03.2020: montowanie sys cifs jest możliwe tylko z sieci wmi,
dlatego potrzebujemy tzw. "tunelu ssh", patrz zadanie C.11 i opis przed nim...
Zadanie C.5a "VBox, sshfs"
Następnie spróbuj uzyskać dostęp do tego samego katalogu co w zadaniu C.5
używająć sieciowego sys. plików "sshfs",
szczegóły - patrz manual sshfs (prawd. trzeba doinstalować sshfs! patrz plik .deb w folderze)
Wyjaśnienie: czym się różnią cifs/smb i sshfs ?
sshfs używa protokołu sftp nad ssh, wymaga serwera ssh (sshd)
cifs/smb to prot. sieciowego systemu plików pochodzącego z MS Windows
cifs/smb lepiej sobie radzi w sytuacji "wielodostępu" do pliku (podobnie jest z NFS)
sshfs szyfruje dane
Zadanie C.5b "VBox, cifs lub sshfs" (1.5pkt)
Przeprowadź eksperyment pokazujący, że zmiany w sys. plików (modyfikacje plików)
propagują się poprzez sieć...
Zbadaj także:
- jak system reaguje na zmiany praw...
- co się dzieje z dowiązaniami symbolicznymi i twardymi...
Wskazówka:
wprowadzaj zmiany będąc na maszynie students,
a obserwuj te zmiany z puppy linuxa pod VBox.
.............
Zadanie C.6 "VBox, swapon/off, stronnicowanie" (1.5 pkt)
Spróbuj powiększyć tzw "obszar do stronnicowania" (zwany niepoprawnie(?) "swap"),
co oznacza powiększenie pamięci operacyjnej dostępnej dla procesów...
Obszar ten ma być stworzony w pliku zwykłym o odpowiedniej długości.
Użyj poniższych poleceń (opis poleceń: polecenie --help, man polecenie, itp):
"dd" to stworzenia pliku, jako źródła użyj /dev/zero
"mkswap" do utworzenia str. danych w tym pliku
"swapon", "swapoff" do uaktywniania plikow/ obszarów stronnicowania
"free" pokazuje efekt naszego działania (ile pamięci jest dotępnej dla procesów)
"cat /proc/swaps" pokazuje pliki/partycje używane jako obszar do stronnicowania
Uwaga: swapon można użyć wielokrotnie (czyli może być wiele
obszarów stronnicowania, w kolejnych plikach)
Zadanie C.7 "VBox, stronnicowanie, zbyt mało pamięci, OOM Killer" (1.5 pkt)
Zaprojektuj eksperyment który pokaże nam co się dzieje jeśli jest
zbyt mało pamięci dla procesów (jak system na to reaguje).
Pamięciożerną aplikacją może być przeglądarka seamonkey,
którą należy zainstalować i otworzyć wiele stron www.
Następnie proszę powtórzyć ten eksperyment ale z dodanym obszarem swap;
obserwuj jak obszar do stronnicowania (swap) wypełnia się (pol. free),
chroniąc nas przed "agresywną" reakcją kernela (tzw OOM Killer).
Potrzebne polecenia:
"dmesg", "dmesg|grep 'Out of memory'", "dmesg|tail -n 10"
te ^ komendy wyświetlają komunikaty od kernela linuxa (np. od OOM Killera)
"ps -Oppid,sz", wyświetla m.in. rozmiar pamięci procesów
Zadanie C.7a "VBox, obszar swap na nietypowym pliku (1.5pkt)"
Aby plik swap mógł się znajdować na sieciowym lub warstwowym sys. plików (/root w VBox/puppy)
trzeba użyć tzw "urządzenia loop" (już go niejawnie używaliśmy przy montowaniu z opcją -o loop).
Urządzenie to jest blokowe (jak dyski) i ma blokowy plik specjalny /dev/loopX (X - numer).
Treść pliku /dev/loopX jest identyczna jak pliku zwykłego powiązanego z urządzeniem.
Polecenie do obsługi tego urządzenia: losetup
losetup; # wyswietla uzywane urzadzenia loop
losetup -f; # wyswietla wolne urzadzenie loop
losetup /dev/loop2 swap1; # wiąże /dev/loop2 z plikiem swap1
# jak usunąć powiązanie /dev/loopX z plikiem ? sprawdz w man!
Jeśli chcemy użyć pliku "swap1" jako obszaru swap, używamy w zastępstwie /dev/loop2,
wtedy nie ma żadnych ograniczeń co do tego gdzie leży plik "swap1" ...
.............
Zadanie C.8 "VBox, grupy użytkowników" (2 pkt)
Zaprojektuj eksperyment pokazujący działanie grup użytkowników w linuxie.
Wskazówki:
1. potrzebujesz kilku użytkowników typu nie-root;
mkdir /home; # bo tego katalogu brakuje w puppy linux-ie !
adduser jankowalski1
adduser jankowalski2
2. puppy linux ma nieco ograniczoną obsługę grup;
addgroup grupa1; # tworzy nową grupę użytkowników (pustą)
aby dodać użytkowników do grupy musisz ręcznie edytować plik /etc/group
(użyj edytora geany)
3. aby stać się użytkownikiem jankowalski1 użyj polecenia "su":
su jankowalski1
polecenie to zmienia użytkownika bieżącego bash-a w oknie xterm
4. zmiana grupy właścicieli pliku to chgrp:
chgrp grupa1 plik1.txt
(właściciel pliku może użyć tego polecenia o ile należy do grupy "grupa1",
root oczywiście może wszystko).
Polecenia (i inne rzeczy) potrzebne w tym zadaniu:
adduser, addgroup, su, chgrp, ...
operacje na plikach (echo itp),
plik /etc/group (opis)
.............
Tunele SSH ...
jeśli uruchamiając klienta ssh podamy opcję -Lport1:host2:port2
to zostanie utworzony wirtualny tunel między klientem ssh, a serwerem ssh;
jeśli jakiś program utworzy połączenie do klienta ssh na porcie port1,
to zostanie ono "przedłużone" o ten tunel,
i dalej o połączenie między serwerm ssh a maszyną host2 na porcie port2;
dane płynące przez tunel są zaszyfrowane...
Zadanie C.11 "VBox, mount -t cifs, tunel ssh"
Spróbuj zamontowac sieciowy system plików jak w zadaniu C.5,
ale tym razem komunikacja ma się odbywać poprzez tunel ssh...
protokół CIFS/SMB używa portów 445 i 139 (trzeba 2x użyć opcji -L w ssh);
prosze zademonstrować, że wszystko działa wyświetlając pliki
po zamontowaniu i po odmontowaniu;
Uwagi:
+ trik z tunelem ssh pozwala pominąć ograniczenie, że sys. plików cifs
można montować tylko z sieci wydziałowych (sal zajęciowych)
+ 22.05.2019: przy podłączaniu się do maszyny lts przez ssh podać nazwę użytkownika! np.:
ssh jkowalski@lts.wmi.amu.edu.pl
.............
Zadanie C.12 "VBox/puppy, konfig. XWindows (większy ekran)"
Spróbuj powiększyć ekran pupppy linuxa w VBox!
W tym celu musisz wyjść do trybu tekstowego (patrz guzik do zamykania puppy, "exit to prompt"),
wykonaj KONIECZNIE kopię zapasową pliku /etc/X11/xorg.conf,
następnie włącz "czarodzieja" xorgwizard, program ten modyfikuje xorg.conf (konfig x-serwera),
wybierz inny tryb graficzny,
restartuj x-serwer przy pomocy "startx".
Do sprawozdania dodaj (zmodyfikowaną przez xorgwizard) wersję pliku xorg.conf,
a przynajmniej te elementy ktore sie zmienily w tym pliku,
(przyda sie polecenie "diff" pokazujące różnice miedzy dwoma plikami).
Jeśli x-serwer nie startuje, spróbuj zmienić konfigurację karty graficznej w xorgwizard!
Jeśli się to nie udaje przywróć poprzedni plik xorg.conf (jednak zadanie można uważać za zrobione).
Rozwiązanie awaryjne: wget https://mhanckow.students.wmi.amu.edu.pl/pliki/xorg.conf
(to jest działający plik xorg.conf, można go ściągnąć w puppy, w trybie txt).
Zadanie C.13 "VBox/puppy, naprawa instalatora pakietów" (1.5pkt)
Napraw działanie ikonki "install" (czyli programu ppm) w puppy linuxie 5.0.0;
jak to zrobić opisano w uwadze 4 opisu instalacji maszyn wirtualnych;
jako dowód wykonania zadania spróbuj zainstalować jakiś pakiet,
oraz wstaw związany z nim plik *.files z katalogu /root/.packages
(tzn wstaw do sprawozdania zawartość tego pliku lub jej część).
Uwaga: podczas instalacji należy wybrać guzik "Examine dependencies"
w celu zainstalowania także bibliotek dyn. których używa nasz program...
Zadanie C.14, pliki fifo (anulowane, 04.2018)
Zbadać czy można używać "łączy nazwanych" do komunikacji między różnymi maszynami,
poprzez sieciowy system plików (SMB/CIFS lub SSHFS).
Polecenia: "mkfifo plik" tworzy łącze nazwane.
....................
Systemy plików c.d. ...
Zadanie C.15, unionfs, iso (2.5pkt)
Pokaż zastosowanie "warstwowego systemu plików" unionfs;
w tym celu przygotuj plik iso z obrazem płyty DVD (patrz: man mkisofs),
zamontuj ten plik jako wirtualną płytę w VBox,
następnie utwórz w Puppy pod VBox katalog ./c15_kat
z dwoma warstwami:
warstwa 1: katalog na zwykłym dysku (rw); powinien zawierać plik_a.txt
warstwa 2: katalog na zamontowanej plycie DVD (ro); powinien zawierać plik_b.txt
Zbadaj działanie działanie ./c15_kat, oraz obu warstw
jakie pliki są w tym katalogu ?
co się dzieje jeśli modyfikować plik_b.txt ?
co się dzieje jeśli usunąć plik_b.txt ?
co się dzieje jeśli usunąć plik_a.txt ?
Wskazówki:
Do utworzenia unionfs w ./c15_kat użyj polecenia:
mount -t aufs -o dirs=dir_rw:dir_ro nic ./c15_kat
# typ sys. plików aufs to nowsza wersja unionfs!
Materiały: unionfs, unionfs man, aufs wiki, aufs tut.
Unionfs używa plików ukrytych w dir_??, stąd należy używać "ls -a" aby je zobaczyć.
Uwaga: dir_rw nie może być w kat. /root bo to JUŻ jest warst. sys. plików!!
musi być na "prawdziwym" dysku, np. sdb, albo na /tmp (?)
Zadanie C.16, dyski dos vs linux (4pkt)
Cele zadania:
1. zobaczyć co się dzieje z plikami gdy przenosić dysk z dos-u do linux-a,
2. dowiedzieć się jak montować w linux-ie dyski logiczne dos-u,
o ile cały dysk dos-u jest dostępny jako "obraz" (hdimage) pod dosemu.
...
instalacja dosemu (emulatora dos-u) pod puppy: rpm -i dosemu-1.4.0-1.i386.rpm
...
Należy stworzyć dysk dos-owy 20MB (dla dosemu),
którego obraz będzie w pliku "dysk20m.img".
Plik ten należy spreparować programem mkfatimage16 pakietu dosemu.
Dysk ten "instalujemy" dla dosemu umieszczając dowiązanie do dysk20m.img
w katalogu ~/.dosemu/drives/ lub /etc/dosemu/drives.
Proszę zauważyć, że plik dysk20m.img wydaje się zbyt krótki,
aby temu zaradzić formatujemy go bezwar. spod dosemu (format /u litera_dysku:).
...
Teraz możemy spod dosemu utworzyć 2 partycje na dysku 20MB,
przy pomocy polecenia fdisk.exe (ktore trzeba skopiować do ~/.dosemu/drive_c).
Po restartowaniu dosemu, powinniśmy widzieć dwa dyski (np. e: i f:) zamiast jednego.
...
Wyłączamy dosemu. Spróbujemy teraz zamontować oba dyski logiczne dosu spod linux-a,
w katalogach dysk_e i dysk_f.
Musimy się dowiedzieć gdzie w dysk20m.img zaczyna sie każda z partycji.
To co wiemy na wejściu, to że plik ten zawiera 128 bajtowy nagłówek używany przez dosemu,
polecenie file wyciąga z niego informacje pod linuxem (zobacz: file dysk20m.img).
Musimy utworzyc urz. loop i POMINĄĆ ten nagłówek:
losetup -o 128 /dev/loopX dysk20m.img; # X to nr wolnego urz. loop (losetup -f)
następnie użyc polecenia parted (NIE gparted) do odczytania danych z tablicy partycji
parted /dev/loopX; # uzyc komend "unit b" i "print"
zinterpretować wyniki, obliczyć od którego miejsca pliku dysk20m.img
zaczyna sie 1 i 2 partycja dysku...
Następnie można montować te partycje uzywając mount z opcjami -o loop,offset=Y.
...
Zobaczyć jak prawa do plików w linux-ie przekładają się na atrybuty plików w dos-ie!