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žnostPower 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)
Ještě než se do změny pustíme, je vhodné zkontrolovat, zda je SSH na serveru nainstalováno (od Ubuntu Server ver 24.0 je nutné zatrhnout při instalaci). Existenci SSh lze snadno zjistit dotazem na jeho adresu:
which sshd
Jestliže výstup je prázdný, SSH na serveru nainstalováno není. Vyžadujeme-li jej, můžeme jej doinstalovat, a to ve verzi klienta, serveru, nebo obou:
sudo apt install openssh-client
- SSH for connecting to other machinessudo apt install openssh-server
- SSH to connect this machinesudo apt install ssh
- both clients - allowing to connect this as well as other machines
Společně s instalací
SSH
došlo i k vytvoření konfiguračního souborusshd_config
sloužícího pro nastavení konfigurace připojení skrze SSH.V případě SSH je používán jako defaultní Port
22
. 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 portu22
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 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é.
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. Danou informaci lze současně zobrazit prostřednictvím příkazu cat /var/run/reboot-required
. 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
.
Ruční aktualizace lze provést pomocí následujících příkazů:
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.
Potřebu vykonávání ručních aktualizací balíčků lze automatizovat, a to pomocí nástroje 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).
- Wiki - Postup instalace Mullvad VPN na Ubuntu Server v 10 krocích
- Wiki - Postup aktivace Mullvad VPN na Mikrotik routeru
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.
Konfigurace účtů
Při předávání přístupů k serveru a spouštění služeb na něm, dbejte na základní pravidlo, co uživatel / systémový proces, to speciálně vytvořený serverový uživatel s příslušnými oprávněními.
Základní Operace v Ubuntu Server
Obecné:
- Úvodní systémová obrazovka:
landscape-sysinfo
- CPU architektura:
uname -m
, popř.lscpu
- 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říkazumkdir
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ů, uživatelských oprávnění a přístupů
Dobrou praxí a současně bezpečnostním opatřením je vytvoření samostatného účtu pro všechny uživatele server používající a služby na něm běžící. Kompletní postupy naleznete v odkazu níže.
Network
ip r
,ip.a
Připojení a odpojení USB flash disku
Připojení flash disku k Ubuntu serveru
sudo fdisk -l
= Zobraz seznam připojených (oddílů) disků včetně velikosti (-l) k počítačisudo mkdir /media/usb
= Vytvoř novou složku, která bude sloužit jaké cílová složka připojeného flash disku:sudo mount -t vfat /dev/sda1 /media/usb -o uid=1000
= Připevni vsunutý flash disk (/dev/sda1
ve formátu typuvfat
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
).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žbysudo systemctl stop <nazevSluzby>
- Zastavení službysudo systemctl restart <nazevSluzby>
- Restart službysudo systemctl enable <nazevSluzby>
- Aktivace automatického spuštění služby na start Ubuntu systémusudo 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
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říkazsudo
-
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živateliserviceUser
spouštět příkazy pro restart a zastavení určitých služeb (<serviceName>
) pomocí příkazových aliasůACT_RESTART
aACT_STOP
bez zadávání hesla. S pomocí otevření v nástrojivisudo
je aktivována kontrola syntaxe.
Zjištění, kolikrát / pod jakou service shell script běží
ps auxf | grep /usr/local/bin/script.sh
Použití grep script.sh ve spojení s ps auxf je způsob, jak filtrovat a zobrazit pouze ty procesy, které obsahují script.sh ve svém příkazu, což vám umožní rychle identifikovat a monitorovat konkrétní skripty nebo aplikace.
ps auxf | grep script.sh
výpis obsahuje následující sloupce ke každému běžícímu procesu:
USER
: Uživatelské jméno vlastníka procesu.PID
: ID procesu (Process ID).%CPU
: Procento využití procesoru procesem.%MEM
: Procento využití operační paměti (RAM) procesem.VSZ
: Virtuální velikost procesu v kilobytech. Tento údaj zahrnuje veškerou paměť, kterou proces může přístupovat, včetně paměti, která je aktuálně ve swapu nebo může být ve swapu, ale není.RSS
: Resident Set Size, neboli velikost paměti, kterou proces skutečně využívá v operační paměti (tj. kolik paměti je 'rezidentní' v RAM).TTY
: Terminál, ke kterému je proces připojen. Pokud není proces připojen k žádnému terminálu, obvykle zde bude uvedeno ?.STAT
: Stav procesu. Tento kód může obsahovat různé znaky, jako jsou S (spící), R (běžící), Z (zombie), T (stopovaný), atd.START
: Čas, kdy byl proces spuštěn.TIME
: Celkový procesorový čas, který proces využil od svého spuštění.COMMAND
: Příkazová řádka, která spustila proces.
Nastavení zkratek přístupu ke klientům
sudo nano ~/.profile
- otevření konfiguračního souborualias <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>
- Klíčové slovo
source ~/.profile
- požadavek přenačtení profilu