Instalace, zabezpečení a správa Ubuntu Serveru

Server je počítačový program nebo zařízení poskytující služby nebo zdroje jiným počítačům nebo klientům (uživatelům) v síti. Obvykle jde o zařízení pracující nepřetržitě. Lze jej provozovat samostatně stejně jako si jej pronajmout ve formě služby.

Abstrakt

Počítačové servery lze provozovat ve třech režimech:

  • Moderní SAAS cloudový režim, nabízen firmami jako Amazon (Web Services - AWS), Microsoft (Azure), Google (cloud) a další. V tomto režimu se pracuje na pozadí s docker composerem, respektive uživatel interaguje s ready-to-use docky skrze UI rozhraní a k linuxovým příkazům a konfiguračním souborům se běžný uživatel jen ztěží dostane.
  • Server prostřednictvím hostingových služeb - je forma, kdy je server pronajímán nebo hostován ve specializovaném datacentru. Součástí mohou být služby Linuxového administrátora.
  • Lokální server - server provozovaný lokálně pro firemní a domácí účely - interní potřeby.

Vhodný typ provozu je odvislý od potřeb konkrétního uživatele. Lokální řešení je vhodné pro sběr a uchování dat, validaci datových toků, řídící systémy bez přístupu zvěnčí apod. Zkrátka aplikace se specifickým use-casem, kdy typicky v těchto případech je provoz vlastního serveru oproti cloudovým a hostovaným službám ekonomičtější variantou. Počítač, na němž server běží, si v takovém případě stavíte sami a tedy i každá jeho komponenta může být tou možná nejoptimálnější pro Váš účel. Právě tété variantě se věnuje tato publikace.

Postavení PC, instalace, zabezpečení i správa serveru

Tato publikace Vás provede úskalými výběru komponent, instalace Ubuntu Serveru, jeho zabezpečením, prací v něm i správou. V prvé řadě nejde o expertní publikaci, ale základní principiální vysvětlení OS Ubuntu Server jako takového a především jednoduchého průvodce nastavením prostřednictvím linuxových příkazů. I když se ovládání Ubuntu skrze příkazovou řádku zdá na první pohled komplikované, jde jen o to si na pro nás dnes již "neuživatelsky přívětivé rozhraní" příkazového řádku zvyknout.

Hostovaný (Cloud) vs Lokální server

Cloudový server je typicky server umístěný v datacentru napojeném na páteřní internetovou síť. Jeho hardware je spravován pracovníky serverovny datacentra a klient jej využívá jako vzdálený počítač pro své potřeby - typicky nepřetržitě běžící webové aplikace a příležitostně využívané výkonnostně náročné aplikace. Oproti tomu, lokální server máte umístěn ve své nemovitosti a stará se o jakékoli vaše interní potřeby v rámci lokální i internetové sítě.

S výběrem lokálního vs cloudového serveru Vám pomůže následující srovnání:

Cloudový server

  • Přístupný z jakéhokoli počítače v Internetu
  • Napojen na páteřní internetovou síť (rychlý tok dat)
  • Nízké nároky na správu a znalosti kolem serverů
  • Není potřeba se starat o hardware a OS, uživatel řeší pouze správu aplikací
  • Snadná škálovatelnost
  • Zabezpečení spravováno poskytovatelem služby
  • Data jsou uložena vždy v Cloudu, lze je šifrovat.
  • Omezené možnosti přizpůsobení

Lokální server

  • Přístup z počítačů v lokální síti. Po povolení i z internetu.
  • Rychlost toku dat z a na internet odvislá od internetového připojení
  • Uživatel se stará o hardware, OS i aplikace
  • Možnosti přizpůsobení - CPU, SDD, RAM, GPU - přesně dle potřeb
  • Škálovatelnost přes změny v hardwarové infrastruktuře a následné ručnní nakonfiguraci.
  • Data mohou být uložena pouze lokálně.
  • Zabezpečení plně v režii správce serveru

Jedním z nejdůležitějších parametrů je ovšem cena. Ta se v případě cloudu platí měsíčně, u lokálního serveru jde o jednorázový náklad za hardware a případně o náklady na pracovníka starající se o jeho správu. Tyto náklady jsou variabliní a mohou se značně lišit. Lokální server dává největší smysl tehdy, když potřebujete něco extra. Napříkald disk o nadstandardní velikosti a rychlosti. S ním v případě cloudu budete mít spojené výkonné CPU, které však nepotřebujete. Výsledkem bude, če cena měsíčního předplatného Cloudu vyjde na to samé, co pořízení lokálního serveru. Jeho nastavení poté může být jednorázovou záležitostí (den práce), posléze vyžadující drobnou údržbu (v průměru hodina měsíčně).


Následující kapitoly publikace se věnují operačnímu systému Ubuntu Server. Tento systém může běžet na jakémkliv počítači i serveru. Publikace je nicméně pro vás relevantní jen tehdy, spravujete li server ručně namísto automatizovaného rozhraní, které je součástí cloudových služeb, jakými jsou Amazon Web Services, Microsoft Azure apod.

Výběr HW komponent

Ubuntu Server je z pohledu náročnosti OS možné nainstalovat téměř na jakýkoli počítač disponující uložištěm alespoň 2GB (kdy uložištěm může být i flash disk), výběr HW komponent je tedy odvislý čistě od aplikací a zátěže, kterým Ubuntu Server plánujete vystavovat. Použít můžete počítač starý, stejně jako postavit zcela nový.

Server tedy nemusí být specializované zařízení prodávané jako "server", využívající serverové komponenty, nýbrž libovolné zařízení sloužící pro serverové operace. Na server lze použít například prostorově i energeticky úsporné a přesto velmi výkonné mikropočítače Intel NUC. Stavba i zprovoznění NUC je jednoduchá - koupená skříň s CPU a zdrojem se jen doplní o SSD + RAM a zapojí do zásuvky. S výběrem CPU, SSD a RAM nejen pro NUC pomohou podkapitoly níže.

Poznámka: Intel oznámil v létě 2023 konec výroby počítačů řady Intel NUC. Stále však existuje řada alternativ s obdobným designem.

Výběr disku

Disk na prvním místě, a to z jednoduchého důvodu - jde o nejkritičtější komponentu. Obsahuje nainstalovaný operační systém (OS) Ubuntu Server, veškeré konfigurace i data. Jde tedy o komponentu s časově nejnáročnější replikací a současně komponentu, která lze mezi počítačemi snadno fyzicky přenášet - ať jej zapojíte do jakéhokoliv počítače, operační systém se automaticky sám načte a bude běžet.

Výběr správného disku je nejdůležitější v momentě, kdy používáte jeden server pro vše (nevyužíváte propojení více nezávislých serverů (databázový, souborový, výpočetní...)). V takovém momentě je vhodné vybrat co největší a nejrychlejší disk v rámci určeného rozpočtu.

Nejlepší výkonové vlastnosti aktuálně nabízí SSD disky typu NVMe, konstrukce M.2. 2TB disk pořídíte v 2Q/2023 za ~3000 Kč, 4Tb pak za 9,000Kč. Důležitým parametrem takového disku je životnost (počet cyklu přepsání) a samotná rychlost čtení a zápisu. Zajímavou nabídkou mi přijde SSD disk Kingston SSD KC3000. Při osazování počítače SSD diskem nezapomeňte na chladící podložku pro odvod tepla.

Výše zmíněné disky se používají pro běh OS a aplikací s vysokými nároky na rychlost čtení a zápisu dat na disk. Pro ukládání běžných souborů lze použít standardnější typ SSD a HDD disků. Většina počítačů (včetně vyššího NUC) podporuje kombinovanou zástavbu SSD i HDD diskem. V případě výběru NUC, i když o HDD disku neuvažujete, vyšší varianta skříně vlivem lepšího proudění vzduchu zajišťuje lepší chlazení.

Výběr CPU

Intel NUC a alternativní zařízení stejného konceptu se prodávají v mnoha variantách lišících se použitým procesorem (CPU). Podrobné informace o každém CPU zjistíte obvykle na stránkách výrobce (např: Intel i9 12900K, AMD Ryzen 5950X ), vzájemné srovnání výkonu procesorů dle různých benchmarků poté jednoduše vložením do Googlu dotazu "procesor 1 vs procesor 2", např: "i5-1135g7 vs i7-1260p", kdy na Vás vyskočí řada výsledků stránek nabízející ucelené a přehledné srovnání.

Logicky, v momentě, kdy neznáte potřebné výkonnostní nároky plánované aplikace provozované na daném serveru, ať už z důvodu absence možnosti kvalifikovaného odhadu nebo znalosti měřítka a škálování, principielně je vhodnější na začátku volit CPU výkonnější (vyšší počet výkonostně i energeticky orientovaných jader, vláken, běžících na vyšších frekvencích) a až když dané CPU nedostačuje, rozšiřovat server o další servery (tvorba struktury specializovaných dílčích samostatných serverů), kdy již máte představu o potřebném výkoně pro konkrétní specializace. Možností je využití serverových základových desek s více sockety umožňujícími současné napojení 2 a více totožných CPUs, ovšem vzhledem k ceně desek je toto řešení ekonomicky výhodné pouze ve speciálních případech.

Výběr RAM

Ram se vyrábí ve 2 velikostech - pro běžné skříně (provedeni DIMM) a pro notebooky (provedení SO-DIMM). Ty notebookové se používají rovněž v minipočítačích, jako je Intel NUC a jemu podobní, jejichž velikost zástavbu RAm v klasické velikosti neumožňuje.

Operační paměti RAM se prodávají v definovaných velikostech (4, 8, 16, 32, 64... GB) a obvykle je výkonostně optimálnější místo 1 větší osadit počítač 2-ma menšími (namísto 1x32Gb použít 2x 16GB).

Moderní DDR4 Ram paměti se dále liší frekvencí paměti [MHz] (vyšší je lepší) a časováním ram CL (nižší je lepší).

Bios nastavení

Jakýkoli počítač ihned po spuštění umožňuje vstup do nastavení a úpravy Bios. Bios je firmware používaný k poskytování runtime služeb pro operační systémy a programy a k provádění inicializace hardwaru během procesu spouštění. Z předchozí věty je zřejmé, že se spouští ještě před spuštěním Operačního systému, přičemž v tento moment je zobrazována úvodní obrazovka, která zobrazuje nápovědu funkčních kláves pro "bootovací zařízení" (obvykle F11), vstup do bios nastavení (obvykle F2) apod.

V Bios nastavení lze upravovat řadu vlastností počítače, a to pro stav jeho činnosti i nečinnosti. Jelikož se v této publikaci zabýváme konfigurací serveru, za zmíněná stojí následující:

  • Chování při výpadku proudu - U serveru je ovykle vyžadováno, aby byl vždy online a přístupný. Bios nastavení obsahuje v tomto směru užitečnou vlastnost After Power Failure, skrze níž se definuje chování po obnovení dodávky elektřiny (např. znovuobnovení po výpadku / zapojení počítače do elektřiny). Skrze možnost Power On lze definovat, že počítač se vždy při obnovení elektrického proudu sám automaticky spustí - tedy dokud jej nevypneme vlastním požadavkem, kdykoliv bude mít přísun elektřiny, bude se sám udržovat automaticky spuštěný.
  • Nastavení chlazení - Dle preferencí a potřeb lze upravovat výkonnostní profil ventilátorů od preference ticchosti po preferenci maximálního chlazení.
  • Fast boot - Zajistí rychlejší boot systému. V tomto režimu se neberou na zřetel připojená a bootovací zařízení. Pro opětovnou reinstalaci systému je nutné v případě Intel NUC držet při zapínaní spoštěcí tlačítko po dobu 3 vteřin. poté je možné vstoupit opětovně do BIOS nastavení,

BIOS verze

V počítači je vhodné zkontrolovat aktuální verzi BIOS a případně upgradovat na novější, je-li k dispozici. BIOS verze jsou průběžně aktualizovány jako každý jiný firmware, a to buď za účelem přidání funkcí nebo opravy chyb.

BIOS informace, včetně verze, lze zjistit i z následně nainstalovaného linuxového OS Ubuntu Server, a to dotazem sudo dmidecode | less.

Instalace Ubuntu Serveru

OS Ubuntu Server je zdarma. Instalace se zpravidla provádí z flash disku (o velikosti alespoň 4GB) s instalačním ISO souborem. Ten snadno vytvoříte stažením instalačního souboru Ubuntu Server a jeho nahráním na zformátovaný flash disk (formát FAT32) prostřednictvím softwaru pro tvorbu bootovacích flash disků. Ubuntu desktop nabízí program Startup Disk Creator. Obdobné nástroje jsou i pro systém Windows.

Je třeba mít pouze na paměti, že pokud bootovací flash disk má sloužit pro přeinstalaci aktuálního OS Ubuntu Server, měla by být bootovací verze ve stejné nebo vyšší verzi OS. V opačném případě budete čelit při bootu chybě "Verification failed: (0x1A) Security Violation".

Jakmile máte bootovací flash disk, vložte jej do USB portu počítače, na němž chcete OS Ubuntu server nainstalovat, počítač pusťte a při bootovací obrazovce stiskněte (a držte) klávesu F11. Naskočí obrazovka výběru disku, který se má při bootování použít. Zvolte váš flash disk.

Dále již postupujte dle instrukcí instalátoru.

Po instalaci můžeme OS Ubuntu Server ihned aktualizovat na poslední možnou verzi.

sudo apt -y update && sudo apt -y upgrade
sudo apt dist-upgrade && sudo apt autoremove

Zabezpečení Ubuntu Serveru

Zabezpečení Ubuntu Serveru je esenciální záležitostí, jehož důležitost roste společně s citlivostí na něm uložených dat a běžících aplikací.

Zabezpečení přihlašování

V bodech níže nastavíme bezpečnostní strukturu, kdy ke vzdálenému přihlašování se bude používat SSH klíč spolu s 2FA (Google authenticator). K lokálnímu přihlašování bude postačovat stále jen heslo (pro případ ztráty SSH klíče a možnosti nahrání nového) společně s 2FA (Google authenticator).

  • Zabezpečení počítačů, z kterých se k serveru připojuje

    K serveru se zpravidla přistupuje vzdáleně, skrze SSH, a to prostřednictvím různých autentizačních metod. Dobrou praxí tedy je mít v bezpečnostním pořádku počítače, z nichž se k serveru připojuje tak, aby se předcházelo možnosti odcizení přihlašovacích údajů k serveru z těchto zařízení.

    Na systému Windows k přihlašování budeme používat klienta Putty staženého z oficiálního webu.

  • Nastavení vzdáleného připojování k serveru pomocí SSH klíče

    Výchozí způsob přihlašováni k Ubuntu serveru přes SSH je pomocí uživatelského jména a hesla. Nevýhodou je, že vaše heslo je obvykle něco poněkud „krátkého“ a náchylného k brute-force útokům. SSH klíč je oproti heslu exponenciálně těžší prolomit a tedy při správné práci s ním je bezpečnost přihlašování zásadně navýšena.

  • Změna defaultního SSH portu (22)

    Port 22 je používán v případě SSH připojení jako defaultní. Jinými slovy, jde o první port, který případný útočník testuje. Dobrou praxí je tedy tento port změnit, a to na hodnotu mezi 1024 a 49151. To se provede následujícím způsobem:

    sudo ss -tulpn | grep ':YourSSHPortNumber', např: sudo ss -tulpn | grep ':1234'.

    Jestliže je port již obsazen, dostaneme červeně upozornění. Pokud je volný, odpověď bude prázdná. V takovém případě jej můžeme nastavit v souboru sudo nano /etc/ssh/sshd_config skrze klíč Port.

    Změna nabyde v platnost restartem SSH serveru příkazem sudo systemctl restart ssh. Nyní při přihlašování používejte namísto portu 22 nově zvolený port.

  • Nastavení 2-faktorového ověření (2FA)

    Dvoufaktorové ověření (2FA) je bezpečnostní proces, ve kterém je nutné k získáním přístupu k serveru nutné poskytnout 2 odlišné formy autentizace. Tento proces je navržen tak, aby poskytoval vyšší úroveň bezpečnosti než jednoduchá autentizace pomocí uživatelského jména a hesla (což je forma jednofaktorové autentizace). 2FA tím ztěžuje potenciálním útočníkům neoprávněný přístup k serveru, i když se jim podaří získat heslo uživatele.

Nastavení Firewallu

Ubuntu servery mohou používat uncomplicated firewall (UFW) bránu k omezení příchozího provozu na server. Brána firewall tedy pomáhá zabránit nechtěným připojením k vašemu serveru. Nainstalovaná by měla být již ve výchozím stavu, příkazem sudo apt install ufw se o tom ujistíme.

Aplikování výchozího nastavení pro UFW

sudo ufw default deny incoming
sudo ufw default allow outgoing

V tomto stavu je veškerý příchozí traffic zakázán a odchozí povolen. Nutným krokem je povolení portu pro SSH přihlášení na TCP protokolu. Výchozím portem pro připojení je port 22, v rámci bezpečnosti však může být změněn. Používaný port zjistíte v souboru sudo nano /etc/ssh/sshd_config - hledejte parametr Port. Povolte příchozí traffic na něj příkazem sudo ufw allow YourSSHPortNumber/tcp, např. sudo ufw allow 1234/tcp. Současně můžete zakázat tcp na výchozím portu 22 příkazem sudo ufw deny 22/tcp (nepoužíváte-li jej).

Nastavení UFW portů

Obsazenost jednotlivých portů lze zjistit příkazem sudo ss -tulpn | grep ':PortNumber', např: sudo ss -tulpn | grep ':1234'. Pokud je odpověď prázdná, port je volný.

Tok na jednotlivých portech se nastaví příkazem sudo ufw allow <PortNumber>, např.sudo ufw allow 3000. Pro zákaz toku je příkaz sudo ufw deny <PortNumber>, např. sudo ufw deny 3000. Za číslo portu lze specifikovat i protokol, např: sudo ufw allow 3000/tcp.

Aktuální nastavení portů zjistíte příkazem sudo ufw status numbered. Jestliže některé z pravidel potřebujete odstranit, použijte příkaz sudo ufw delete {rule-number-here} (např: sudo ufw delete 2).

Povolení UFW firewallu

UFW firewall se povoluje příkazem sudo ufw enable.

Další možnosti nastavení (např. pro IP restrikce a povolení [sudo ufw allow from XXX.XXX.XX.XXX to any port XX]) najdete v tutoriálu UFW Essentials: Common Firewall Rules and Commands.

Pravidelné aktualizace SW

Jako v každém operačním systému, i u Ubuntu Server se objevují nedostatky a zranitelnosti, na něž vývojáři vydávají průběžné záplaty. nejde přitom jen o samotný operační systém, ale i veškeré balíčky v něm nainstalované.

  • sudo apt -y update && sudo apt -y upgrade - Instalace posledních aktualizací již nainstalovaných balíčků
  • sudo apt dist-upgrade && sudo apt autoremove - Hloubková aktualizace balíčků zahrnující rovněž změny v nainstalovaných balíčcích a konfiguraci systému. "sudo apt autoremove" následně odstraní veškeré starší (již nepotřebné) verze balíčků, které byly upgradem nahrazeny.
  • cat /var/run/reboot-required - Ověření potřeby restartu systému. Jestliže je výstupem "No such file or directory", restart není nutný. V případě výstupu "*** System restart required ***" je vhodné v co možná nejbližším možném termínu provést restart systému, a to například pomocí příkazu sudo reboot.

Výzva k instalaci aktuálních záplat, stejně jako restartu systému, je vždy zobrazena po přihlášení do systému. Jestliže chcete nastavit automatickou aktualizaci balíčků, lze použít nástroj unattended-upgrades.

Nastavení VPN

VPN, neboli Virtual Private Network, je zabezpečené a šifrované spojení mezi dvěma nebo více počítači, které umožňuje bezpečný přenos dat přes veřejné sítě, jako je internet.

Co mi VPN přinese?

VPN umožňuje serveru přistupovat k internetu z jiného umístění, díky čemuž umožňuje přístup k internetovým stránkám a službám, které by jinak byly nedostupné nebo jinak omezené z místní sítě.

VPN skrývá skutečnou IP adresu a lokaci zařízení, čímž chrání soukromí a zvyšuje bezpečnost při používání veřejné sítě (hrozby jako hackerské útoky, sledování internetového provozu nebo monitoring komunikace).

Brute-Force a DDoS Protekce

Proti Brute Force a DDoS útokům se lze bránit sledováním příchozích spojení a blokací IP adres pokoušejících se přihlásit chybnými údaji. S tím pomůže instalace balíčku Fail2Ban.

  • Instalace balíčku sudo apt install fail2ban
  • Otevření konfiguračního balíčku sudo nano /etc/fail2ban/jail.d/ssh.local
  • Obsah konfiguračního balíčku
    [sshd]
    enabled = true
    banaction = ufw
    # ufw ssh port
    port = 22
    filter = sshd
    logpath = %(sshd_log)s
    # maximalni pocet neuspesnych pokusu o prihlaseni z dane IP
    maxretry = 5
    # Časové okno, v rámci nichž se neplatné pokusy sčítají.
    findtime = 3600
    # ban for a day
    bantime = 86400
  • sudo fail2ban-client start
    sudo fail2ban-client reload
    sudo fail2ban-client add sshd # This may fail on some systems if the sshd jail was added by default
  • Automatické spuštění služby při startu serveru
    • sudo systemctl restart fail2ban
    • sudo systemctl enable fail2ban
  • Kontrola stavu
    sudo fail2ban-client status
    sudo fail2ban-client status sshd
  • Odbanování IP adresy sudo fail2ban-client set [jail] unbanip [IP], např. sudo fail2ban-client set sshd unbanip 192.168.1.100

Základní Operace v Ubuntu Server

Obecné:

  • Úvodní systémová obrazovka: landscape-sysinfo
  • CPU architektura: uname -m
  • Monitorování procesů a výkonu: htop, top, lscpu
  • Seznam uživatelů: less /etc/passwd
  • Vypmnutí serveru: sudo poweroff

Filesystem

  • Přejdi do složky: cd /cesta/do/slozky. Přejdi do domovské složky: cd ~. Přejdi do nadřazené složky: cd ...
  • Vytvoř složku: mkdir -p cesta/do/adresare/nazev_nove_slozky. Dobrovolný parametr -p při příkazu mkdir určuje, aby systém vytvořil adresáře v cestě, kterou specifikujete, i v případě, že nadřazené adresáře neexistují. Pokud cesta obsahuje více adresářů, neexistující adresáře budou automaticky vytvořeny. Tímto způsobem můžete vytvořit celou strukturu adresářů najednou.
  • Odstraň složku: rmdir /cesta/k/slozce pro prázdnou složku, rm -r /cesta/k/slozce pro složku včetně souborů.
  • Využití disku: df -h
  • Stav disku (na adrese /dev/nvme0): nvme smart-log /dev/nvme0
  • Velikost souborů: du -bsh /cesta/k/slozce, strukturovaně: du -chd 1 | sort -h
  • Kontrola obsahu a velikosti souborů ve složce: ls -lh /cesta/do/slozky
  • Zobrazení celého textového souboru: cat myfile.txt | less

Teplotní management

  • Hodnoty teplot ze senzorů: sensors

Správa uživatelů - Users management

Dobrou praxí a současně bezpečnostním opatřením u všech uživatelů a běžících služeb na serveru nevyžadujících kompletní "root" privilegia je vytvoření separátního účtu určeného pro jejich vlastní chod.

  • Zobraz všechny existující uživatele a skupiny systému:
    • cat /etc/passwd - seznam účtů systému včetně uživatelských informací
    • compgen -u - seznam účtů bez dalších informací
    • compgen -g - seznam uživatelských skupin bez dalších informací
    • groups <userName> - výpis uživatelských skupin, do nichž daný uživatel spadá
  • Vytvoření uživatele
    • Běžný uživatel (člověk)
      • adduser <userName> - Vytvoření běžného uživatele bez administrátorského přístupu
      • usermod -aG sudo <userName> - Udělení administrátorských práv uživateli jeho přidáním do skupiny sudo (smí užívat příkaz sudo).
    • Uživatel Služby (služba)
      • sudo useradd --no-create-home --shell /bin/false <serviceName> - Vytvoření uživatele služby.
        • --no-create-home určuje, že se nemá vytvářet domovský adresář pro uživatele <serviceName>
        • --shell může být zkráceno na -s. Adresa za parametrem --shell určuje, jaký shell (příkazová řádka) bude použit pro uživatele.
          • /bin/false - vrací při požadavku okamžitě neúspěch a neumožňuje uživateli interaktivní přihlášení.
          • /sbin/nologin - brání uživateli v přihlašování do systému, přesto systémové skripty se s uživatelem mohou stále spojit a provádět svou funkcionalitu v rámci systému.
    • sudo chown -R <userName>:<userName> /var/lib/<serviceFolder> - Nastavení "modify" přístupu uživatele služby k adresáři služby
    • sudo nano /etc/systemd/system/<serviceName>.service - konfigurační soubor služby
  • sudo visudo - umožňuje explicitně specifikovat oprávnění pro jednotlivé uživatele (jde o alternativu k umístění uživatele do skupiny sudo)
  • Odstranění uživatele
    • sudo deluser <userName> - odstranění uživatele
    • sudo deluser --remove-home <userName> - odstranění domovského adresáře uživatele
    • sudo deluser <uzivatel> <skupina> - odstranění uživatele ze skupiny
  • Správa oprávnění uživatelů

    • ls -l - Zjištění oprávnění a vlastnictví jednotlivých souborů a složek v adresáři
    • sudo chown <userName>:<userName> soubor/slozka/cesta - přiřazení vlastnictví k uživateli.
      • sudo chown -R <userName>:<userName> soubor/slozka/cesta Dobrovolný parametr -R značí rekruzivní změnu vlastnictví, tedy přidání shodného vlastnictví i na všechny poddružené složky daného adresáře.
      • sudo usermod -aG <userName> <serviceName> - přidání uživateli služby oprávnění uživatele

    Správa oprávnění k přístupu k souborům

    • sudo chmod 600 <file> - číst a zapisovat může pouze vlastník
    • sudo chmod g+r <file> - zapisovat může pouze vlastník, číst mohou kromě vlastníka i uživatelé skupiny

    Network

    • ip r, ip.a

    Připojení a odpojení USB flash disku

    • Připojení flash disku k Ubuntu serveru

      1. sudo fdisk -l = Zobraz seznam připojených (oddílů) disků včetně velikosti (-l) k počítači
      2. sudo mkdir /media/usb = Vytvoř novou složku, která bude sloužit jaké cílová složka připojeného flash disku:
      3. sudo mount -t vfat /dev/sda1 /media/usb -o uid=1000 = Připevni vsunutý flash disk (/dev/sda1 ve formátu typu vfat s nastavením vlastnických oprávnění k přístupu k souborům -o uid=1000) k cílové složce z bodu výše (/media/usb).
      4. ls /media/usb = Zobraz soubory ve složce.

      Nyní lze přistupovat k souborům flash disku prostřednictvím odkazovaním na soubory ve složce /media/usb.

    • Vysunutí USB flash disku z Ubuntu Serveru

      Vysunutí USB flash disku se provede jedním z následujících příkazů:

      • sudo umount /dev/sda1
      • sudo umount /media/usb

      *Adresy jsou samozřejmě odvislé od adres použitých při připojení.

      Vytvořenou sloužku pro připojení USB flash disku lze nyní bezpečně smazat příkazem sudo rmdir /media/usb.

    Kopírování souborů a složek - příkaz cp (=copy)

    Syntaxe příkazu copy (kopírování) je cp [OPTION] Source Destination. Kopírování je synonymem duplikování, a to v rámci jednoho adresáře i napříč adresáři. Kopírovat lze jak soubory, tak i celé složky. Příklady:

    • Zkopíruj složku, včetně všech souborů, v rámci jednoho adresáře: cp slozka tatazSlozkaSnovymNazvem
    • Zkopíruj veškeré soubory ze složky na usb disku do složky v home adresáři: cp -r /media/usb/mojeSlozka/* ~/slozkaVhome.
      • Poznámka 1: - jestliže "slozkavHome" v home adresáři (~) neexistuje, je příkazem cp automaticky vytvořena.
      • Poznámka 2: - neceme-li kopírovat všechny soubory, můžeme konkrétní soubory ke kopírování specifikovat: cp [OPTION] Source-1 Source-2 Source-3 Source-n Directory

    Možnosti kopírování [OPTION]

    • -i (Interactive): aktivuje interaktivní kopírování, kdy systém v případě přepisu souborů v cílovém adresáři se uživatele dotazuje na akci (přepsat / přeskočit)
    • -b (Backup): cp příkaz společne s kopírováním tvoří v koncovém adresáři rovněž zálohu, a to s použítím rozdílného názvu a formátu
    • -f (Force): umožňuje nucené kopírování souborů, u nichž nemá uživatel oprávnění zápisu (v koncové destinaci)
    • -r (diRectory): kopírování celých adresářů
    • -p (Preserve): Zachovává metadata souborů (čas poslední úpravy, přístupu apod) při kopírování, avšak pouze v případě kopírování pod root uživatelem.
    • * Zástupný znak hvězdička představuje cokoli, tj. všechny soubory a adresáře. Tedy nahrazuje potřebu označování všech souborů jmenovitě a tím značně usnadňuje kopírování souborů a složek adresářů

    Kopírování mezi klientem a serverem přes SSH

    • scp -P <Port> -i <PrivateKey> -r /cesta/k/lokálnímu/adresáři uživatel@vzdálený-server:/cesta/k/cílovému/adresáři
    • scp -r uživatel@vzdálený-server:/cesta/k/vzdálenému/adresáři /cesta/k/lokálnímu/cílovému/adresáři
    * -r specifikuje kopírování adresáře se soubory. Pro kopírování souboru parametr vynechte.

    Další užitečné příkazy

    • Přejmenování adresáře: sudo mv <stavajiciNazev> <novyNazev>

    Systémový démon systemd

    Systemd je systémový démon (init systém), jehož úkolem je spravovat procesy a služby na systému a zajistit jejich správné spouštění, sledování a ukončování.

    Systemd je navržen jako náhrada tradičního systému init (initd) Jeho cílem je zlepšit stabilitu, výkon a správu Linuxového systému. Systemd používá koncept jednotek (units) a unit souborů pro konfiguraci a správu služeb. Jednotka může představovat systémovou službu, mount point, zařízení nebo další systémovou entitu. Pomocí systemd je možné:

    • Systemd umožňuje paralelní spouštění systémových služeb, což zrychluje startování systému a zlepšuje celkový výkon.
    • Systemd umožňuje definovat a spravovat závislosti mezi jednotlivými službami. To zajišťuje, že služby jsou spouštěny v pořadí, které respektuje jejich závislosti.
    • Pokud služba selže, systemd je schopen ji automaticky restartovat, pokud je to konfigurováno.
    • Systemd poskytuje pokročilý mechanismus pro sledování stavu služeb. Může automaticky detekovat a restartovat služby, které se zasekly nebo skončily s chybou.
    • Systemd obsahuje vlastní plánovač úloh (systemd-timers), který umožňuje definovat a spouštět periodické úlohy a plánované akce.
    • Systemd poskytuje funkce pro správu kontejnerů a orchestrování, což umožňuje běh aplikací v izolovaném prostředí.

    Základní práce se systémovým démonem

    • Adresář systémových démonů: /etc/systemd/system
    • Vytvoření / náhled / editace systemd souboru služby: sudo nano /etc/systemd/system/<nazevSluzby>.service.
    • Reload daemondu po aktualizaci konfigurace služby: sudo systemctl daemon-reload
    • Správa systémové služby:
      • sudo systemctl start <nazevSluzby> - Spuštění služby
      • sudo systemctl stop <nazevSluzby> - Zastavení služby
      • sudo systemctl restart <nazevSluzby> - Restart služby
      • sudo systemctl enable <nazevSluzby> - Aktivace automatického spuštění služby na start Ubuntu systému
      • sudo systemctl disable <nazevSluzby> - Deaktivace automatického spuštění služby na start Ubuntu systému
    • Kontrola stavu služby: systemctl status <nazevSluzby>
    • Náhled do logu služby: journalctl -fu <nazevSluzby>

    Bash/Shell scripty

    Bash skript je soubor obsahující sekvenci příkazů, které jsou prováděny programem bash řádek po řádku synchronně (následující příkaz se spustí až po dokončení předchozího). Bash skript tedy umožňuje provádět řadu akcí, jako je navigace do konkrétního adresáře, vytvoření složky a spuštění procesu pomocí příkazového řádku.

    Bash script je soubor s koncovkou .sh. Vytvoři jej lze následujícím příkazem: sudo nano /cesta/do/adresare/<nazev_skriptu>.sh

    #!/bin/bash
    # Sudo příkaz 1
    sudo příkaz_1
    
    # Sudo příkaz 2
    sudo příkaz_2
    
    # Sudo příkaz 3
    sudo příkaz_3

    Pokud v průběhu vykonávání skriptu dojde k chybě při provádění některého z příkazů, skript se může zastavit a ukončit se. Standardně bash vrací návratovou hodnotu (exit code) 0, pokud příkaz proběhl úspěšně, a nenulovou hodnotu, pokud se vyskytla chyba. Tuto návratovou hodnotu lze zkontrolovat pomocí proměnné $?.

    if [ $? -eq 0 ]; then
     # do something
    else
     # do something else
    fi

    Přerušit skript lze take s použitím set -e na začátku skriptu. Tato volba způsobí, že skript se okamžitě ukončí, pokud dojde k chybě při provádění libovolného příkazu.

    Nastavení oprávnění pro spuštění scriptu v systému Unix/Linux

    sudo chmod +x <nazev_skriptu>.sh
    • chmod Je zkratkou pro "change mode" a slouží k úpravě oprávnění souboru nebo adresáře.
    • +x Přidává oprávnění pro spouštění (execute) pro uživatele, který je vlastníkem souboru.
    • <nazev_skriptu>.sh Je název skriptu, pro který se oprávnění pro spouštění nastavuje.

    Spuštění bash příkazu

    Při nastavením oprávnění ke spuštění souboru (sudo chmod +x <nazev_skriptu>.sh) lze vykonávání bash scriptu spustit příkazem ./<nazev_skriptu>.sh. Jestliže vám script jde spustit při volání z téhož adresáře (./), ale už ne pomocí celé cesty, je možné, že script není načten v seznamu systémových proměnných. Pomoci může odhlásit se a opětovně přihlásit.

    Příklad Shell scriptu pro zastavení vybraných procesů
    sudo nano manageSelectedServices.sh
    #!/bin/bash
    
    ## Start, stop or restart all specified services on this PC
    
    ## declare an array of services
    declare -a services=("serviceName1" "serviceName2" "serviceName3" ...)
    
    ## declare processed action and printedActionString
    serviceAction=$1
    serviceActionString="stopped"
    
    ## check action definition
    if [ -z "$serviceAction" ]; then
    echo "missing ACTION parameter: $0 <action>. Supported actions: [start,stop,restart]"
    exit 1
    fi
    
    ## verify required action support and define action string
    if [[ $1 == start ]]; then
    	serviceActionString="started"
    elif [[ $1 == stop ]]; then
    	serviceActionString="stopped"
    elif [[ $1 == restart ]]; then
    	serviceActionString="restarted"
    else
        echo "Error: requested action $1 is not supported"
        exit 1
    fi
    
    ## now loop through the above array
    for i in "${services[@]}"
    do
     echo "Service: $i"
     sudo systemctl $serviceAction $i
     if [ $? -eq 0 ]; then
      echo "$i $serviceActionString | $i status: $(systemctl is-active $i)"
    
      # do something more, if needed
    
     else
       echo "Error: $i not $serviceActionString. Auto process stopped"
       exit 1
     fi
    done
    echo "Batch completed. All requested services succesfully $serviceActionString."
    • Start services: ./manageSelectedServices.sh start
    • Stop services: ./manageSelectedServices.sh stop
    • Restart services: ./manageSelectedServices.sh restart
    Styling echo výpisu v Bash scriptu
    ## echo styling
    greenClr='\033[0;32m'
    echo -e "${greenClr}Service launched \e[0m"
    				

    kdy \e[0m je ukončení zbarvení

    Umožnění automatického provedení sudo příkazu systémovým uživatelem bez nutnosti hesla

    1. sudo visudo -f /etc/sudoers.d/<serviceName> - otevření konfiguračního souboru a jeho úprava pomocí nástroje visudo obsahujícího konfiguraci oprávnění pro příkaz sudo
    2. Cmnd_Alias ACT_RESTART = /usr/bin/systemctl restart <serviceName>
      Cmnd_Alias ACT_STOP = /usr/bin/systemctl stop <serviceName>
      <serviceUser>    ALL=(ALL) NOPASSWD: ACT_RESTART, ACT_STOP

      Výše uvedená konfigurace v /etc/sudoers umožňuje uživateli serviceUser spouštět příkazy pro restart a zastavení určitých služeb (<serviceName>) pomocí příkazových aliasů ACT_RESTART a ACT_STOP bez zadávání hesla. S pomocí otevření v nástroji visudo je aktivována kontrola syntaxe.

    Nastavení zkratek přístupu ke klientům

    1. sudo nano ~/.profile - otevření konfiguračního souboru
    2. alias <cmndShortcut>="<full command>" - na konci souboru ~/.profile
      • Klíčové slovo alias indikuje, že definujeme nový alias.
      • <cmndShortcut> (např. mcl) slouží jako zkrácený název pro vykonání <full command>
    3. source ~/.profile - požadavek přenačtení profilu

    Provoz populárních služeb na Ubuntu Server

    Potřebujete s něčím poradit?

    Zjistěte, zda a jak vám můžeme pomoci.

    Rezervovat schůzku