Základné príkazy pre prácu so systémom

Úloha

  1. Zoznámte sa s textovou konzolou OS linux.
  2. Overte si ovládanie príkazového interpretera bash
  3. Vyskúšajte základné príkazy pre prácu so súborovým systémom.
  4. Nainštalujte si balík gpm

Teória

OS linux môže komunikovať s užívateľom prostredníctom dvoch rôznych užívateľských rozhraní. Jedno je príkazový riadok, druhé je GUI Graphic User Interface Grafické rozhranie nemusí byť na každom systéme dostupné. Hlavným dôvodom je jeho vysoká náročnosť na hw príslušného zariadenia. GUI vyžaduje veľa operačnej pamäte, veľa priestoru na disku a tiež veľmi výkonný procesor a grafickú kartu. V jednoduchých zariadeniach ako sú napríklad sieťové prvky (prepínače, smerovače, wifi prístupové body) takýto výkonný hw nie je k dispozícii. Zariadenie má minimum RAM, minimum diskového priestoru a žiadny zobrazovací adaptér, takže tu býva ako rozhranie iba príkazový riadok.
V prípade osobnej pracovnej stanice (PC) užívateľ zvyčajne preferuje GUI. V prípade serveru je to otázka preferencií správcu. Z pohľadu efektivity je inštalácia GUI nevhodná. GUI obsadzuje zbytočne veľké množstvo operačnej pamäte a zaberá pomerne veľa miesta na disku. Z tohoto dôvodu je často serverovská inštalácia bez GUI. Preto sa na začiatok budeme venovať správe systému pomocou príkazového riadku.

Textové virtuálne konzoly

Pod konzolou rozumieme technické zariadenie ktoré je priamo pripojené k hostiteľskému počítaču a umožnuje prácu s týmto počítačom prostredníctvom zadávania príkazov a sledovanie odozvy systému na tieto príkazy

Čo to je tty?

Je to historický pozostatok z doby kedy neexistovali počítače a predsa bolo možné prenášať textové správy na diaľku. Skúsme sa zamyslieť od kedy môžeme prenášať SMS (short message service/krátke textové správy)?
  1. Tí čo pozerali abo čítali indiánky vedia že indiáni toto mali vyriešené už dávno. Na prenos informácií používali dymové signály. Nie som si istý či mali zároveň vymyslené aj písmo, tak neviem či sa to dá počítať za SMS
  2. Vo Francúzku ešte pred objavom elektriny existoval systém na prenos správ pomocou optického telegrafu z roku 1791
  3. V 18st bola objavená elektrina, batéria, elektromagnetizmus a elektromagnet a zrazu máme všetky komponenty pre elektrický telegraf. Samuel Morse to dal dokopy a vymyslel k tomu aj špeciálny kód - morzeovku. Tento typ telegrafu sa presadil hlavne pretože použil digitálny signál na rozdiel od iných systémov. Vďaka tejto vlastnosti nemal tento systém problém sa prispôsobiť aj ďalšiemu prevratnému vynálezu rádiové vlny V roku 1850 bolo v USA 50 rôznych telegrafných spoločností. Takže poslať telegram niekomu bol len problém financií.

    Pre zaujímavosť - jedna zo série príčin potopenie Titanicu bolo to že telegrafní operátori na palube boli tak silne vyťažený posielaním telegramov bohatých cestujúcich, že rádiogram ktorý varoval na zvýšený výskyt ľadovcov bol síce prijatý, ale kedže nebol označený ako prioritný tak nebol okamžite doručený na kapitánsky mostík.

  4. No a konečne odpoveď na otázku čo to je tty. Je to skratka slova teletype. Prvá čast te slovo tele ktorá označuje že ide o vec ktorá pracuje na diaľku. Druhé slovo type znamená písať. U nás sa takému zariadeniu hovorilo dialnopis Je to teda stroj ktorý dokáže písať na diaľku. V roku 1874 naň získal patent Émile Baudot. Písmeno bolo zakódované pomocou 5bitového Baudotového kódu Jednotlivé bity sa prenášali jednou linkou postupne za sebou rýchlosťou 3 znaky za sekundu. Tu si treba dobre všimnúť dve špeciálne klávesy na klávesnici

    Sú to klávesy CAR RET a LINE FEED. Človek by si myslel že na dnešných klávesniciach už také klávesy nemáme. Nie je to celkom pravda. Máme tam klávesu Enter a táto dodnes v OS Windows ukladá do súboru oba kódy (CR, LF)

    Ako to celé fungovalo si môžeme pozrieť na tomto videu

  5. Ako toto archaické zariadenie súvisí s linuxom?

    V dobe keď sa počítač stávali dostupné nastal problém ako ich sprístupniť užívateľom. To je doba, kedy unixovský (linux vtedy ešte neexistoval) počítač sídlil v špeciálnej klimatizovanej miestnosti. Prístup k nemu mali iba vysoko kvalifikovaný odborníci a užívateľ bol k systému pripojený zariadením s názvom teletype/dialnopis. Viac si môžete o dialnopisoch prečítať na tomto odkaze
    Dennis Ritchie a Ken Thompson na Teletype konzole počítača PDP-11/20 v roku 1972.

  6. Elektromechanický dialnopis sa neskôr nahradil terminálom Terminál bol už plne elektronický a skladal sa z klávesnice a obrazovky ktorá dokázala zobraziť určitý počet riadkov a stĺpcov znakov. DEC VT52 Video Terminal

Linuxový systém vytvára textové rozhranie postredníctvom virtuálnej konzoly. Pre pohodlnú prácu má systém vytvorených niekoľko virtuálnych konzol. V prípade štandartnej inštalácie debianu bez GUI je to celkovo šesť virtuálnych konzol. Tento počet sa dá zmeniť v konfigurácii systému pokiaľ by niekomu tento počet nevyhovoval.
Prepínanie medzi konzolami sa robí nasledovnými klávesovými skratkami

Virtuálna konzola simuluje na prostredkoch daného počítača (klávesnica, monitor, zobrazovací adaptér) vlastne niekoľko takýchto terminálov pričom samozrejme zobrazený môže byť iba jeden z nich v jednom okamihu, ale dajú sa veľmi ľahko prepínať.

Popis textov konzoly a postup prihlásenia

Prihlásenie pomocou textovej konzoly tty1

Po nabootovaní systému sa zobrazí konzola číslo jedna. Takto to bude vyzerať ak nemáte na servery nainštalované GUI. V prvom riadku máme vypísané celkovo tri rôzne informácie (zvýraznené v červených obdĺžnikoch). Prvá informácia popisuje distribúciu a verziu systému (Debian GNU/Linux 11).
Nasleduje meno servera (macik). macik je moje obľúbené meno pre môj školský ukážkový server. Toto meno sa zadávalo pri inštalácii servera.
Tretia informácia je meno konzoly na ktorej sa práve nachádzame (tty1).

Ako posledná informácia sa na konzole po spustení objaví informácia zvýraznená obdĺžnikom č.4 Je to opäť meno servera a výzva na prihlásenie login: Tu potom je zobrazený blikajúci kurzor a je tu možné napísať prihlasovacie meno užívateľa.
Po odoslaní mena klávesou Enter sa zobrazí výzva na zadanie hesla. Password: Heslo sa pri zadávaní nevypisuje a ani sa neposúva kurzor aby nebolo vidno aké heslo je a ani koľko má znakov. Už taká informácia o tom aké je heslo dlhé dáva prípadnému útočníkovi veľmi užitočnú informáciu ktorá by viedla k obrovskej úspore času pri jeho prelamovaní. Heslo sa odosiela rovnako ako užívateľské meno klávesou Enter

Ak je prihlásenie neúspešné tak sa tento postup opakuje dovtedy pokiaľ užívateľ nezadá správne meno a heslo.

Pozor systém unix/linux rozlišuje veľké a malé písmená aj v prihlasovacom mene na rozdiel od systému Windows, ktorý ich rozlišuje len v hesle.
Pozor na nastavnie klávesnice - môže byť vypnutý num lock, alebo môže byť nastavená národná klávesnica, či zamenené písmena z a y

Úspešné prihlásenie (v tomto prípade správcu systému s menom root) sa prejaví tak že sa vypíše uvítací výpis (obdĺžniky 8,9,10) Tu sa opäť uvádza meno servera (macik), verzia jadra (5.10.0-21-amd64) a architektúra (amd64 alebo aj 86_64). Nasledujú právne veci ako informácia že ide o volný softvér a odkaz na dokumentáciu ku každému jednému programu v adresári /usr/share/doc.
Ďalší riadok uvádza zrieknutie sa zodpovednosti za akékoľvek používanie. (To isté platí aj v systémoch za ktoré ste zaplatili)

Nasleduje informácia o dátume čase a mene terminála posledného prihlásenia.

V reálnom svete je toto treba sledovať a kontrolovať dáva to signál o zneužití konta. Pozor ak sa podarí niekomu prihlásiť ako root má k dispozícii prostriedky ako tento údaj zakamuflovať na pôvodnú správnu hodnotu. Len veľmi slabý útočník by nechal po sebe takúto okatú stopu, ktorá by mala okamžite viesť k tomu že systém bol kompromitovaný.

Posledný riadok vypísaný na terminál sa volá prompt. Prompt znamená výzva, prostredníctvom promptu nás systém vyzýva o zadanie príkazu. Skladá sa z niekoľkých častí ktoré informujú užívateľa o dôležitých údajoch a za tým nasleduje interaktívny príkazový riadok v ktorom sa pomcou klavesnice a kurzora dá zadať príkaz pre systém.
V prompte sa nachádzajú tieto informácie:

  1. meno užívateľa - dôležité pre udržanie si prehľadu na ktorej konzole som prihlasený ako aký užívateľ. Linux je multiužívatelský systém čo znamená že na každej konzole môžem byť napríklad prihlásený ako iný užívateľ.
  2. @ oddeľovací snak s anglickým významom at teda so slovenským významom na
  3. meno servera - dôležité ak sa následne prihlásim na iné vzdialené servery aby som mal prehľad kde práve som
  4. : oddeľovací znak
  5. aktuálny pracovný adresár - dôležité pri prechádzaní stromovej adresárovej štruktúry súborového systému servera. V tomto prípade sa zobrazuje špeciálny znak ~ ktorý reprezentuje domovský adresár užívateľa
  6. #oddeľovací znak ktorý ukončuje prompt a zárovň informuje o tom že ide o užívateľa ktorý je správcom systému. Nie nutne to musí byť vždy užívateľ s menom root.
  7. Blikajúci kurzor naznačuje že sem je možné začať písať text príkazu
Prompt
root@macik:~#
treba čítať takto: Užívateľ root na serveri macik sa nachádza vo svojom domovskom adresári (~ ) a ide o správcu systému (# )

Prompt

peter@macik:~$
treba čítať takto: Užívateľ peter na serveri macik sa nachádza vo svojom domovskom adresári (~ ) a ide o obyčajného užívateľa ($ )

Editácia textu v príkazovom riadku

V najhoršom prípade sa dá vystačiť len s týmito základnými editačnými klávesami
  1. Ctrl + b posun kurzora vľavo
  2. Ctrl + fposun kurzora vpravo
  3. delete Ctrl + d zmazanie znaku na kurzore.
  4. Ctrl + dak v riadku nieje žiadny znak urobí to príkaz exit, teda ukončí shell.
  5. backspace Ctrl + hzmazanie znaku pred kurzorom a posun kurzora o jeden znak späť
  6. Samozrejme že existuje veľké množstvo rôznych kombinácií kláves. Naviac sa mi páči ich popis na tejto stránke, pretože tam majú aj pekný obrázok.
  7. Klávesové skratky ktoré som si zapamätal a pomerne často ich používam
  8. vyvolanie predošlého príkazu z histórie
  9. vyvolanie nasledovného príkazu z historie v prípade že som dostal šipkou hore moc ďaleko a chem sa vrátiť.
  10. TAB doplnenie príkazu ak je už jednoznačné čo sa tam dá dopísať, opakované stisnutie zobrazí všetky dostupné možnosti, Ak ich je veľa tak sa spýta či ich naozaj zobraziť. Ak chcete vidieť všetky dostupné príkazy treba stisnúť medzera a potom dvakrát klávesu TAB. Na otázku či chcete naozaj vidieť všetky príkazy treba odpovedať y.
  11. ~ táto klávesa predstavuje domovský adresár. Na slovenskej klávesnici sa zadáva ako AltGr + A
  12. Home Ctrl + aNastavenie kurzora na začiatok riadka
  13. End Ctrl + eNastavenie kurzora na koniec riadka
  14. Ctrl + wzmazanie slova pred kurzorom
  15. Ctrl + u zmazanie všetkého pred kurzorom
  16. Crtl + k zamazanie všetkého od kurzora do konca riadka
  17. Crtl + l zamazanie obrazovky (rovnako ako clear príkaz). Obsah riadka ale zostane zachovaný
  18. Ctrl + cUkončenie bežiaceho programu (ak reaguje na signál KILL).
  19. Ctrl + zpremiestnenie procesu na pozadie

Základné príkazy

  1. logout
  2. odhlásenie užívateľa z konzoly
  3. exit
  4. ukončenie shellu (v tomto prípade odhlásenie užívateľa z konzoly)
  5. reboot
  6. restart systému - vyžaduje práva root
  7. poweroff
  8. vypnutie systému - vyžaduje práva root
  9. clear
  10. vymazanie obrazovky
  11. man prikaz
  12. zobrazí manuálovú stránku pre zadaný príkaz
  13. pwd
  14. Print Working Directory - vypíš pracovný adresár
  15. ls [voľby] [cesty]
  16. list - vypíš obsah adresárov ktoré sú špecifikované cestami. Ak cesta nie je zadaná tak sa vypisuje aktuálny pracovný adresár. Voľby sa zadávajú s pomlčkou. Často používané sú tieto
  17. cd ~|-|[cesta]
  18. change directory zmeň aktuálny pracovný adresár. Cesta sa dá zadať v absolútnom alebo v relatívnom tvare. Pomlčka umožňuje návrat do predošlého adresára. Vlnovka skracuje zápis domovského adresára užívateľa.
  19. mkdir [názov]
  20. vytvor nový adresár
  21. rmdir [názov]
  22. odstráň adresár
  23. cp meno1 meno2
  24. urob kópiu

Inštálacia sw balíkov

Debian používa pre správu inštalačných balíkov systém nazvaný dpkg. Pre pohodlnejšiu prácu bolo vyvinutých niekoľko ďalších programov pre prácu s inštalačnými balíkmi. Mi budeme používať program apt Inštalácia nového balíka sa robí príkazom
apt install meno_balika

Podpora myši vo virtuálnych textových konzolách

Kedže som si všimol, ako niektorý pri editácii textových súborov majú silné cuknutie a musia chytiť myš aby potom zistili, že kurzor sa myšou presunúť nedá, tak som sa to rozhodol napraviť. Existuje balík ktorý pridá do virtuálnej textovej konzoly podporu myši. Balík sa volá gpm (general purpose mouse) Inštalácia sa urobí príkazom
apt install gpm
Po nainštalovaní sa dá pohybovať myšou špeciálnym kurzorom (nie kurzorom v príkazovom riadku). Ľavým dvojklikom sa označí slovo pod kurzorom. Alebo je možné ľavé tlačidlo stisnúť a držať a pohybom myši označiť text na obrazovke (aj viac riadkov). Pravé tlačítko prekopíruje označený text do príkazového riadka na pozíciu textového kurzora. Toto funguje aj cez rôzne virtuálne konzoly. Teda v jednej si niečo označím, potom sa prepnem do inej a tam to pravým tlačítkom vložím.

Takto to funguje s programami ktoré nie sú interaktívne. Interaktívne programy (napríklad midnight commander) môžu alebo aj nemusia mať podporu pre prácu s myšou.