2. týždeň

Týždeň 2 – Cvičenie: Vlastná virtuálka a prvé nastavenia v nej

Cvičenie

Ciele

  1. Vybrať si virtualizačný nástroj, ktorý beží na tvojom počítači
  2. Vytvoriť virtuálku a nainštalovať do nej Linux
  3. Overiť, že v nej vieš pracovať
  4. Vytvoriť používateľa a skupinu
  5. Odskúšať práva na súboroch a adresároch
  6. Pozrieť si špeciálne bity a umask
  7. Spraviť si snapshot

Úvod

Celý semester budeš potrebovať Linux, na ktorom si môžeš čokoľvek pokaziť a hocikedy to vrátiť späť. Školský server na to nie je vhodný, lebo tam nemáš root a nemôžeš experimentovať. Preto si dnes zriadiš vlastnú virtuálku.

Nepredpisujeme ti, ktorý nástroj ani ktorú distribúciu si máš vybrať. Schopnosť zriadiť si funkčné prostredie podľa toho, čo máš k dispozícii, je sama osebe súčasťou toho, čo sa tu učíš. V praxi ti tiež nikto nepovie, na čom to máš rozbehať.

Keď bude virtuálka bežať, hneď v nej odskúšaš to, čo odznelo na dnešnej prednáške — vlastníctvo, skupiny a prístupové práva.

Postup

Krok 1: Vyber si virtualizačný nástroj

Nie každý nástroj beží na každom počítači. Toto je najčastejšie miesto, kde sa ľudia zaseknú, tak si to over hneď na začiatku.

Tvoj počítač Čo použiť
Windows VirtualBox, VMware Workstation Player alebo Hyper-V (ak máš Windows Pro)
macOS s Intelom VirtualBox, UTM alebo VMware Fusion
macOS s čipom M1 až M4 UTM (zadarmo), prípadne VMware Fusion alebo Parallels
Linux VirtualBox, GNOME Boxes alebo virt-manager nad KVM

Upozornenie

Na Macoch s čipom M1 a novším VirtualBox nepoužívaj. Podpora pre ARM je tam stále experimentálna a skončíš pri chybovej hláške. Použi UTM, je zadarmo a funguje.

Úloha 1.1

Zisti, aký procesor a koľko pamäte má tvoj počítač, a podľa tabuľky vyber a nainštaluj virtualizačný nástroj. Ak máš menej ako 8 GB pamäte, zníž pamäť virtuálky na 1 GB a disk na 15 GB. Bude to pomalšie, ale bude to fungovať.

Krok 2: Vytvor virtuálku a nainštaluj Linux

Distribúciu si vyber sám. Rozumné voľby sú aktuálna LTS verzia Ubuntu Server, Debian v stabilnej vetve alebo Fedora Server. Všetky sú zadarmo a na to, čo budeme robiť, sú rovnocenné.

Odporúčané nastavenie virtuálky:

Parameter Hodnota
Procesory 2 jadrá
Pamäť 2 GB, ak máš dosť, pokojne 4 GB
Disk 20 až 25 GB, dynamicky rastúci
Sieť NAT úplne stačí

Poznámka

Vyber si serverovú verziu bez grafického prostredia. Je výrazne menšia, rýchlejšie sa inštaluje a celý semester budeme aj tak pracovať v termináli. Grafika ti tu nič nepridá, len zožerie pamäť.

Úloha 2.1

Vytvor virtuálku podľa tabuľky, pripoj k nej stiahnutý inštalačný obraz a nainštaluj systém. Pri inštalácii si vytvor svoj bežný používateľský účet a zapamätaj si heslo. Ak sa inštalátor pýta, či nainštalovať OpenSSH server, povedz áno, zíde sa neskôr.

Upozornenie

Inštalácia trvá dvadsať minút aj viac, tak si na ňu vyhraď čas. Kým beží, môžeš si kroky s právami skúšať na čomkoľvek inom, čo máš po ruke, aj vo WSL na Windows. Hotové to potrebuješ mať do stretnutia s mentorom.

Krok 3: Over, že vieš vo virtuálke pracovať

Po prvom prihlásení si over, že všetko beží a že rozumieš tomu, čo vidíš.

whoami          # pod akým účtom som prihlásený
id              # moje UID, primárna skupina a vedľajšie skupiny
uname -a        # jadro a architektúra
ip a            # sieťové rozhrania a IP adresa
df -h           # koľko miesta mám na disku

Úloha 3.1

Spusti všetkých päť príkazov. Z výstupu id si zapíš svoje UID a názov primárnej skupiny. Budeš ich potrebovať o dva kroky ďalej.

Poznámka

Ak ip a ukazuje iba lo a žiadnu adresu, virtuálka nemá sieť. Skontroluj v nastaveniach, či má pripojený sieťový adaptér v režime NAT.

Krok 4: Vytvor používateľa a skupinu

Teraz to, čo odznelo na prednáške o používateľoch a skupinách.

sudo adduser janko            # vytvor druhého používateľa
sudo groupadd projekt         # vytvor novú skupinu
sudo usermod -aG projekt janko   # pridaj janka do skupiny
id janko                      # over, že v nej naozaj je

Upozornenie

To -a v usermod -aG je kritické. Bez neho sa používateľovi prepíšu všetky vedľajšie skupiny namiesto pridania a vieš mu takto odobrať napríklad prístup k sudo.

Úloha 4.1

Pridaj do skupiny projekt aj seba. Potom bez odhlásenia spusti id a pozri sa, či tam nová skupina je. Potom sa odhlás, znova prihlás a spusti id ešte raz. Zapíš si, čo sa zmenilo a prečo.

Krok 5: Odskúšaj práva na súboroch a adresároch

Toto je jadro dnešného cvičenia. Rob to po jednom a po každom kroku sa pozri na výstup.

mkdir -p ~/cviko/data
touch ~/cviko/data/subor1.txt ~/cviko/data/subor2.txt
ls -l ~/cviko/data

chmod 640 ~/cviko/data/subor1.txt      # oktálovo
chmod u+x,g-r ~/cviko/data/subor2.txt  # symbolicky
ls -l ~/cviko/data

Úloha 5.1

Pozri sa na výstup ls -l a predtým, než spustíš ďalší príkaz, si napíš, aké práva by mal mať každý z tých dvoch súborov. Potom si to over.

Teraz to, čo je na právach najmenej intuitívne.

chmod -x ~/cviko/data     # adresáru odoberieš právo x
ls ~/cviko/data           # mená ešte uvidíš
ls -l ~/cviko/data        # a tu to prestane
cat ~/cviko/data/subor1.txt
chmod +x ~/cviko/data     # vráť to späť

Úloha 5.2

Zapíš si, ktorý z tých príkazov prestal fungovať a ktorý nie. Vysvetli prečo. Nápoveda je v tom, že r na adresári dáva zoznam mien, ale x dáva prístup k položkám.

A nakoniec tá najlepšia vec na celých právach.

sudo touch ~/cviko/data/cudzi.txt
sudo chmod 000 ~/cviko/data/cudzi.txt
ls -l ~/cviko/data/cudzi.txt    # patrí rootovi a nemá žiadne práva
rm ~/cviko/data/cudzi.txt       # a predsa ho zmažeš

Úloha 5.3

Vysvetli, prečo si dokázal zmazať súbor, ktorý patrí rootovi a na ktorý nemáš ani jedno právo. Čo presne o tom rozhodlo?

Krok 6: Pozri si špeciálne bity a umask

ls -l /usr/bin/passwd           # všimni si s namiesto x
ls -ld /tmp                     # všimni si t na konci
find /usr/bin -perm -4000 -type f 2>/dev/null   # všetky setuid programy

Úloha 6.1

Nájdi vo výpise ls -l /usr/bin/passwd písmeno s a vysvetli, prečo tam je. Čo by sa stalo, keby tam nebolo a ty by si si chcel zmeniť heslo?

umask                    # aktuálna hodnota
touch a.txt && mkdir a_dir && ls -l
umask 077                # prísnejšia hodnota
touch b.txt && mkdir b_dir && ls -l

Úloha 6.2

Porovnaj práva súborov a.txt a b.txt a adresárov a_dir a b_dir. Odvoď z toho, ako umask ovplyvňuje to, čo vznikne.

Krok 7: Sprav si snapshot

Úloha 7.1

Vo svojom virtualizačnom nástroji si sprav snapshot virtuálky a pomenuj ho napríklad cista-instalacia. Trvá to pár sekúnd.

Poznámka

Zvykni si na to. Keď si o tri týždne pri hardeningu zamkneš SSH a nedostaneš sa dnu, snapshot ťa vráti späť za desať sekúnd namiesto novej hodinovej inštalácie.

Čo budeš mať pripravené pre mentora

Cvičenie si robíš sám a vlastným tempom. Budúci týždeň to s tebou prejde mentor a bude chcieť vidieť, že ti to naozaj beží. Priprav si preto tieto štyri veci.

  1. Bežiacu virtuálku a v nej výstup príkazu id.
  2. Používateľa janko, ktorý je členom skupiny projekt — ukáže to id janko.
  3. Súbor s právami 640 a súbor, na ktorom si práva nastavil symbolicky.
  4. Snapshot v zozname snapshotov virtualizačného nástroja.

K tomu si odlož odpovede na tri otázky z krokov vyššie — prečo prestal fungovať ls -l po odobratí práva x, prečo sa dal zmazať súbor patriaci rootovi, a čo sa zmenilo vo výstupe id po odhlásení a prihlásení.

Poznámka

Ak sa niekde zasekneš a nepohneš sa ďalej, nečakaj týždeň. Napíš do diskusie v Moodle alebo príď na online stretnutie, riešime to tam.

Doplňujúce úlohy

Úloha A.1

Vytvor adresár, do ktorého môžu zapisovať všetci, ale zmazať súbor v ňom smie len ten, kto ho vytvoril. Over, že to funguje, tak, že sa prihlásiš ako janko a skúsiš zmazať svoj súbor.

Úloha A.2

Nastav na adresári setgid bit a over, že súbory vytvorené vnútri dedia skupinu adresára namiesto primárnej skupiny toho, kto ich vytvoril.

Úloha A.3

Zisti, akú primárnu skupinu má používateľ janko a prečo práve takú.

Zdroje

  1. Manuálové stránky priamo vo virtuálke: man chmod, man chown, man usermod, man umask.
  2. Dokumentácia zvoleného virtualizačného nástroja k vytváraniu snapshotov.