GNU/Linux obecně

GNU/Linux známý také jako Linux(dále jen Linux) obsahuje Linuxové jádro (kernel), které využívají stovky distribucí, které jsou rozdílné použitými nástroji a programy. Pracuje s open source programy a nechybí ani podpora českého jazyka.

Proč používám GNU/Linux?

Je zdarma, s Linuxem nemusím krást placený software, s Linuxem nemusím za programy platit, s Linuxem mám svobodu volby. Líbí se mi styl systému a jak přistupuje k uživatelům i správcům. Cítím se v něm dobře - Linux je jako RPG.

V roce 1996 jsem se poprvé setkal s počítačem, ale až o 10 let později jsem se seznámil s operačním systémem Linux. Jako první jsem se setkal s distribucí Ubuntu, která umožnila bezproblémovou instalaci vedle Windows. Práce s počítačem nabyla nový rozměr a já měl k dispozici něco nového oproti zažitým zvyklostem Windows. Nastal převrat z uživatelského hlediska. Veškerý software byl volně k dispozici díky GNU licenci. Programy trochu z jiného soudku působily "útulně" a trochu hackersky. Trvalo mi nějakou dobu naučit se principy fungování, teorii a odbornosti, ale bavilo mě to. Časem jsem zkusil Debian, ale nepovedlo se mi nastavit správnou funkci některého hardwaru a tak dlouho nevydržel. Jako další jsem zkusil Arch Linux, který zůstal natrvalo a dodnes. Velmi jsem si Arch Linux oblíbil a zkoušel ho procpat do každého svého zařízení.

Ubuntu dnes již nevyužívám, oblíbil jsem si jiné, sehrálo však velkou roli v přechodu ze strany od Billa Gatese. Od doby začlenění Unity rozhraní, které se mi nezamlouvalo, jsem začal hledat alternativy a experimentovat s Xubuntu a Lubuntu. Debianu jsem nemohl nějakou dobu přijít na chuť, nyní ho rád využívám na starším přenosném počítači k psaní webu, tvorby grafiky i animací a také jiným aktivitám. Vhod mi přijde jeho nynější dobrá podpora, instalace a stabilita. Software mám v trochu starších verzích, ale to mě netrápí.

Arch Linux je má neojoblíbenější distribuce Linux a také jsem ji musel věnovat nejvíce času a učení se.

Je nutné za OS a software platit? Není! Již řadu let využívám open-source řešení, za provoz aplikací na PC neutrácím, nestahuji nelegální i pirátské kopie - vše je hezky legálně a zdarma.

Je pravda, že mnoho věcí je bezpodmínečně nutné znát a navyknout si používat počítač ku prospěchu svému a ne tak, jak bývá moderním zvykem a smířit se s tím, jak to je, že to nejde anebo není možné. Z mého pohledu je uživatel Linuxu velmi svobodný a může svůj počítač využívat takřka zcela jak si zamane.

Linux používám více jak 10 let a necítím potřebu to měnit.

Linux a uživatelé

Linux rozlišuje uživatele, skupiny, služby a na základě oprávnění jim umožňuje přístup. Z bezpečnostního hlediska je to praktické řešení. Vytvoříme si tedy uživatele, přidáme ho do hlavní skupiny a pro doladění pravomocí přidělíme uživateli libovolné množství dodatečných skupin, aby jsme obsáhli všechna jeho potřebná práva k užívání PC.

Uživatelé počítače mají své jméno, heslo, skupiny, používaný shell a doplňující informace jako telefon, adresa a podobně. Počet uživatelů není nijak omezen.

V drtivé většině případů je výchozím správcem standardně se vyskytujícím v systémech Linux superuživatel root s absolutními právy. Superuživatel root může být pouze jeden a není doporučeno s ním běžně pracovat.

Pro běžnou práci musíme vytvořit účet uživatele, který bude s počítačem pracovat. Běžní uživatelé většinou patří do hlavní skupiny users a dodatečných skupin jako jsou audio, video, games, optical, storage a podobné.

Vytvoření uživatele

K vytvoření uživatele použijeme nástroj useradd. Zvolíme vystihující jméno, v našem případě to bude Franta a zvolíme pro Frantu heslo 1234. Přiřadíme Frantovi hlavní skupinu users a zařadíme ho také do vedlejších skupin audio, video, games a sudo.

sudo useradd -m -g users -G audio,video,games,sudo franta

Podíváme se na parametry:

U některých systému lze použít i nástroj adduser.

Přejmenování uživatele

Pomocí příkazu usermod a groupmod můžete změnit jméno i adresář uživatele a přitom se zachovají práva. Je nutné postupovat ve více krocích, nejdříve přejmenovat starý účet na nový, přesunout oprávnění na nový účet a nakonec vytvořit nový domovský adresář.

usermod -l nový starý 
groupmod -n nový starý 
usermod -d /home/nový -m nový 
usermod -c "Skutečné jméno" nový 

Smazání uživatele

Ke smazání uživatele slouží nástroj userdel, ke kterému se připojí s mezerou na konec možnosti smazání a jméno uživatele.

Uživatele franta spolu se soubory v domovském adresáři smažeme zadáním příkazu userdel, možnost -r a jméno uživatele franta.

sudo userdel -r franta

Parametry jsou:

Užitečné příkazy

Zde je několik příkazů, které se mohou při správě uživatelů hodit:

Linux a Skupiny uživatelů

Skupiny jsou soubory práv pro daný účel. Uživatel patří nejdříve do primární skupiny(users) a jelikož tato skupina nesplňuje většinou všechny požadavky, může patřit ještě do dodatečných skupin. Pokud chceme, aby uživatel mohl hrát hry, přidělíme mu dodatečnou skupinu games. Jestliže chceme, aby mohl spravovat systém bez přepínání na roota, přidělíme ho do skupiny sudo.

Pokud chceme zjistit v jakých skupinách je přihlášený uživatel, poslouží nám nástroj groups. Zadáváme buď samostatně anebo doplníme jméno uživatele.

groups franta

Stručný seznam skupin

Skupiny se mohou v jednotlivých distribucích odlišovat a tabulka je pouze orientační.

users Standardní práva pro uživatele
adm Administrativní skupina pro práva čtení různých logů
audio Poslech hudby a práce se zvuky
ftp Přístup do /srv/ftp
games Hry
http Přístup do /srv/http
nobody Skupina bez oprávnění
optical Optické mechaniky
operator Připojování a odpojování
power Napájení
root Skupina s kompletním administrátorským přístupem
storage Úložiště
sudo Práva superuživatele na vyžádání
video Přehrávání videa
wheel Alternativa skupiny sudo pro Arch Linux

Neobsahuje Veškeré skupiny...

Přidání uživatele do skupiny

Uživatele můžeme neomezeně a libovolně podle potřeb přiřazovat do skupin tak, aby výsledek splňoval požadovaná oprávnění.

Přidání uživatele do skupiny provedeme pomocí nástroje usermod. Na příkladu přidáváme uživatele franta do skupiny storage:

usermod -a -G storage franta

Další příklady přidání uživatele do skupiny video:

addgroup franta video

gpasswd -a franta video

Důležité soubory

/etc/group Skupiny
/etc/login.defs Konfigurace stínového hesla
/etc/passwd Uživatelské účty
/etc/shadow Zabezpečení uživatelských účtů
/etc/subgid Skupinové ID
/etc/subuid Uživatelské ID

Soubory

Něco málo o práci se soubory, správa atd.

Adresáře v kořeni disku

  1. / - Kořen
  2. /bin - Spustitelné
  3. /boot - Jádro, zavaděč
  4. /dev - Zařízení
  5. /etc - Nastavení
  6. /home - Domovský adresář uživatelů
  7. /lib - Sdílené knihovny
  8. /lost+found - Opravené a ztracené soubory
  9. /mnt - Adresář pro připojení zařízení(CD)
  10. /opt - Nestandartní SW
  11. /proc - Běžící systém a jeho procesy
  12. /root - Domovský adresář pro roota
  13. /sbin - Privilegované aplikace pro roota
  14. /sys - Virtuální adresář
  15. /tmp - Odkládací a dočasné soubory
  16. /usr - Software
  17. /var - Proměnná data

Domovský adresář home

Pokud vytvoříte uživatele franta, bude mít svá data ve složce /home/franta. Zkrátka domovský adresář je uložen v /home a jmenuje se podle uživatele.

Důležité soubory

/etc/default/*výchozí parametry konfigurace programů
/etc/X11/xinit/xinitrcsystémové nastavení spouštěcího skriptu X
/etc/security/limits.confbezpečnostní omezení
/etc/groupskupiny
/etc/login.defskonfigurace stínového hesla
/etc/locale.confnastavení lokalizace
/etc/locale.genlokalizace
/etc/passwduživatelské účty
/etc/shadowzabezpečení uživatelských účtů
/etc/subgidskupinové ID
/etc/subuiduživatelské ID
/etc/vconsole.confkonzole
~/.bashrckonfigurace bashe
~/.bash_profileprofil bashe
~/.signaturepodpis (email)
~/.xinitrcnastavení spouštěcího skriptu X
~/.Xresourcesnastavení zdrojů a programů v sezení
~/.xsessionuživatelské sezení

Oprávnění

Pro výpis adresáře s oprávněními používám příkaz:

ls -l

Pro úpravu oprávnění používám příkaz:

chmod

Bodové hodnocení sloužící pro výpočet/orientaci v číslech:

a z toho plyne, že:

Prevence úprav souboru - chattr

Znemožnění úprav souboru, opakované použití příkazu příznak deaktivuje:

chattr -i soubor

Výpis atributů souboru:

lsattr soubor

Hledání souborů a adresářů

Najít soubor test:

find -iname test

Najít a odstranit adresář cache:

find . -type d -name 'cache' -exec rm -r {} +

Najít a odstranit prázdné adresáře:

find /dir -type d -empty -delete

Najít v adresáři /var/log a smazat soubory s koncovkou .log starší 30 dní

find /var/log -name „*.log“ -type f -mtime +30 -exec rm -f {} \;

Dokumentace k programům v systému

Dokumentace se v systému Linux vyznačuje značkou doc. Odděluje se od obsahu vlastního softwaru a nachází se tedy odděleně. Pokud instalujete software z repozitáře, hodí se Vám nápověda a dokumentace k programu právě s označením doc. Balíčky doc obsahují veškerou dokumentaci k příslušným programům a nástrojům. Takovou dokumentaci pak lze prohlížet díky nástroji man.

Instalace dokumentace

Instalace dokumentace probíhá automaticky s programem a nebo ručně. Pokud chcete volitelnou dokumentaci bez instalace vlastního programu, postupy se liší dle distribuce, stačí třeba jen nainstalovat pouze balíček doc se jménem programu. V programech na správu softwaru si jej dobře vyfiltrujete.

Například u programu xterm nainstalujeme dokumentaci balíčkem xterm-doc.

Prohlížení dokumentace

Prohlížení dokumentace uskutečníme nástrojem man. Pro výpis dokumentace stačí napsat příkaz man a jméno programu.

U programu xterm vyvolám dokumentaci příkazem:

man xterm

Prohlížení pak může vypadat jako na obrázku:

manuál man

Použitelnost programu zobrazíme přídavkem/argumentem –help a nebo jen -h za příkaz spuštění programu. Pro program xterm bude například následující:

xterm --help

a nebo

xterm -h

Barevné stránky manuálu

V případě, že pro zobrazení manuálových stránek používám less, tak mohu přidat variable:

nano ~/.bashrc
MANPAGER="less -R --use-color -Dd+r -Du+b"

Kompilace software

Co je kompilace?

Kompilace znamená překlad zdrojového kódu do strojového kódu počítače. Kompilace je taková instalace programu „na míru“ pro daný hardware, funkční pouze na totožném hardwaru.

Ke zdrojovému kódu bývá přiložena dokumentace obsahující informace pro překlad, nastavení a používání. Tyto informace pro nás budou klíčové.

Požadavky pro kompilování

Pokud se hodláme pustit do kompilace nějakého softwaru, musíme pro něj zajistit závislosti v podobě vývojářských knihoven a nebo jen balíčků se softwarem, které program pro svou práci potřebuje. Postupy a balíčky jsou dle distribucí rozdílné, ale zádklad je stejný. Potřebujeme nástroj make, který kompiluje software. Někdy je potřebný také automake a jiné.

Kontrola knihoven – ldd

Důležité a závislé knihovny, zkonrolujeme s nástrojem ldd v adresáři překládaného programu.

ldd /bin/sh

Program otestuje potřebné knihovny a jejich cesty, pokud dojde k chybě na dané knihovně, pravděpodobně chybí. Je třeba chybějící knihovny doinstalovat. Takové knihovny se na různých distribucích jmenují různě a může být problematičtější je sehnat. Doporučuji hledat informace a nebo použít správce balíčků (Debian-aptitude, Arch Linux-pcurses, Open SUSE-YaST) pro pohodlné vyhledání.

Potřebné knihovny a závislosti hledejte v dokumentaci u zdrojového souboru, často pojmenována README.

Debian nabízí meta-balíček build-essential, který obsahuje většinu potřebných nástrojů.

Arch Linux má v repozitářích meta-balíček base-dev, který obsahuje rovněž vše potřebné.

Ladění

Ladění programů se provádí editací konfiguračního souboru Makefile, je důležité a má svůj smysl hned z několika důvodů:

  1. Program poběží na jiném počítači
  2. Je potřeba přizpůsobit i pro jiný hardware
  3. Změna míry optimalizace
  4. Výjimečně je to i jediný způsob nastavení programu

Vlastní postup kompilace

Standartním a častým postupem pro kompilace programu je prvopočátek s příkazem ./configure. Configure odhalí a nastaví potřebné závislosti v podobě knihoven, modulů a programů. Po hotovém nastavení přichází na řadu vlastní kompilace příkazem make, který provede kompilaci.

Po kompilaci je nutné program do počítače ještě nainstalovat a to buď nakopírováním vytvořených souborů na správná místa a nebo nástrojem make install, který to provede dle instrukcí přiložených ke kompilovanému programu.

  1. ./configure
  2. make
  3. sudo make install clean

Čas

Nastavení časové zóny

U systémů používajících systemd se provádí nastavení časové zóny vytvořením linku z umístění /usr/share/zoneinfo/Europe/Prague do /etc/localtime.

ln -sf /usr/share/zoneinfo/Europe/Prague /etc/localtime

date

Vypíše a nebo nastaví systémový čas.

date

Pro nastavení se použije syntaxe MMDDhhmmYYYY, například tedy 15.5.2023 10:50

date 051510502023

timedatectl

Čas lze pohodlně změnit z příkazové řádky. Slouží k tomu příkaz timedatectl set-time hh:mm:ss. Jako superuživatel root je potřeba spustit:

sudo timedatectl set-time HH:MM:SS

Pro nastavení data je použití takto:

sudo timedatectl set-time YYYY-MM-DD

hwclock

Nástroj hwclock je nástroj pro hodiny a čas.

Synchronizace HW a systémového času:

hwclock --systohc

A nebo také...

hwclock -w

Logy - záznamy

Záznamy systému a aktivit se nazývají logy.

Co je to log?

Log(žurnál) je soubor se záznamy, který je tvořen za běhu služby, démona a nebo programu. Pomocí logů se můžeme zpětně informovat o tom, co se vlastně s čím dělo. Typickým příkladem může být log přihlášení uživatelů, který nás informuje, kdy se kdo přihlásil.

Logy a záznamy se skvěle hodí pro diagnostiku problémů a monitoring funkčnosti systému.

Jak najdu log?

Většina programů disponuje možností zapnout logování, umístění bývá specifické dle programu, často se nachází v adresáři programu a nebo /var/log.

Každý program může mít vlastní cestu uložení logů a nemusí dodržet klasické umístění logů. Logy mohou být v adresáři programu anebo v domovském adresáři uživatele.

Prohlížení logů

Příklady logů

Záznam přístupů webového serveru Apache je na systému Arch Linux v umístění /var/log/httpd/access_log

Pohodlně si je prohlédnu příkazem:

cat /var/log/httpd/access_log

Písma - fonty

Správa písma a fontů v OS GNU/Linux.

Celkem hezky je problematika popsaná zde.

Mám soubory fontů ttf - ruční přidání

Jak importovat font, který mám uložený v souboru ttf, do systému?

Pro uživatele je možné soubory umístit v jeho domovském adresáři v lokaci ~/.local/share/fonts/ttf. Tato cesta pravděpodobně standardně neexistuje a tak je nutné vytvořit adresář příkazem:

mkdir -p ~/.local/share/fonts/ttf

Sem pak nakopíruji své fonty, každý ttf soubor daného fontu by měl být v adresáři pojmenovaném dle fontu.

Pro všechny uživatele je nunté soubory umístit v cestě /usr/local/share/fonts. Koncové adresáře pravděpodobně nebudou opět existovat a tak je vytvořím příkazem:

mkdir -p /usr/local/share/fonts/ttf

Pravidla - struktura

Asi takto může vypadat struktura adresáře s písmy:

tree ~/.local/share/fonts
/home/user/.local/share/fonts
├── otf
│   └── GothamRnd
│       └── GothamRnd-Bold.otf
└── ttf
    ├── arialbd
    │   └── arialbd.ttf
    └── InteloAlt
        ├── InteloAlt-Bold.ttf
        └── InteloAlt-Regular.ttf
		

Aktualizace cache po ručním přidání

Na závěr se hodí aktualizovat cache fontů systému příkazem:

fc-cache

Archivy a komprese

Archivy a způsoby komprese v systémech Linux

Správci archivů

  1. file-roller - aktuálně jej používám jako primární správce archivů, je dobře použitelný.
  2. Xarchiver - je svkělý a lehký správce archivů v prostředí GTK+.
  3. Ark - je nástroj pro správu archivů v KDE.
  4. PeaZip - je zajímavý meziplatformový správce archivů.

Tar

Tar je archivační utilita sloužící pro archivaci i extrakci a obecnou správu archivů. Bývá součástí Linuxu.

Zip

Je všeobecně používaný formát pro kompresy dat. K jeho používání stačí nainstalovat balík zip. Pro extrahování slouží utilita unzip.

Archivy vytvořené v operačním systému Linux jsou kompatibilní s archivy .zip ve Windows.

Jednoduché zabalení souboru do zipu provedu zadáním příkazu zip, jména zipsouboru a zdroje.

zip zipsoubor.zip soubor

Jestliže chci zabalit soubory v adresáři a rozdělit archiv, aby každá část měla velikost maximálně 20MB, musím přidat argument k příkazu zip, stačí zadat:

zip -s 20m soubory.zip adresar/*

Před extrakcí rozdělených souborů se musí začít spojením zipových souborů, tím vytvořit sloučeninu a až poté extrahovat. K vytvoření sloučeniny stačí zadat :

zip -s 0 soubory.zip --out sloucenina.zip

Extrahování souborů z archivu sloucenina.zip provedeme nástrojem unzip

unzip sloucenina.zip

Rozdělení po určitém počtu MB a extrakce

  1. Zazipování adresáře a rozdělení archivu po 20MB
    zip -s 20m soubory.zip adresar/*
  2. Sloučení rozdělených souborů
    zip -s 0 soubory.zip --out sloucenina.zip
  3. Extrahování souborů
    unzip sloucenina.zip

XZ

Pro extrakci komprimovaných souborů formátu xz můžeme použít příkaz unxz:

unxz soubor.xz

A nebo také:

xz -d soubor.xz

Skryté soubory a složky

Vysvětluje význam, princip a značení skrytých souborů

Proč skryté soubory? Pro uživatele znamenají skryté soubory ochranu před nechtěnými zásahy do konfiguračních i jiných důležitých souborů. Skryté soubory a složky domovského adresáře obsahují převážně nastavení a důležité soubory se kterými se nemanipuluje. Používáme pro zpřehlednění a orientaci v procházení souborů.

Skryté soubory a složky se rozlišují „krycím“ znakem tečka. V praxi to vypadá jako na obrázku. Tečka před názvem souboru a nebo složky způsobí chápání zobrazení systémem jako skryté a běžně neviditelné.

.skryté

V prohlížečích souborů lze aktivovat/deaktivovat zobrazení skrytých souborů a složek.

Klávesová zkratka bývá časo Ctrl + h.

Příkazová řádka

Tahák užitečný pro příkazovou řádku Linux, Unix a FreeBSD, obsahuje moje poznámky a vychytávky. Hodí se pro práci s unixovými operačními systémy.

Moduly jádra

Nástroje – vylepšováky

Síť

Soubory

Systém

Tisk

Uživatelé a skupiny

Procesy a úlohy

Změna přihlašovacího shellu(interpreta)

Vysvětluji jak změnit shell/interpreta příkazové řádky v systémech Linux i Unix.

Vzhled, chování konzole a příkazové řádky určuje interpret, který je v systému Linux standartně bash. Změnou interpreta změníme chování, vzhled a pravidla příkazové řádky již od přihlášení.

Dostupné shelly jsou zapsané v souboru /etc/shells, který obsahuje kompletní výpis přihlašovacích shellů a současně spolupracuje s dalšími nástroji jako například chsh.

nano /etc/shells

Příklad výpisu /etc/shells:

# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash

Změnit shell můžeme pomocí ruční změny konfiguračního souboru a nebo nástrojem chsh, který čte ze seznamu souboru /etc/shells.

Chsh je nástroj pro změnu přihlašovacího shellu. Spouští se příkazem chsh a vyžaduje oprávnění superuživatele.

chshMěním přihlašovací shell pro martin
Zadejte novou hodnotu, nebo stiskněte ENTER pro použití implicitní hodnoty
Přihlašovací shell [/bin/bash]:

Změna na interpreta Zsh:

/bin/zsh

Numerická klávesnice jako myš

Emulace myši jako numerické klávesnice

Jak na to? Klávesnice lze použít také jako myš a to díky jednoduchému nastavení. Tuto funkci zapneme buď konfigurací xorg.conf.d anebo použitím příkazu Setxkbmap. Aktivace emulace myši se spustí pomocí SHIFT + numlock. Doporučuji zvýšit citlivost.

Hodí se skvěle pro netradiční způsoby ovládání, kdy prostě nemáte po ruce klasickou myš anebo podobné zařízení.

xorg.conf.d

  1. Vytvoříme soubor /etc/X11/xorg.conf.d/00-keyboard.conf a v něm tyto řádky:
    Section "InputClass"
            Identifier "system-keyboard"
            MatchIsKeyboard "on"
            Option "XkbOptions" "keypad:pointerkeys"
    EndSection
  2. Pomocí SHIFT + numlock spustíme emulaci myši.

Setxkbmap

  1. Spustíme příkaz setxkbmap s příslušným atributem:
    setxkbmap -option keypad:pointerkeys
  2. Pomocí SHIFT + numlock spustíme emulaci myši.

Ovládání

Screenshoty

Linux může vypadat na každém počítači na světě jinak, takovou variabilitu nabízí. Podívejte se na pár příkladů níže, které poukazují na možnou rozdílnost v grafických prostředích:

Awesome
Gnome
LXDE
Window Maker
XFCE4
dwm