Ciele
- Vybrať si virtualizačný nástroj, ktorý beží na tvojom počítači
- Vytvoriť virtuálku a nainštalovať do nej Linux
- Overiť, že v nej vieš pracovať
- Vytvoriť používateľa a skupinu
- Odskúšať práva na súboroch a adresároch
- Pozrieť si špeciálne bity a umask
- 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.
- Bežiacu virtuálku a v nej výstup príkazu
id. - Používateľa
janko, ktorý je členom skupinyprojekt— ukáže toid janko. - Súbor s právami
640a súbor, na ktorom si práva nastavil symbolicky. - 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
- Manuálové stránky priamo vo virtuálke:
man chmod,man chown,man usermod,man umask. - Dokumentácia zvoleného virtualizačného nástroja k vytváraniu snapshotov.