Unix / Linux OPS · 4. ročník · Charakteristika · Příkazy · Skripty · Síťové služby

12. Unix / Linux

Kompletní průvodce od filozofie systému, příkazového řádku a skriptování až po síťové služby a virtualizaci

Sekce 01

Unix je víceuživatelský, víceúlohový operační systém vyvinutý v Bellových laboratořích AT&T na přelomu 60. a 70. let. Byl napsán v jazyce C – to bylo revoluční, protože OS se tehdy psaly výhradně v assembleru závislém na hardware. Díky C mohl být Unix přenesen na různé platformy.

Linux je svobodný, otevřený a volně dostupný operační systém podobný Unixu (Unix-like). Přesný název je GNU/Linux. Projekt GNU zahájil Richard Stallman v roce 1984 ve Free Software Foundation. Jádro Linuxu napsal Linus Torvalds v roce 1991 za účelem nahradit tehdejší Minix. Uživatelé mají přístup ke zdrojovému kódu a mohou systém přizpůsobovat svým potřebám.

Stavební bloky operačního systému GNU/Linux

GNU/Linux se skládá z pěti vrstev komponent, které na sebe navazují:

5 GUI a aplikace Grafické prostředí (GNOME, KDE, XFCE), prohlížeče, kancelářský software. Tato vrstva nebývá součástí základní instalace.
4 Shell Speciální program poskytující rozhraní pro komunikaci uživatele s OS. Spouští příkazy a skripty (bash, zsh, sh, fish).
3 Systémové nástroje Programy pro správu systému vytvořené v projektu GNU – základní příkazy ls, mv, cp, cat… Balíček coreutils.
2 Systémové knihovny Poskytují standardní funkce pro aplikace. Umožňují programům komunikovat s jádrem bez přímého přístupu. Balíček libc6.
1 Jádro (Kernel) Základní část OS. Řídí hardware, spravuje procesy, paměť a souborové systémy. Typy: monolitické, mikrokernel, hybridní, exokernel.
0 Hardware CPU, RAM, disky, síťové karty, USB zařízení…

Softwarové komponenty jsou distribuovány ve formě balíčků (packages) – archivů (.deb, .rpm…), které obsahují programy nebo knihovny, metadata, seznam závislostí a instrukce pro instalaci. Správce balíčků (apt, dnf, pacman…) se stará o instalaci, aktualizaci, odstraňování a řešení závislostí.

Vlastnosti GNU/Linuxu

Linux je moderní – grafické prostředí určuje jeho vzhled a lze ho plně přizpůsobit. Je relativně bezpečný (malware na Linuxu se vyskytuje výrazně méně). Lze na něm mít nainstalované velké množství aplikací, podporuje vzdálenou správu. Podporuje vlastní souborové systémy (ext2, ext3, ext4) a zároveň umí pracovat se systémy Windows (NTFS, FAT32) – zatímco Windows s linuxovými souborovými systémy pracovat neumí.

💡 Klíčová filozofie Vše v Unixu je soubor – fyzická zařízení (disky, terminály), síťová rozhraní, procesy – vše lze číst a zapisovat prostřednictvím jednotného souborového rozhraní. Každý nástroj dělá jednu věc, ale dělá ji dobře.

1.1 Srovnání s MS Windows

Rozdíly mezi Linuxem, Unixem a Windows nejsou pouze kosmetické – jde o fundamentálně odlišné přístupy k tomu, co OS je a jak by měl fungovat.

KritériumLinuxUnixWindows
Zdrojový kódOtevřený (Open Source), licence GNU GPLPřevážně uzavřený, vlastnické licence (AIX, HP-UX)Uzavřený, proprietární (Microsoft EULA)
NákladyObvykle zdarmaČasto drahéPlacená licence
BezpečnostMéně cílen malwaremMéně cílen malwaremVíce cílen malwarem
Typické použitíServery, superpočítače, cloud, embeddedPodniky, datová centra, telekomunikaceDesktop, komerční servery (Exchange, SQL)
Podpora HWŠiroká škála hardwareOmezená na specifický hardwareŠiroká škála hardware
Uživatelské rozhraníVíce desktopových prostředí (GNOME, KDE, XFCE…)Omezené GUI, převážně CLIJedno desktopové prostředí
VariantyStovky distribucí (Ubuntu, Debian, Fedora, Arch…)Málo variant (AIX, HP-UX, Solaris, macOS)Windows 10, 11, Server…
KonfiguraceTextové soubory v /etcTextové souboryBinární registr (regedit)
Správa softwaruSprávce balíčků (apt, dnf, pacman)Správce balíčků nebo ručněInstalátory .exe/.msi
Uživatelský modelKomunita i podnikyPřevážně podnikyKoncoví uživatelé a podniky

Filozofický rozdíl v práci se systémem

Windows byl navržen s důrazem na grafické rozhraní jako primární způsob ovládání. Linux naopak staví na příkazovém řádku jako základním nástroji správce – GUI je jen nadstavba. Na linuxovém serveru v datovém centru nemusí žádné GUI existovat – systém běží bez grafiky roky bez restartu.

Konfigurace v Linuxu je uložena v prostých textových souborech v adresáři /etc. Jakýkoliv textový editor (nano, vim, gedit) je postačující – není potřeba speciální nástroj jako Windows registr. Konfigurace lze verzovat Gitem, sdílet, automatizovat skripty.


1.2 Adresářová struktura

Linux/Unix nepoužívá označení disků jako C:\, D:\ apod. Místo toho má jeden strom začínající kořenem /. Fyzické disky a oddíly se připojují (mountují) do adresářů tohoto stromu. Místo označení C: se používají soubory zařízení v adresáři /dev:

/dev/sda
První SATA/SCSI disk
/dev/sda1
První oddíl na prvním SATA/SCSI disku
/dev/nvme0n1
První NVMe disk
/dev/nvme0n1p1
První oddíl na prvním NVMe disku

Oddíly se připojují (mountují) do stromové struktury souborového systému – například / (kořen), /home (uživatelská data), /boot (zaváděcí soubory) nebo /mnt//media (dočasně připojená média).

/ ← kořenový adresář (musí vždy obsahovat /etc, /bin, /sbin, /lib, /dev) ├── bin/ ← symlink na /usr/bin – základní příkazy (ls, cp, bash…) ├── sbin/ ← systémové programy pro roota (fdisk, ifconfig…) ├── etc/ ← konfigurace systému (textové soubory) │ ├── passwd ← seznam uživatelů a jejich UID, GID, shell │ ├── shadow ← hashovaná hesla (vyžaduje sudo) │ ├── group ← skupiny uživatelů │ ├── hosts ← lokální DNS záznamy │ ├── hostname ← název počítače │ ├── network/ ← konfigurace sítě │ ├── ssh/ ← konfigurace SSH (sshd_config) │ ├── bind/ ← konfigurace DNS serveru BIND9 │ └── dhcp/ ← konfigurace DHCP serveru ├── home/ ← domovské adresáře uživatelů │ └── ales/ ← domovský adresář uživatele ales (~) ├── root/ ← domovský adresář superuživatele root ├── var/ ← proměnná data (logy, spool, databáze) │ ├── log/ ← systémové logy │ └── lib/dhcp/ ← záznamy o přidělených IP adresách (DHCP leases) ├── tmp/ ← dočasné soubory (mazány při restartu) ├── usr/ ← aplikační programy a knihovny │ ├── bin/ ← programy pro uživatele │ ├── lib/ ← sdílené knihovny (.so) │ └── share/ ← sdílená data (manuálové stránky, ikony) ├── lib/ ← sdílené knihovny pro /bin a /sbin ├── dev/ ← zařízení jako soubory (disky, terminály…) │ ├── sda ← první SATA disk │ ├── null ← "černá díra" – zahazuje vše │ └── tty0 ← první terminál ├── proc/ ← virtuální FS – informace o procesech a jádře │ ├── cpuinfo ← info o CPU │ └── meminfo ← info o RAM ├── sys/ ← virtuální FS – rozhraní k jádru (sysfs) ├── mnt/ ← dočasné přípojné body (mount pointy) ├── media/ ← automaticky připojená média (USB, CD) └── boot/ ← zaváděcí soubory, jádro, GRUB bootloader
ℹ️ GRUB bootloader GRUB (GNU Grand Unified Bootloader) je zavaděč operačního systému, který se spustí po zapnutí počítače. Umožňuje vybrat, který z nainstalovaných OS se spustí, a zavede jádro OS do paměti. Konfigurační soubory má v adresáři /boot/grub/.

Souborové systémy Linuxu

FSRokVlastnosti
ext21993Nežurnálový, preferovaný pro flash disky a SSD
ext32001Žurnálový, zpětně kompatibilní s ext2
ext42006Výchozí pro většinu distribucí. Žurnálový, větší soubory, kontrolní součty metadat, extenty, neomezený počet podadresářů (64 000). Kompatibilní s Windows a Mac.
btrfs2007Snímkování (snapshots), sdružování disků, online defragmentace, komprese. Používá Fedora Workstation.
bcachefs2015Úplné šifrování FS, snímky, nativní komprese
NTFSLinux podporuje přes ovladač ntfs-3g, ale nepodporuje unixová oprávnění
exFATOdlehčená verze NTFS pro flash disky, kompatibilní se všemi zařízeními

Absolutní a relativní cesty

Absolutní cesta začíná vždy lomítkem / od kořene – např. /home/ales/soubor.txt. Platí odkudkoliv. Relativní cesta vychází z aktuálního adresáře – dokumenty/soubor.txt. Speciální symboly: . = aktuální adresář, .. = nadřazený adresář, ~ = domovský adresář uživatele.

Sekce 02

Unix/Linux nabízí dva způsoby interakce: CLI (Command Line Interface – příkazový řádek) a GUI (grafické rozhraní). Klíčový rozdíl oproti Windows: GUI bylo v Linuxu od počátku nepovinnou nadstavbou, ne součástí jádra. Server bez GUI funguje naprosto plnohodnotně.

2.1 Základní příkazy

Příkazy mají obecnou strukturu: příkaz [přepínače] [argumenty]. Přepínače začínají - (zkrácené) nebo -- (slovní). Příkaz man příkaz zobrazí kompletní dokumentaci, příkaz --help stručnou nápovědu.

Navigace a ovládání shellu

pwd
Vypíše absolutní cestu k aktuálnímu adresáři (Print Working Directory)
cd
cd /etc absolutně · cd .. o úroveň výš · cd ~ domovský · cd - předchozí adresář
ls
Výpis adresáře. -l podrobný, -a skryté soubory, -h lidsky čitelné velikosti, -R rekurzivně
history
Zobrazí historii příkazů. history 10 posledních 10. history -c smaže historii. Šipka ↑ ↓ procházení.
who / whoami
who zobrazí všechny přihlášené uživatele. whoami nebo id -un vypíše aktuálního uživatele.
clear
Smaže obsah obrazovky terminálu
date
Zobrazí datum a čas. date +"%Y-%m-%d" formátovaně.
cal
Zobrazí kalendář. cal -m 2025 nebo cal 1 2025. Nutno nainstalovat (apt install bsdmainutils).
passwd
Změní heslo aktuálního uživatele (nebo zadaného, pokud jste root)
man
Zobrazí manuálovou stránku. man ls. Pohyb: šipky, /text hledání, q = ukončení.
mc
Midnight Commander – souborový manažer pro Unix. Ctrl+O skryje/zobrazí. F10 zavře. Nutno instalovat.

Klávesové zkratky shellu

Tab
Automatické doplnění příkazu nebo názvu souboru (velmi užitečné!)
Ctrl+C
Ukončí běžící aplikaci (zašle signál SIGINT)
Ctrl+Z
Pozastaví běžící proces (přesune na pozadí ve stavu Stopped)
Ctrl+D
Odhlásí z shellu (ekvivalent příkazu logout nebo exit)
Ctrl+S / Q
Pozastaví / obnoví výpis na obrazovce
Alt+F1–F6
Přepínání mezi virtuálními terminály v textovém režimu
Ctrl+Alt+F7
Přepnutí z textového terminálu do grafického prostředí

Práce se soubory

cp
Kopíruje soubor. cp -r adresář rekurzivně. cp zdroj cíl
mv
Přesouvá nebo přejmenovává. mv starý nový
rm
Nenávratně maže (bez koše!). rm -r adresář. rm -i s potvrzením každého souboru.
mkdir
Vytvoří adresář. mkdir -p a/b/c vytvoří celou hierarchii najednou.
touch
Vytvoří prázdný soubor nebo aktualizuje čas přístupu
ln
ln -s cíl odkaz symlink (zástupce). Pevný odkaz bez -s.
find
Hledá soubory rekurzivně. find / -name "*.conf" · find . -mtime -7 (za 7 dní) · find . -type f -name "*.sh"
stat
Zobrazí podrobné informace o souboru z i-uzlu (velikost, čas, oprávnění, inode číslo)
readlink
Zjistí, na jaký soubor odkazuje symlink. readlink -f vrátí absolutní cestu.
basename / dirname
basename /a/b/soubor.txtsoubor.txt · dirname /a/b/soubor.txt/a/b

Zobrazení obsahu souborů a textové nástroje

cat
Zobrazí celý soubor. cat soubor1 soubor2 spojí více souborů. Pokud není zadán vstup, čte ze stdin.
less
Interaktivní prohlížeč – stránkuje výstup. /text hledání, q ukončení.
head / tail
head -20 soubor prvních 20 řádků · tail -f log.txt sleduje soubor živě (pro logy!)
grep
Hledá vzor v textu. grep -i "chyba" log · grep -n s číslem řádku · grep -r rekurzivně · grep -E 'regex' rozšířené výrazy
wc
Word Count – -l řádky · -w slova · -c bajty
sort
Seřadí řádky abecedně. -n číselně · -r sestupně · -k2 podle 2. sloupce
uniq
Odstraní bezprostředně sousední duplicitní řádky. -c spočítá výskyty.
diff
Porovná obsah dvou textových souborů a zobrazí rozdíly
seq
Generuje číselnou posloupnost. seq 1 10 · seq 0 2 20 (krok 2)
awk
Výkonný nástroj pro zpracování textu po řádcích. Syntaxe: awk '{print $1}' soubor (vypíše první sloupec). Podporuje podmínky, cykly, regex.
sed
Stream editor – nahrazování textu. sed 's/starý/nový/g' soubor nahradí všechny výskyty. Velmi výkonný s regex.

Systémové informace a síť

uname -a
Verze jádra a architektura systému
df -h
Disk Free – využití diskového prostoru připojených FS. -h čitelně, -m v MB, -l jen lokální disky
du -sh
Disk Usage – velikost adresáře. -s jen celkový součet, -b v bajtech
free -m
Množství volné a použité paměti v MB (RAM + swap)
uptime
Jak dlouho systém běží + load average (průměrná zátěž za 1/5/15 min)
hostname -I
Zobrazí IP adresu(y) počítače
ip addr / ifconfig
Zobrazí nebo nastaví síťová rozhraní. ip addr show je moderní varianta.
ping
Testuje dostupnost hostitele ICMP pakety. ping -c 4 8.8.8.8
ss / netstat
ss -tulnp zobrazí otevřené TCP/UDP porty s procesy
type
Zjistí typ příkazu (program, builtin, alias, funkce). type ls · type -a pwd

Aliasy – zkratky pro příkazy

Alias umožňuje zavést nový název pro existující příkaz. Slouží ke zkrácení delšího příkazu nebo k přidání výchozích přepínačů.

# Vytvoření aliasu:
$ alias ll='ls -la --color=auto'
$ alias c='clear'
$ alias grep='grep --color=auto'

# Zobrazení všech aliasů:
$ alias

# Odstranění aliasu:
$ unalias c

# Trvalé aliasy – uložit do ~/.bashrc

2.2 Přístupová práva a správa uživatelů

Typy souborů v Linuxu

Linux rozlišuje tři základní typy souborů, přičemž každý je reprezentován jiným prvním znakem ve výpisu ls -l:

-
Obyčejný soubor – pojmenovaná posloupnost bajtů, může obsahovat text, data nebo spustitelný program
d
Adresář – speciální soubor obsahující záznamy o souborech; přístupný jen pro čtení přes příkazy
l
Symbolický odkaz (symlink) – odkaz na jiný soubor, podobné zástupci ve Windows
c
Znakové zařízení – terminály, sériové porty (přenos znak po znaku)
b
Blokové zařízení – disky, přenos celých datových bloků (512 nebo 1024 B)

I-uzel (inode)

Každý soubor a adresář má v souborovém systému přiřazen i-uzel (inode) – datovou strukturu uchovávající metadata. Inode obsahuje: jedinečné číslo i-uzlu, vlastníka, skupinu, množinu přístupových práv, čas posledního přístupu, čas poslední modifikace, čas poslední změny i-uzlu, počet odkazů (linků) na soubor, velikost souboru v bajtech. Inode neobsahuje název souboru – ten je uložen v adresáři jako dvojice (název, číslo inode).

Přístupová práva (permissions)

Každý soubor má sadu přístupových práv pro tři kategorie uživatelů a tři typy operací:

$ ls -l soubor.txt
-rw-r--r--  1  ales  users  1024  apr 12  soubor.txt
^^^^^^^^^^     ^^^^  ^^^^^
práva         vlastník skupina

Typ  Vlastník  Skupina  Ostatní
 -    r w -    r - -    r - -
      čtení zápis  (bez spouštění)

Práva číselně (octal):
r = 4,  w = 2,  x = 1
chmod 755 = rwxr-xr-x   (7=rwx, 5=r-x, 5=r-x)
chmod 644 = rw-r--r--   (6=rw-, 4=r--, 4=r--)
chmod 700 = rwx------   (jen vlastník vše)
chmod 755 soubor
Nastaví práva číselně (rwxr-xr-x)
chmod +x skript.sh
Přidá právo spouštění pro všechny
chmod u+w,g-w soubor
Symbolicky: vlastníkovi přidá w, skupině odebere w
chown ales:users soubor
Změní vlastníka na ales, skupinu na users
chown -R ales /home/ales
Rekurzivně změní vlastníka celého adresáře

Správa uživatelů

Informace o uživatelích jsou uloženy ve třech textových souborech:

/etc/passwd
Seznam uživatelů. Formát: jmeno:heslo:UID:GID:popis:/domaci/adresar:/shell
/etc/shadow
Hashovaná hesla (vyžaduje sudo). Odděleno z bezpečnostních důvodů od passwd.
/etc/group
Skupiny uživatelů. Formát: nazev_skupiny:heslo:GID:clenove

UID (User ID) – číslo uživatele. 0 = root (kontroly oprávnění se nekontrolují). Čísla 1–99 = systémové účty. 100–499 = rezervovaní démoni. 500+ = běžní uživatelé. GID (Group ID) – uživatel musí být vždy členem alespoň jedné skupiny.

# Vytvoření uživatele (komplexní, nastaví heslo, vytvoří /home):
$ adduser vedouci
$ adduser vedouci sudo        # přiřadí do skupiny sudo

# Vytvoření uživatele (základní, bez hesla):
$ useradd -m -s /bin/bash vedouci   # -m vytvoří /home, -s nastaví shell
$ passwd vedouci                    # nastaví heslo

# Odstranění uživatele:
$ userdel -r vedouci    # -r odstraní i /home adresář

# Přidání do skupiny:
$ usermod -aG sudo ales
$ usermod -aG docker ales

# Přepnutí uživatele:
$ su - ales             # přepne jako ales (načte jeho prostředí)
$ sudo příkaz          # spustí příkaz jako root

# Zobrazení skupin uživatele:
$ groups ales
$ id ales

2.3 Roury a přesměrování

Každý proces v Unixu má tři otevřené datové kanály: stdin (fd 0 – klávesnice), stdout (fd 1 – terminál), stderr (fd 2 – chybový výstup na terminál). Tyto kanály lze přesměrovat.

Roury (Pipes)

Roura | propojuje stdout jednoho programu se stdin dalšího. Programy komunikují bez toho, aby o sobě věděly – to je síla unixové filozofie.

$ ls -la | grep "txt"               # hledá "txt" ve výpisu
$ ps aux | grep "firefox"           # najde firefox mezi procesy
$ cat log.txt | grep "ERROR" | tail -20
$ cat soubor.txt | sort | uniq -c | sort -rn | head -10
# přečti → seřaď → počítej duplicity → seřaď sestupně → prvních 10
$ ls /etc | wc -l     # počet souborů v /etc

Přesměrování

$ ls -la > vypis.txt         # stdout do souboru (přepíše)
$ echo "text" >> log.txt    # stdout přidat na konec (append)
$ sort < neserazeno.txt     # stdin ze souboru
$ příkaz 2> chyby.txt        # stderr do souboru
$ příkaz > vše.txt 2>&1    # stdout i stderr do souboru
$ příkaz > /dev/null 2>&1  # zahodit veškerý výstup
$ make | tee build.log       # vidět na terminálu I uložit do souboru

Wildcards (globbing)

Při práci se soubory lze použít zástupné znaky (globy), které bash expanduje na seznam odpovídajících názvů souborů:

*
Hvězdička – libovolný řetězec znaků (i prázdný). ls *.txt · rm backup_*
?
Otazník – přesně jeden libovolný znak. ls soubor?.txt → soubor1.txt, soubor2.txt…
[...]
Seznam znaků – jeden znak z množiny. ls soubor[123].txt nebo ls [a-z]*.sh
⚠️ Upozornění pro skripty Globy se expandují shellem ještě před spuštěním příkazu. Proto musí být proměnné v uvozovkách: "$SOUBOR". Bez uvozovek by mezery v názvech souborů způsobily problémy.

2.4 Tvorba skriptů (Shell scripting)

Shell skript je textový spustitelný soubor s příponou .sh (nebo bez přípony). Pro spuštění potřebuje interpret. První řádek musí obsahovat shebang identifikující shell:

#!/bin/bash        # Bourne Again Shell (nejběžnější)
#!/usr/bin/bash    # alternativní cesta
#!/bin/sh          # POSIX shell (přenosnější)

# Spuštění skriptu:
$ bash skript.sh             # interpret explicitně
$ chmod +x skript.sh         # nastavení práva spouštění
$ ./skript.sh                # spuštění přímo

# Debug a kontrola:
$ bash -n skript.sh          # kontrola syntaxe (bez spuštění)
$ bash -x skript.sh          # debug – vypíše každý příkaz

# Dostupné shelly:
$ cat /etc/shells
$ which bash

Proměnné a parametry skriptu

#!/bin/bash

JMENO="Ales"         # přiřazení – BEZ MEZER kolem =
VEK=25
echo "Jmenuji se $JMENO a je mi $VEK let."

DATUM=$(date +"%Y-%m-%d")    # command substitution

# Parametry skriptu (při volání: ./skript.sh arg1 arg2):
$0   # název skriptu
$1   # první parametr ($01 ve starší notaci)
$2   # druhý parametr
$@   # všechny parametry
$#   # počet parametrů
$?   # návratový kód posledního příkazu (0=úspěch)
$$   # PID aktuálního shellu

# Čtení ze vstupu:
read -p "Zadejte jméno: " JMENO
echo "Ahoj, $JMENO!"

# Návratový kód:
exit 0    # úspěch
exit 1    # chyba
exit $prom # hodnota z proměnné

Podmínky, cykly a funkce

#!/bin/bash

# ── PODMÍNKY ─────────────────────────────────
if [ -f "$1" ]; then
    echo "Soubor existuje"
elif [ -d "$1" ]; then
    echo "Je to adresář"
else
    echo "Neexistuje"
fi

# Testovací operátory pro soubory:
# -f regulární soubor  -d adresář  -e existuje
# -r čitelný  -w zapisovatelný  -x spustitelný
# -z prázdný řetězec  -n neprázdný řetězec
# == rovná se  != nerovná se (řetězce)
# -eq -ne -lt -le -gt -ge (číselné porovnání)

# ── FOR CYKLUS ────────────────────────────────
for JMENO in Ales Jana Petr; do
    echo "Ahoj, $JMENO!"
done

for i in $(seq 1 10); do
    echo "Číslo: $i"
done

for SOUBOR in *.txt; do   # globbing!
    echo "Nalezen: $SOUBOR"
done

# ── WHILE CYKLUS ──────────────────────────────
POCITADLO=0
while [ "$POCITADLO" -lt 5 ]; do
    echo "Hodnota: $POCITADLO"
    POCITADLO=$((POCITADLO + 1))
done

# ── FUNKCE ────────────────────────────────────
pozdrav() {
    local JMENO="$1"    # local = lokální proměnná
    echo "Dobrý den, $JMENO!"
    return 0
}
pozdrav "Ales"        # volání funkce

2.5 Systémové proměnné

Systémové (environmentální) proměnné jsou pojmenované hodnoty dostupné pro všechny procesy. Dědí se od rodiče k potomkovi. Příkaz env nebo printenv zobrazí všechny.

ProměnnáPříkladPopis
PATH/usr/bin:/bin:/usr/local/binAdresáře pro hledání programů (odděleny :). Nejdůležitější!
HOME/home/alesDomovský adresář. Zkratka ~.
USERalesJméno přihlášeného uživatele
SHELL/bin/bashCesta k výchozímu shellu
PWD/home/alesAktuální adresář (aktualizuje ho cd)
PS1\u@\h:\w\$Formát příkazové výzvy (prompt)
LANGcs_CZ.UTF-8Jazyk a kódování – ovlivňuje výstupy, formáty
EDITORvimVýchozí textový editor
LOGNAMEalesPřihlašovací jméno (nelze snadno změnit)
$?0Návratový kód posledního příkazu (0=úspěch)
$$12345PID aktuálního shellu
$ export MOJE="hodnota"        # nastaví a exportuje (přenese do potomků)
$ export PATH="$PATH:/home/ales/bin"  # rozšíří PATH
$ unset MOJE                    # zruší proměnnou

Pro trvalé nastavení proměnných slouží inicializační soubory: ~/.bashrc (každé nové okno terminálu), ~/.bash_profile (přihlašovací shell, SSH), /etc/environment (globálně pro všechny uživatele).


2.6 Správa procesů

Každý spuštěný program je proces s jedinečným PID. Procesy tvoří hierarchii – každý má rodiče (PPID). Proces s PID 1 (systemd nebo init) je předkem všech ostatních.

Typy procesů

Daemon
Systémové služby běžící nepřetržitě na pozadí od startu systému (sshd, systemd, cron). Nemají přidružený terminál – ve výpisu ps mají ? u TTY. Obvykle běží pod rootem.
Parent / Child
Každý proces má rodiče. Nové procesy se tvoří systémovým voláním fork(). Rodič vytvoří potomka a může čekat na jeho dokončení (wait()).
Orphan
Osiřelý proces – potomek, jehož rodič skončil dřív. Je "adoptován" procesem init/systemd (PID 1) a pokračuje v běhu.
Zombie
Mrtvý proces – skončil, ale rodič ještě nepřečetl jeho návratový kód (čeká na wait()). Zabírá místo v tabulce procesů, ale nespotřebovává CPU ani RAM.

Stavy procesů (sloupec STAT v ps/top)

RRunning

Proces běží nebo je připraven k běhu ve frontě

SSleeping

Interruptible sleep – čeká na událost, lze přerušit signálem

DUninterruptible sleep

Čeká na hardware (I/O) – nelze přerušit ani signálem

TStopped

Pozastavený (Ctrl+Z nebo signál SIGSTOP)

ZZombie

Mrtvý proces čekající na přečtení návratového kódu rodičem

NNice

Snížená priorita (pozitivní nice hodnota → méně CPU času)

Příkazy pro práci s procesy

ps
Výpis terminálových procesů. ps -aux všechny uživatelské procesy · ps -ef detailní seznam · ps -G skupina · ps -U uzivatel
ps aux | grep jméno
Najde proces podle jména
pstree
Zobrazí procesy ve stromové struktuře (nutno instalovat: apt install psmisc)
top
Dynamický monitor – všechny procesy v reálném čase, využití CPU a RAM. htop = modernější varianta
kill PID
Pošle SIGTERM (slušná žádost o ukončení). kill -9 PID = SIGKILL (okamžité zabití)
killall jméno
Ukončí všechny procesy daného jména. killall firefox
bg / fg
bg = pustí pozastavený proces na pozadí · fg = vrátí na popředí
nohup příkaz &
Spustí proces na pozadí, který přežije odhlášení (nezmizí zavřením terminálu)

2.7 Vrstvy systému Unix

┌────────────────────────────────────────────────────────────────┐ │ UŽIVATEL (člověk) │ └──────────────────────────┬─────────────────────────────────────┘ │ klávesnice / myš / GUI ┌──────────────────────────▼─────────────────────────────────────┐ │ APLIKACE / UTILITY / GUI │ │ ls, grep, vim, apache, firefox, bash skripty... │ └──────────────────────────┬─────────────────────────────────────┘ │ volání funkcí shellu ┌──────────────────────────▼─────────────────────────────────────┐ │ SHELL (interpret příkazů) │ │ bash, zsh, sh, fish – parsuje příkazy, spouští programy │ └──────────────────────────┬─────────────────────────────────────┘ │ system calls (open, fork, write…) ┌──────────────────────────▼─────────────────────────────────────┐ │ SYSTÉMOVÉ KNIHOVNY (libc6) │ │ Standardní funkce pro aplikace – rozhraní k jádru │ └──────────────────────────┬─────────────────────────────────────┘ │ system calls ┌──────────────────────────▼─────────────────────────────────────┐ │ JÁDRO (Kernel) │ │ Správa paměti · Správa procesů · Souborové systémy │ │ Správa zařízení · Síťový stack · Bezpečnost │ └──────────────────────────┬─────────────────────────────────────┘ │ přerušení, I/O porty, ovladače ┌──────────────────────────▼─────────────────────────────────────┐ │ HARDWARE │ │ CPU · RAM · Disky · Síťové karty · USB · GPU... │ └────────────────────────────────────────────────────────────────┘
Sekce 03

Linux/Unix systémy pohánějí naprostou většinu serverů na internetu. Dále si probereme klíčové síťové protokoly a jejich implementaci na linuxovém serveru.

3.1 Telnet nešifrovánoTCP port 23

Telnet (Teletype Network) je protokol pro nezabezpečenou (nešifrovanou) vzdálenou komunikaci s jiným počítačem prostřednictvím textového rozhraní. Vznikl v roce 1969. Dnes je nahrazen protokolem SSH – používá se výjimečně pro testování portů nebo přímou komunikaci s protokoly SMTP či HTTP.

Veškerá komunikace včetně hesel putuje sítí jako čistý text – kdokoliv může packet sniffingem zachytit přihlašovací údaje.

Instalace a použití (Debian/Ubuntu)

# Na serveru – instalace Telnet daemona:
$ sudo apt install telnetd

# Ověření aktivity služby:
$ systemctl status inetd

# Na klientu – instalace klienta:
$ sudo apt install telnet

# Připojení na server:
$ telnet 10.0.2.15
$ telnet 10.0.2.15 23       # explicitně port 23

# Testování jiných portů (legitimní využití!):
$ telnet smtp.server.cz 25  # test SMTP serveru
$ telnet web.server.cz 80   # test HTTP serveru – potom zapsat: GET / HTTP/1.0

# Ukončení: Ctrl+] → příkaz quit

# Klienti: Total Commander, FileZilla, příkazový řádek
🚫 Bezpečnostní varování Po otestování je vhodné službu Telnet opět odinstalovat (apt remove telnetd). Nikdy nepoužívejte Telnet pro vzdálený přístup k produkčním serverům – hesla jsou viditelná útočníkům v síti.

3.2 SSH – Secure Shell šifrovánoTCP port 22

SSH (Secure Shell) je protokol pro zabezpečenou (šifrovanou) komunikaci mezi počítači. Vyvinut v roce 1995 jako bezpečná náhrada Telnetu a rsh. Používá 128-bitové (a vyšší) šifrování. Dnes je standardem pro vzdálený přístup k serverům. Součástí SSH je i SFTP (SSH File Transfer Protocol) pro přenos souborů.

22TCP port
OpenSSH
Asymetrická + symetrická kryptografie
✅ Plné šifrování, fingerprint, klíče

Instalace OpenSSH serveru

# Instalace OpenSSH serveru:
$ sudo apt install openssh-server

# Ověření pomocí procesů:
$ ps -aux | grep ssh

# Ověření stavu služby:
$ systemctl status ssh

# Start / stop / reload:
$ systemctl start ssh
$ systemctl reload sshd    # nebo: service sshd reload

Fingerprint – ověření identity serveru

Při prvním připojení na server se zobrazí fingerprint (otisk prstu) veřejného klíče serveru (RSA). Pokud mu věříte, potvrdíte yes – klíč se uloží do ~/.ssh/known_hosts. Při dalším připojení se ověřuje, zda se klíč nezměnil. Pokud ano, SSH vydá varování (možný útok man-in-the-middle).

Konfigurace SSH serveru (sshd_config)

Konfigurační soubory SSH jsou v adresáři /etc/ssh/. Hlavní konfigurační soubor serveru je sshd_config.

# /etc/ssh/sshd_config – důležitá nastavení:

Port 22                       # změňte na nestandardní pro bezpečnost
PermitRootLogin no            # zakáže přihlášení jako root (doporučeno!)
# PermitRootLogin prohibit-password  – root jen přes klíč, ne heslo
PasswordAuthentication no     # zakáže hesla, nutné mít klíče
PubkeyAuthentication yes      # povolí klíčové ověřování
AllowUsers ales jana spiderman # povolí přístup jen těmto uživatelům
MaxAuthTries 3                # max 3 pokusy o přihlášení
Banner /etc/ssh/ssh_banner.txt # uvítací banner zobrazený před přihlášením

# Po každé změně – reload:
$ systemctl reload sshd

# Vytvoření banneru:
$ echo "Welcome to SSH service on 10.0.2.15" > /etc/ssh/ssh_banner.txt

SSH klíče a vzdálené přihlášení

# Generování páru klíčů:
$ ssh-keygen -t ed25519 -C "ales@mujpocitac"
# Vytvoří: ~/.ssh/id_ed25519 (privátní) a ~/.ssh/id_ed25519.pub (veřejný)

# Kopírování klíče na server:
$ ssh-copy-id ales@10.0.2.15
# Přidá veřejný klíč do ~/.ssh/authorized_keys na serveru

# Připojení (bez hesla po nastavení klíčů):
$ ssh ales@10.0.2.15
$ ssh -p 2222 ales@server.cz   # nestandardní port

# Spuštění příkazu bez interaktivního shellu:
$ ssh ales@server.cz 'df -h'

# Přenos souborů – SCP:
$ scp soubor.txt ales@10.0.2.15:/home/ales/
$ scp -r adresář/ ales@server.cz:/backup/

# Interaktivní přenos – SFTP:
$ sftp ales@server.cz

# Ukončení SSH spojení:
$ logout

Klienti SSH pro Windows: Total Commander, FileZilla, WinSCP, nebo vestavěný Windows Terminal.

3.3 FTP – File Transfer Protocol nešifrovánoTCP port 20 / 21

FTP je protokol pro nezabezpečený (nešifrovaný) přenos souborů mezi počítači v síti. Využívá dva TCP porty: port 21 pro příkazy a řízení, port 20 pro přenos dat (8-bitový binární nebo ASCII s konverzí konců řádků). Pracuje v aktivním nebo pasivním režimu.

Klienti FTP pro Windows: Total Commander, FileZilla, WinSCP, správce souborů Windows.

Aktivní vs. pasivní režim

AKTIVNÍ REŽIM (Active Mode): Klient → Server: PORT 1025 (klient oznamuje svůj datový port) Server → Klient: připojení na port 1025 (datový kanál) ⚠ Problém: Firewall klienta blokuje příchozí spojení! PASIVNÍ REŽIM (Passive Mode) – doporučeno: Klient → Server: PASV Server → Klient: "Připoj se na port 5000" (server oznamuje datový port) Klient → Server: připojení na port 5000 ✅ Firewall klienta je spokojen – jen odchozí spojení.

VSFTPD – Very Secure FTP Daemon

VSFTPD je rychlý, stabilní a bezpečný FTP server, standardní součástí většiny linuxových distribucí. Mezi jeho funkce patří: podpora IPv6, pasivní i aktivní mód, šifrování přes SSL, podpora lokálních i anonymních uživatelů, virtuální uživatelé (PAM), limity datového toku, různá konfigurace per-IP nebo per-uživatel.

# Instalace vsftpd:
$ sudo apt install vsftpd

# Ověření procesů:
$ ps -aux | grep vsftpd

# Stav a restart:
$ systemctl status vsftpd
$ systemctl restart vsftpd    # nebo: service vsftpd restart

# Konfigurační soubor: /etc/vsftpd.conf
# Manuál: man vsftpd.conf

Klíčová nastavení /etc/vsftpd.conf

# /etc/vsftpd.conf – přehled nejdůležitějších direktiv:

listen=YES              # po spuštění naslouchat na IPv4
listen_ipv6=NO          # naslouchat na IPv6 (alternativa k listen)
listen_address=10.0.2.15 # naslouchat na konkrétní IP

anonymous_enable=NO     # zakázat anonymní přístup (doporučeno!)
local_enable=YES        # povolení lokálních (systémových) uživatelů
write_enable=YES        # povolení změn (nahrávání, mazání)

xferlog_enable=YES      # logování přenosů
xferlog_file=/var/log/vsftpd.log  # cesta k log souboru

ascii_upload_enable=YES   # ASCII mód pro nahrávání (konverze konců řádků)
ascii_download_enable=YES # ASCII mód pro stahování

ftpd_banner=Welcome to FTP Service  # uvítací banner

# Uzamčení uživatelů v jejich domovském adresáři (chroot):
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/chroot_list   # seznam výjimek
allow_writeable_chroot=YES

# Nastavení přístupu pomocí user_listu:
userlist_enable=YES
userlist_file=/etc/user_list        # soubor s povoleným uživateli
userlist_deny=NO                    # seznam je POVOLENÍ (ne zakázání)

# Šifrování (FTPS – FTP přes SSL/TLS):
ssl_enable=YES
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ProtokolPortŠifrováníPoznámka
FTP21❌ ŽádnéNezabezpečený, nepoužívat pro citlivá data
FTPS21/990✅ TLS/SSLFTP + TLS vrstva (Explicit nebo Implicit)
SFTP22✅ SSHNení FTP! Subsystém SSH. Doporučeno.
SCP22✅ SSHJednorázový přenos přes SSH

3.4 DNS – Domain Name System UDP/TCP port 53

DNS je protokol pro překlad číselné IP adresy na doménové jméno a naopak. IP adresy: IPv4 (32-bitové, čísla oddělená tečkou, např. 10.0.2.15) a IPv6 (128-bitové, hexadecimální čísla oddělená dvojtečkou). DNS je distribuovaná hierarchická databáze – telefonní seznam internetu.

Hierarchie domén

. (Root) ← nejvyšší úroveň / | \ .cz .com .org ← TLD (Top Level Domain) / \ / \ vutbr seznam google amazon ← SLD (Second Level Domain) | fit (mail, www, us.sales...) ← domény 3., 4. úrovně Příklad: mail.debian.cz . → Root / .cz → TLD / debian.cz → SLD / mail → 3. úroveň

Typy DNS záznamů

TypPopisPříklad
TTLTime To Live – životnost záznamu v sekundách86400 (24 h)
SOAStart of Authority – začátek zóny, info o primárním NS a administrátoroviobsahuje serial, refresh, retry…
NSName Server – server autoritativní pro danou zónudebian.cz → ns.debian.cz
AAddress Record – mapuje doménu na IPv4www.debian.cz → 10.0.2.15
AAAAMapuje doménu na IPv6www → 2001:db8::1
PTRPointer Record – reverzní překlad (IP → doménu), v reverse zónách10.0.2.15 → www.debian.cz
MXMail Exchange – poštovní server pro příjem e-mailůdebian.cz → mail.debian.cz (10)
CNAMECanonical Name – alias, přesměrování domény na jinou (pro subdomény)www.firma.cz → firma.cz
TXTTextový záznam – SPF, DKIM, ověření domény"v=spf1 include:…"
@Relativní cesta – zastupuje aktuální zónu (kořen zóny)@ IN A 10.0.2.15
INInternet – třída DNS záznamu (internetový záznam)vždy IN pro internet

Průběh DNS dotazu

1. Prohlížeč zkontroluje lokální cache 2. Dotaz na lokální DNS resolver (router / ISP server z /etc/resolv.conf) 3. Resolver → Root server: "Kdo spravuje .cz?" 4. Root → CZ.NIC: "Jdi se zeptat CZ.NIC serverů" 5. Resolver → CZ.NIC: "Kdo spravuje debian.cz?" 6. CZ.NIC → ns.debian.cz: "Jdi se zeptat ns.debian.cz" 7. Resolver → ns.debian.cz: "Jaká je IP www.debian.cz?" 8. ns.debian.cz → 10.0.2.15 9. Resolver uloží do cache (na dobu TTL) a vrátí klientovi

BIND9 – instalace a konfigurace DNS serveru

BIND (Berkeley Internet Name Domain) je nejrozšířenější DNS server na světě.

# Instalace BIND9:
$ sudo apt install -y bind9 bind9utils bind9-doc dnsutils

# Ověření stavu a povolení:
$ systemctl status bind9
$ systemctl enable bind9

# Nastavení hostname serveru:
$ echo 'debian.cz' > /etc/hostname
# Přidání do /etc/hosts:
10.0.2.15  debian.cz

# Konfigurační soubory v /etc/bind/:
# named.conf       – hlavní konfigurační soubor
# named.conf.local – lokální nastavení (zóny)

# Restart a kontrola chyb:
$ systemctl restart bind9
$ named-checkzone debian.cz /etc/bind/debian.cz
$ named-checkzone 10.0.2.15 /etc/bind/reverse.2.0.10

Definice zón v named.conf.local

# /etc/bind/named.conf.local
zone "debian.cz" {
    type master;
    file "/etc/bind/debian.cz";       # forward zóna
};

zone "2.0.10.in-addr.arpa" {
    type master;
    file "/etc/bind/reverse.2.0.10";  # reverse zóna
};

Soubor forward zóny (IP → doménové jméno)

# /etc/bind/debian.cz
$TTL 86400
@   IN  SOA  debian.cz.  admin.debian.cz. (
        2024041201  ; Serial (datum+číslo, inkrementovat při změně!)
        3600        ; Refresh
        1800        ; Retry
        604800      ; Expire
        86400 )     ; Negative Cache TTL

; Name server:
@   IN  NS   ns.debian.cz.

; Mail server:
@   IN  MX  10  mail.debian.cz.

; A záznamy (doména → IP):
ns      IN  A   10.0.2.15
www     IN  A   10.0.2.15
mail    IN  A   10.0.2.15

; CNAME alias:
ftp     IN  CNAME  www.debian.cz.

Soubor reverse zóny (IP → doménové jméno)

# /etc/bind/reverse.2.0.10
$TTL 86400
@   IN  SOA  debian.cz.  admin.debian.cz. (
        2024041201 3600 1800 604800 86400 )

@   IN  NS   ns.debian.cz.

; PTR záznamy – pouze koncová část IP adresy:
15  IN  PTR  debian.cz.    ; 10.0.2.15 → debian.cz
16  IN  PTR  klient.cz.    ; 10.0.2.16 → klient.cz

Diagnostické nástroje DNS

$ nslookup google.com           # základní dotaz
$ nslookup -type=MX gmail.com   # MX záznamy
$ dig google.com A              # podrobný výpis A záznamu
$ dig +short google.com         # jen výsledek
$ dig @8.8.8.8 google.com       # dotaz na konkrétní server (Google DNS)
$ dig -x 10.0.2.15              # reverzní lookup
$ cat /etc/resolv.conf          # nastavené DNS servery
$ cat /etc/hosts                # lokální záznamy (priorita před DNS!)

3.5 DHCP – Dynamic Host Configuration Protocol UDP port 67/68

DHCP automaticky přiděluje síťovou konfiguraci zařízením v lokální síti. Klient komunikuje na UDP portu 68, server naslouchá na UDP portu 67. Server u každého klienta eviduje přidělenou IP adresu a dobu přidělení (lease time).

DORA – průběh přidělení IP adresy

Klient DHCP Server │─── DHCPDISCOVER (broadcast) ──────────►│ │ "Je tady DHCP server? Potřebuji IP" │ │ Src: 0.0.0.0:68 Dst: 255.255.255.255:67 │ │ │◄── DHCPOFFER (broadcast) ──────────────│ │ "Nabízím ti IP 192.168.1.50" │ │ + maska, brána (gateway), DNS, lease │ │ │ │─── DHCPREQUEST (broadcast) ────────────►│ │ "Chci IP adresu, kterou jsi nabídl" │ │ (broadcast = ostatní DHCP servery │ │ vidí, že jsem přijal TUTO nabídku) │ │ │ │◄── DHCPACK (unicast) ─────────────────│ │ "Schváleno! IP 192.168.1.50 je tvoje"│ │ Klient nastaví IP adresu │ Přidělená konfigurace klientovi: IP: 192.168.1.50 / 255.255.255.0 Gateway: 192.168.1.1 (výchozí brána) DNS: 10.0.2.15 (DNS server ze sítě) Domain: debian.cz Lease: 86400 s (24 hodin)

Po vypršení lease time se klient pokusí o obnovu (renewal). Pokud zařízení zmizí ze sítě, adresa se po vypršení vrátí do poolu. Možná je také statická rezervace – server vždy přidělí stejnou IP konkrétní MAC adrese.

ISC DHCP Server – instalace a konfigurace

# Instalace ISC DHCP serveru:
$ sudo apt install isc-dhcp-server

# Nastavení síťového rozhraní v /etc/default/isc-dhcp-server:
INTERFACESv4="enp0s3"       # rozhraní, na kterém bude server naslouchat

# Konfigurace v /etc/dhcp/dhcpd.conf:
option domain-name "debian.cz";           # doména pro DHCP klienty
option domain-name-servers 10.0.2.15;     # DNS server
default-lease-time 600;                   # výchozí čas pronájmu (s)
max-lease-time 7200;                      # maximální čas pronájmu (s)

subnet 10.0.2.0 netmask 255.255.255.0 {
    range 10.0.2.20 10.0.2.50;           # rozsah přidělovaných IP
    option routers 10.0.2.1;             # výchozí brána (gateway)
    option subnet-mask 255.255.255.0;
    option broadcast-address 10.0.2.255;
}

# Restart a ověření stavu:
$ sudo systemctl restart isc-dhcp-server
$ sudo systemctl status isc-dhcp-server

# Sledování přidělování IP v reálném čase:
$ sudo journalctl -u isc-dhcp-server -f

# Záznamy o přidělených IP (leases):
$ cat /var/lib/dhcp/dhcpdclient.leases

# Ověření přidělení IP na klientu:
$ ip a
$ ping 10.0.2.15

Konfigurace klienta pro DHCP

# /etc/network/interfaces – nastavení dynamické IP na klientu:
auto enp0s3
iface enp0s3 inet dhcp

# Restart síťové služby:
$ sudo systemctl restart networking

# Manuální release / renew:
$ sudo ifdown enp0s3   # uvolní IP adresu
$ sudo ifup enp0s3     # získá novou IP adresu
Sekce 04

Existuje několik způsobů, jak spustit Unix/Linux na Windows. Od lehkých emulátorů příkazového řádku přes plnou virtualizaci až po moderní integraci přímo do Windows 11.

4.1 Oracle VM VirtualBox

VirtualBox je víceplatformní virtualizační program zdarma od Oracle (stažení z oracle.com/virtualization/virtualbox). Umožňuje provozovat několik OS na počítačích se systémy Windows, Mac OS, Linux nebo Oracle Solaris.

Klíčové funkce VirtualBoxu

Snímky (Snapshots)
Uloží aktuální stav virtuálního stroje včetně OS a dat. Před rizikovým testem vytvoříte snapshot – pokud test selže, jedním kliknutím obnovíte původní stav. Ideální pro studium (lze cokoliv rozbít).
Seamless mode
Aplikace z virtuálního stroje se zobrazí přímo na ploše hostitelského systému (bez okna VM). Zdánlivě pracujete s Windows aplikacemi v Linuxu nebo naopak.
Sdílené složky
Nasdílí vybrané složky z hostitelského systému do virtuálního i bez funkčního síťového prostředí.
Schránka
Přenos obsahu clipboard (Ctrl+C/V) mezi hostitelským a virtuálním systémem.
Hardwarová virtualizace
Podporuje technologie Intel VT a AMD-V pro výrazně vyšší výkon VM.
Podpora více jazyků
Přepínání jazyků, podpora externích jazykových souborů.
CLI ovládání
Celý VirtualBox lze ovládat přes příkazový řádek (VBoxManage).

Postup vytvoření virtuálního počítače

V Oracle VM VirtualBox Manager: Nový → Pojmenovat VM, vybrat typ (Linux) a verzi (Debian 64bit) → Nastavit RAM (doporučeno ≥ 2 GB) → Vytvořit virtuální disk (VDI soubor, dynamicky alokovaný, min. 20 GB) → V nastavení VM připojit ISO soubor instalačního disku → Spustit a projít instalací Debianu/Ubuntu.

Vypnutí DHCP VirtualBoxu

Při konfiguraci vlastního DHCP serveru ve VM je nutné vypnout vestavěný DHCP VirtualBoxu: Soubor → Předvolby → Síť → název sítě → v detailech pro NAT síť odškrtnout Podpora DHCP.

4.2 WSL 2 – Windows Subsystem for Linux

WSL 2 je nejmodernější způsob spuštění Linuxu na Windows 10/11. Spouští skutečné linuxové jádro v lehkém Hyper-V VM. Plná kompatibilita syscalls, Docker Desktop nativně, GUI aplikace přes WSLg.

# PowerShell jako Administrator:
wsl --install
wsl --list --online           # dostupné distribuce
wsl --install -d Ubuntu-22.04
wsl                           # spuštění WSL
# Windows disk C: dostupný z WSL jako /mnt/c/

4.3 Cygwin

Cygwin (od 1995) je kompatibilní vrstva emulující POSIX API na Windows. Obsahuje bash, grep, sed, awk, ssh, rsync, git přeložené pro Windows jako nativní .exe soubory. Vhodný pro starší skripty vyžadující POSIX rozhraní bez celého Linuxu.

4.4 Plná virtualizace – VMware, Hyper-V

NástrojVýhodyNevýhody
VirtualBoxZdarma, open source, snadné, snapshotsPomalejší, sdílí zdroje
VMware WorkstationVýkonnější, lepší integracePlacené (Workstation Pro)
Hyper-VVestavěno do Windows Pro, rychlé (Type 1)Konflikty s VirtualBoxem

4.5 Docker – kontejnerizace

Docker používá kontejnerizaci – sdílí jádro hosta, ale izoluje souborový systém, procesy a síť. Kontejnery jsou mnohem lehčí než VM (startují v sekundách). Ideální pro spouštění aplikací v přesně definovaném prostředí.

$ docker pull ubuntu:22.04
$ docker run -it ubuntu:22.04 bash   # Ubuntu shell na Windows
$ docker run -d -p 8080:80 nginx     # nginx server
SituaceDoporučení
Studium Linuxu, serverové prostředí, testováníVirtualBox – kompletní izolace, snapshots
Každodenní vývoj, Docker, integrace s WindowsWSL 2 – nejlepší integrace
Jen git a základní bash příkazyGit Bash – lehké
Přenositelné aplikace s linuxovými závislostmiDocker – kontejnery

Závěr

Unix/Linux je filozofie: každý nástroj dělá jednu věc dobře, vše je soubor, textový výstup jednoho programu je vstupem druhého, konfigurace je čitelný text. Tyto principy z 70. let pohánějí dnes internet, mobilní telefony (Android), cloud a datová centra.

Příkazový řádek + bash skripty = nejefektivnější automatizace. Síťové služby SSH, DNS a DHCP jsou základní infrastruktura každé sítě. Virtualizace (VirtualBox, WSL 2) umožňuje bezpečně experimentovat bez rizika.

Materiál zpracován dle školních prezentací OPS-linux a rozšířen o hluboký výklad principů.