C2110 Operační systém UNIX a základy programování 2. lekce -1C2110 Operační systém UNIX a základy programování Petr Kulhánek, Jakub Štěpán kulhanek@chemi.muni.cz Národní centrum pro výzkum biomolekul, Přírodovědecká fakulta Masarykova univerzita, Kamenice 5, CZ-62500 Brno 2. lekce Linux jako víceuživatelský systém C2110 Operační systém UNIX a základy programování 2. lekce -2Linux vs UNIX UNIX je v informatice ochranná známka operačního systému vytvořeného v Bellových laboratořích americké firmy AT&T v roce 1969. Ochranou známku v současné době vlastní konsorcium The Open Group a mohou ji používat pouze systémy, které jsou certifikovány podle Single UNIX Specification. Existují různé systémy, které jsou s UNIXem v různé míře kompatibilní, ale nemohou nebo nechtějí platit licenční poplatky, a proto často používají varianty názvů, které na název UNIX odkazují (například XENIX, MINIX, Linux), ale mohou se jmenovat i jinak (například BSD varianty OpenBSD, NetBSD, ale též Mac OS X atd.). Souhrnně je označujeme jako unixové systémy (anglicky unix-like). GNU/Linux nebo jen krátce Linux je v informatice označení pro operační systém založený na Linuxovém jádru. První verzi jádra naprogramoval Linus Torvalds v roce 1991, který se dále na jeho vývoji aktivně podílí. Upraveno z: https://cs.wikipedia.org/wiki/Unix https://cs.wikipedia.org/wiki/Linux https://cs.wikipedia.org/wiki/Linux_%28j%C3%A1dro%29 C2110 Operační systém UNIX a základy programování 2. lekce -3- Obsah  Opakování • terminály, příkazová řádka  Příkazy • manuálové stránky  Vzdálené přihlašování • ssh, zabezpečení přenosu (šifrování), vnořené přihlašování, vzdálené spouštění grafických aplikací, přihlašovaní bez hesla  Virtualizace • co je to virtualizace, typické použití, přehled hypervisorů, MS Windows ve VirtualBoxu, Putty, instalace Ubuntu OS C2110 Operační systém UNIX a základy programování 2. lekce -4- Opakování  terminály  příkazová řádka C2110 Operační systém UNIX a základy programování 2. lekce -5- Terminály Příkazová řádka je přístupná přímo z textových terminálů. V grafickém prostředí X11 je nutné spustit vhodnou aplikaci emulující textový terminál:  gnome-terminal (Terminal)  konsole  xterm xterm konsole jednoduché, standard na všech UNIXových systémech Výchozím adresářem je: /home/username jednoduché, přitom značně konfigurovatelné gnome-terminal C2110 Operační systém UNIX a základy programování 2. lekce -6Příkazová řádka [kulhanek@wolf ~]$ jméno uživatele jméno počítače aktuální adresář (~ znamená domovský adresář /home/username) Prompt - typ uživatele / výzvy ($ běžný uživatel, # super uživatel, další možné %, >) místo pro příkaz Příkaz se vykoná zmáčknutím klávesy Enter. Historie: pomocí kurzorových šipek nahoru a dolů lze procházet seznamem již zadaných příkazů. Příkaz z historie lze znovu použít nebo upravit a upravený použít. Historie je přístupná i příkazem history. Zápisy: $ ls –l $ ssh wolf01.wolf.inet ls –l # apt-get install firefox Značí, že se jedná o zápis do příkazové řádky. Samotný znak $ a # se do ní nepíše. C2110 Operační systém UNIX a základy programování 2. lekce -7- Příkazy  manuálové stránky C2110 Operační systém UNIX a základy programování 2. lekce -8Nápověda k příkazům Manuálové stránky (aneb co dělat, když si nevím rady): man vypíše manuálovou stránku příkazu $ man [section_number] topic Dostupné sekce:  Section 1 user commands  Section 2 system calls  Section 3 library functions  Section 4 special files  Section 5 file formats jméno příkazu, funkce, tématu, kapitoly apod. Číslo sekce je nutné udávat u témat se stejným jménem zařazených do různých sekcí.  Section 6 games  Section 7 conventions and miscellany  Section 8 administration and privileged commands  Section L math library functions  Section N tcl functions $ man 1 printf $ man 3 printf manuálová stránka příkazu printf manuálová stránka funkce printf() jazyka C C2110 Operační systém UNIX a základy programování 2. lekce -9Nápověda, hledání příkazů Navigace v textu nápovědy: ● posun v textu po řádcích (kurzorové šipky nahoru a dolů nebo klávesy j a k) ● posun v textu po stránkách (PgDn a PgUp nebo klávesy f a b) ● vyhledávání ( /hledaný_text , klávesa n pro další vyhledávání ) ● zavření nápovědy (klávesa q) On-line manuálové stránky ve formátu HTML: http://linux.die.net/man/ Užitečné příkazy: whatis vypíše krátký popisek příkazu (z manuálové stránky) apropos hledá příkazy obsahující v popisku v manuálu zadané klíčové slovo info zobrazení info stránek příkazů (obdoba manuálových stránek) C2110 Operační systém UNIX a základy programování 2. lekce -10Popis/zadávání příkazu $ command [options] [--] [arguments] krátké volby -a -as nebo -a -s -f pokus.txt dlouhé volby --file pokus.txt ukončení zadávání voleb, je nutné použít jen ve velmi speciálních případech, běžně se nepoužívá argumenty hlavní data či informace předávané příkazu nutno uvádět ve specifickém pořadí [] značí volitelné volby nebo argumenty <> značí povinné volby nebo argumenty, popř. je uvedeno bez závorek rozšiřují/mění chování příkazu lze většinou uvádět v libovolném pořadí C2110 Operační systém UNIX a základy programování 2. lekce -11- Příkazy man manuálové stránky příkazů whatis vypíše krátký popisek příkazu (z manuálové stránky) apropos hledá příkazy obsahující v popisku v manuálu zadané klíčové slovo info zobrazení info stránek příkazů (obdoba manuálových stránek) whoami vypíše jméno přihlášeného uživatele hostname vypíše jméno stroje, na kterém jste přihlášeni id vypíše identifikační údaje přihlášeného uživatele a jeho zařazení do skupin w vypíše, kdo je na stroj přihlášen a co dělá who vypíše, kdo je na stroj přihlášen ps vypíše běžící procesy top monitoruje běžící procesy ssh příkaz pro zabezpečené přihlášení na vzdálený stroj C2110 Operační systém UNIX a základy programování 2. lekce -12Vzdálené přihlášení  ssh  šifrování  vnořené přihlašování  vzdálené spouštění grafických aplikací  autorizované veřejné klíče (přihlašovaní bez hesla) C2110 Operační systém UNIX a základy programování 2. lekce -13Vzdálené přihlášení Existuje několik možností vzdáleného přihlášení (rsh, XDMCP, apod.) avšak nejpoužívanějším a nejbezpečnějším je použití příkazu ssh (secure shell). $ ssh [user@]hostname [command] Syntaxe: jméno uživatele; pokud není uvedeno, použije se jméno přihlášeného uživatele jméno počítače [] - možno vynechat Odhlášení: Vzdálené interaktivní přihlášení (sezení) se ukončuje příkazem exit. Příklady použití: $ ssh wolf.wolf.inet $ ssh wolf01.wolf.inet who příkaz, který se má vykonat; pokud není uveden, zpřístupní se příkazová řádka v interaktivním režimu C2110 Operační systém UNIX a základy programování 2. lekce -14Prvotní vzdálené přihlášení [kulhanek@wolf01 ~]$ ssh wolf02 The authenticity of host 'wolf02 (10.251.28.102)' can't be established. ECDSA key fingerprint is 1f:9d:f3:d3:1d:24:28:12:56:30:99:ef:2d:68:d2:cf. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'wolf02,10.251.28.102' (ECDSA) to the list of known hosts. [kulhanek@wolf02 ~]$ Při prvním přihlášení je nutné potvrdit autenticitu stroje, na který se hlásíme. Ve věrohodné síti můžeme otisk palce přijmout bez ověření. V nezabezpečeném prostředí je však vhodné otisk palce stroje ověřit nezávislou cestou (např. zasláním otisku palce poštou od správce vzdáleného stroje). C2110 Operační systém UNIX a základy programování 2. lekce -15Asymetrické šifrování klíč I klíč IIpár šifrovacích klíčů zpráva šifrovaná zpráva šifrovaná zpráva zpráva šifrovaná zprávazpráva Dešifrování zprávy klíčem použitým pro šifrování není prakticky proveditelné. C2110 Operační systém UNIX a základy programování 2. lekce -16Asymetrické šifrování, použití I veřejný klíč soukromý klíč Odesílatel Příjemce Utajený přenos zprávy: 1. získání veřejného klíče příjemce 2. šifrování zprávy odesílatele veřejným klíčem příjemce 3. odeslání šifrované zprávy přes nezabezpečenou síť 4. příjemce dešifruje zprávu svým soukromým klíčem síťové přenosy zpráva šifrovaná zpráva pár šifrovacích klíčů Kdokoliv, kdo zcizí soukromý klíč příjemce, muže dešifrovat přenášené zprávy! 1 2 3 4 C2110 Operační systém UNIX a základy programování 2. lekce -17Asymetrické šifrování, použití II veřejný klíč soukromý klíč Odesílatel Příjemce Ověření odesílatele veřejné zprávy: 1. zašifrování zprávy soukromým klíčem odesílatele 2. příjemce získá zašifrovanou zprávu a veřejný klíč odesílatele 3. příjemce dešifruje zprávu veřejným klíčem odesílatele síťové přenosy veřejná zpráva šifrovaná zpráva pár šifrovacích klíčů Kdokoliv, kdo zcizí soukromý klíč odesílatele, se za něj může vydávat! 1 2 3 4 C2110 Operační systém UNIX a základy programování 2. lekce -18Vzdálené přihlášení wolf wolf03 wolf04 wolf05wolf02wolf01 wolf06 wolf07 wolf08 wolf23 Pomocí příkazu ssh je možné provést vnořené vzdálené přihlášení. ssh wolf06ssh wolf ssh wolf02 S každou novou úrovní vzdáleného příhlášení roste režie, proto, pokud je to možné, použijeme nejpřímější vzdálené přihlášení. ssh wolf02 C2110 Operační systém UNIX a základy programování 2. lekce -19Vzdálené přihlášení univerzitní síť wolf.ncbr.muni.cz místní síť wolf.wolf.inet wolf wolf03 wolf04 wolf05wolf02wolf01 wolf06 wolf07 wolf08 wolf23 veřejně nedostupná doména wolf.inet skirit.ics.muni.cz Vnořené vzdálené přihlášení je nutné použít pro přístup k počítačům v místních neveřejných sítích. ssh wolf08.wolf.inet ssh wolf.ncbr.muni.cz ssh wolf07 C2110 Operační systém UNIX a základy programování 2. lekce -20Vzdálené přihlášení univerzitní síť wolf.ncbr.muni.cz místní síť wolf.wolf.inet wolf wolf03 wolf04 wolf05wolf02wolf01 wolf06 wolf07 wolf08 wolf23 veřejně nedostupná doména wolf.inet skirit.ics.muni.cz ssh skirit.ics.muni.cz Vzdálené přihlašování z místních neveřejných sítí na počítače umístěné v okolní veřejné síti lze většinou provést přímo. C2110 Operační systém UNIX a základy programování 2. lekce -21Vzdálené spouštění GUI aplikací Grafické aplikace je možné spouštět přímo v prostředí X11 (grafickém terminálu) nebo s exportem displeje na vzdálenou plochu prostředí X11. Přímé spouštení Export displeje aplikace wolf01 aplikace wolf01 aplikace wolf01 wolf02 C2110 Operační systém UNIX a základy programování 2. lekce -22Export displeje aplikace wolf01 wolf02 Příkaz ssh nastaví všechny potřebné náležitosti pro export displeje automaticky při použití volby -X (velké X). [wolf01] $ ssh -X wolf02 [wolf02] $ ./my_application Volba -x (malé x) export naopak zakáže. Export displeje, lze provest i manuálně, nicméně je nutné nastavit proměnnou DISPLAY a správně volat příkazy xhost a xauth. Na klastru WOLF je volba –X implicitně zapnutá. C2110 Operační systém UNIX a základy programování 2. lekce -23Cvičení I 1. Vypište vaše přihlašovací jméno příkazem whoami. 2. Jaké je vaše identifikační číslo (uid)? 3. Zjistěte, kdo je přihlášen k vaší pracovní stanici příkazem w a who. 4. Jaký je rozdíl mezi příkazy w a who podle manuálových stránek? 5. Jaké je celé jméno vašeho počítače (příkaz hostname a volba dle manuálových stránek). úkoly 8-11: pracujte ve dvojicích C2110 Operační systém UNIX a základy programování 2. lekce -24Cvičení II 1. Přihlaste se na vzdálený uzel wolf01.wolf.inet. 2. Ověřte, že se skutečně jedná o uzel wolf01 (příkaz hostname). Příkazy w a who pak zjistěte, kdo je na uzlu přihlášen. 3. Odhlaste se z uzlu wolf01.wolf.inet. 4. Zjistěte, kdo je přihlášen na uzlu wolf01.wolf.inet, aniž byste se na něj interaktivně přihlásili. 5. Přihlaste se na pracovní stanici vašeho kolegy. 6. Spusťte na ní program nemesis (modul nemesis). 7. Ověřte ve výpisu běžících programů (ps -e), že aplikace na vzdáleném stroji skutečně běží. 8. Ověřte, že na vaší stanici běží program nemesis spuštěný vašim kolegou (ps -u username). 9. Co znamenají volby e a u příkazu ps? úkoly 5-9: pracujte ve dvojicích C2110 Operační systém UNIX a základy programování 2. lekce -25- Virtualizace  co je to virtualizace  typické použití  přehled hypervisorů  MS Windows ve VirtualBoxu  instalace Ubuntu OS C2110 Operační systém UNIX a základy programování 2. lekce -26Virtualizace - Hypervisor Hardware Hostitelský OS Hypervisor OS 1 OS 2 OS 3 Virtualizace jsou postupy a techniky, které umožňují k dostupným zdrojům přistupovat jiným způsobem, než jakým fyzicky existují. Virtualizovat lze na různých úrovních, od celého počítače (tzv. virtuální stroj), po jeho jednotlivé hardwarové komponenty (např. virtuální procesory, virtuální paměť atd.), případně pouze softwarové prostředí (virtualizace operačního systému). zdroj: www.wikipedia.org Hypervisor – správce virtuálních strojů Hostující OS (ve virtuálním stroji) C2110 Operační systém UNIX a základy programování 2. lekce -27Výhody virtualizace • Na jednom fyzickém stroji může běžet více virtuálních strojů (každý může mít instalován jiný OS). • Výkon fyzického hardware je lépe využit (nižší provozní náklady). • Snadnější zálohování. Stav virtuálních strojů je možné zaznamenávat do tzv. snímků (snapshosts), ze kterých je možné chod virtuálního stroje obnovit. • Teleportace. Virtuální stroje lze přenést mezi dvěma fyzickými stroji s minimální dobou zastavení virtuálního stroje. Vhodné pří výměně vadného hardware nebo jeho upgrade. • Snadnější testování OS. C2110 Operační systém UNIX a základy programování 2. lekce -28Přehled nástrojů pro virtualizaci VirtualBox www.virtualbox.org Podporovaný hostitelský OS: MS Windows, Mac OS X, Linux Licence: freeware + proprietární rozšíření pro nekomerční použití KVM součástí kernelu Linuxu Podporovaný hostitelský OS: Linux Podpůrné programy: virt-manager, qemu Licence: freeware VMWare http://www.vmware.com/ Podporovaný hostitelský OS: MS Windows, Linux Licence: komerční C2110 Operační systém UNIX a základy programování 2. lekce -29MS Windows na klastru WOLF Spuštění MS Windows XP ve virtuálním stroji (hypervisor VirtualBox) $ /win/win C2110 Operační systém UNIX a základy programování 2. lekce -30Ovládání virtuálního stroje Přepnutí do/z Fullscreen Host = (pravá klávesa Ctrl) (pod MSWindows a Linuxem) Zmáčknutí kláves Ctrl+Alt+Del C2110 Operační systém UNIX a základy programování 2. lekce -31Vypnutí virtuálního stroje správný způsob vypnutí špatný způsob vypnutí C2110 Operační systém UNIX a základy programování 2. lekce -32- Putty Putty http://www.chiark.greenend.org.uk/~sgtatham/putty/ Implementace SSH (Secure Shell) pro Windows, která umožňuje vzdálené připojení k počítačům podporující tento protokol (převážně unixového typu). C2110 Operační systém UNIX a základy programování 2. lekce -33Putty – nastavení wolf.ncbr.muni.cz adresa vzdáleného stroje Správné fungování klávesy backspace. C2110 Operační systém UNIX a základy programování 2. lekce -34Putty – nastavení II selekce myší kompatibilní s Unixovými terminály neproporcionální písmo (všechny znaky mají stejnou šířku) C2110 Operační systém UNIX a základy programování 2. lekce -35- Cvičení 1. Spusťte virtuální stroj s MS Windows XP (příkaz /win/win). 2. Ve virtuálním stroji otevřete Internet Explorer a ve Wikipedii (anglické) nalezněte klíčové slovo Hypervisor. 3. Na hostitelském OS monitorujte běh hypervisoru pomocí příkazu top (běh příkazu se ukončuje klávesou q). 4. Pozastavte a obnovte běh virtuálního stroje. 5. Otevřete program Putty v prostředí MS Windows. 6. Proveďte nastavení dle předchozích stránek a přihlaste se na čelní uzel (wolf.ncbr.muni.cz) klastru WOLF. 7. Vypište přihlášené uživatele na čelním uzlu a to jak v terminálu Putty, tak i na vašem hostitelském stroji. Výpisy porovnejte. 8. V terminálu Putty spusťte aplikaci nemesis (modul nemesis). Chování vysvětlete? 9. Ukončete program Putty příkazem exit. 10. Ukončete běh virtuálního stroje. C2110 Operační systém UNIX a základy programování 2. lekce -36- Závěr C2110 Operační systém UNIX a základy programování 2. lekce -37- Závěr Linux je víceuživatelským operačním systémem, který umožňuje souběžnou práci několika uživatelů, kteří mohou být přihlášeni místně nebo vzdáleně Linux má nativní podporu pro vzdálené spouštění aplikací s grafických výstupem (GUI) Linuxu má podporu pro spouštění virtuálních strojů, lze v něm tedy spouštět instance operačního systému MS Windows Systém je velmi dobře dokumentován (příkazy, apod.) C2110 Operační systém UNIX a základy programování 2. lekce -38Domácí úkoly  Přihlašování bez hesla (pomocí autorizovaného veřejného klíče)  Instalace Ubuntu 14.04 LTS C2110 Operační systém UNIX a základy programování 2. lekce -39Přihlašování bez hesla wolf wolf03 wolf04 wolf05wolf02wolf01 wolf06 wolf07 wolf08 wolf23 první přihlášení s heslem přihlašovaní mezi uzly klastru WOLF bez nutnosti zadávat heslo pomocí autorizovaného veřejného ssh klíče Existují i jiné techniky, zajištující podobnou funkčnost:  systém Kerberos (http://web.mit.edu/Kerberos/), který je využíván v MetaCentru Kde se používá přihlašovaní pomocí veřejného klíče: • klastr WOLF • superpočítače IT4I • klastry LCC skupiny C2110 Operační systém UNIX a základy programování 2. lekce -40Autorizovaný veřejný ssh klíč veřejný klíč soukromý klíč Lokální stroj (ssh klient) Vzdálený stroj (ssh server) síťové přenosy ověřovací token šifrovaná zpráva autorizované klíče 1 vytvoří ověřovací token 2 3 4 5 6 porovnání ověření identity uživatele (zjednodušeno) kopie manuálně provedená uživatelem (jednou) šifrovaný přenos protokolem ssh Kdokoliv, kdo zcizí soukromý klíč uživatele, se může přihlásit na vzdálený stroj! ssh pár šifrovacích klíčů C2110 Operační systém UNIX a základy programování 2. lekce -41Sdílený souborový systém autorizované klíče ssh ssh respektive vyžaduje heslo klíče Situace, kdy stroje nemají sdílený domovský adresář: autorizované klíče ssh ssh klíče Situace, kdy stroje mají sdílený domovský adresář (klastr WOLF): autorizované klíče klíče stroj #1 stroj #2 identickýobsah,rozdílnérole C2110 Operační systém UNIX a základy programování 2. lekce -42Vytvoření páru v/s klíče [kulhanek@wolf01 ~]$ cd .ssh [kulhanek@wolf01 .ssh]$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/kulhanek/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/kulhanek/.ssh/id_rsa. Your public key has been saved in /home/kulhanek/.ssh/id_rsa.pub. The key fingerprint is: e9:07:0b:fc:17:23:b3:c5:1a:8a:0c:1a:98:8f:fe:28 kulhanek@wolf01.wolf.inet [kulhanek@wolf01 .ssh]$ ls –l -rw------- 1 kulhanek lcc 1675 Mar 21 2012 id_rsa -rw-r--r-- 1 kulhanek lcc 395 Mar 21 2012 id_rsa.pub -rw------- 1 kulhanek lcc 13380 Sep 4 15:55 known_hosts Passphrase se nezadává! Podrobnější popis: man ssh Vytvoření dvojice veřejného a soukromého klíče: seznam otisků palců strojů, na které jste se přihlásili pomocí příkazu ssh C2110 Operační systém UNIX a základy programování 2. lekce -43Vytvoření autorizovaných klíčů Vložení veřejného klíče do seznamu autorizovaných klíčů: [kulhanek@wolf01 .ssh]$ cat id_rsa.pub >> authorized_keys [kulhanek@wolf01 .ssh]$ ls –l -rw-r--r-- 1 kulhanek lcc 395 Sep 25 2012 authorized_keys -rw------- 1 kulhanek lcc 1675 Mar 21 2012 id_rsa -rw-r--r-- 1 kulhanek lcc 395 Mar 21 2012 id_rsa.pub -rw------- 1 kulhanek lcc 13380 Sep 4 15:55 known_hosts Podrobnější popis: man ssh Soubor authorized_keys může obsahovat více veřejných klíčů, každý je pak na jedné řádce. Pokud přihlašování pomocí autorizovaných veřejných klíčů nebude fungovat : • ověřte přístupová práva jednotlivých souborů (písmenka r, w (eventuálně x) ve výpisu příkazu ls) • pokud běží ssh agent, odstraňte klíče, které má ve správě: $ ssh-add –D • znovu se přihlaste přístupová práva C2110 Operační systém UNIX a základy programování 2. lekce -44Pro a proti Výhody:  nemusí se neustále zadávat heslo  bezpečnější použití příkazů ssh a scp ve skriptech  urychlení práce Nevýhody:  v případě kompromitace jednoho počítače, jsou kompromitovány všechny počítače se vzájemně autorizovanými veřejnými klíči C2110 Operační systém UNIX a základy programování 2. lekce -45Domací úkoly 1. Přihlaste se na čelní uzel klastru WOLF pomocí terminálu Putty (či jeho obdoby). 2. Vytvořte pár soukromého a veřejného ssh klíče. 3. Vložte veřejný klíč do souboru obsahující autorizované veřejné klíče. 4. Ověřte, že se můžete přihlásit na uzel wolf01 bez použití hesla. 5. Odhlaste se. 6. Jakým způsobem byste zajistili přihlášení bez hesla ze stroje #2 na stroj #1, které nemají společný domovský adresář (viz strana 38)? C2110 Operační systém UNIX a základy programování 2. lekce -46Instalace Ubuntu 14.04 LTS  Nainstalujte si program VirtualBox (http://www.virtualbox.org).  Stáhněte si instalační obraz pro OS Ubuntu ve formě iso obrazu. http://www.ubuntu.com/ Ubuntu 14.04 LTS (Ubuntu Desktop)  Vytvořte virtuální stroj ve správci VirtualBoxu zvolíme OS Linux a verzi Ubuntu zbytek nastavení je vhodné nechat na výchozích hodnotách  První spuštění virtuálního stroje při prvním spuštění virtuálního stroje budeme vyzváni k vložení instalačního media, médium vložíme do virtuálního OS ve formě iso obrazu (ikona vpravo a zvolení staženého instalačního obrazu)  Instalace systému po spuštění instalátoru z instalačního média pokračujte dle průvodce Domácí úkol.