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, Kotlářská 2, CZ-61137 Brno 2.lekce C2110 Operační systém UNIX a základy programování 2. lekce -2- Obsah  Unix v kostce • Souborový systém, cesty • Spouštění příkazů • Základní příkazy • pohyb v souborovém systému • kopírování, přesouvání, mazání  Vzdálené přihlašování • Ssh • Šifrování • Vnořené přihlašování C2110 Operační systém UNIX a základy programování 2. lekce -3Unix v kostce  Souborový systém, cesty  Spouštění příkazů  Základní příkazy  pohyb v souborovém systému  kopírování, přesouvání, mazání C2110 Operační systém UNIX a základy programování 2. lekce -4Struktura souborového systému UNIX využívá hierarchický adresářový souborový systém složený z adresářů (složek) a souborů. Všechny adresáře a soubory leží v jediném kořenovém adresáři (/). / home bin ivo kořenový adresář soubortest.txt adresář podadresář adresáře home Domovský adresář: ● adresář sloužící pro data a nastavení uživatele ● obvykle v cestě /home/jmeno_uzivatele C2110 Operační systém UNIX a základy programování 2. lekce -5Srovnání s MS Windows Vlastnost Linux (ext2/ext3/ext4) MS Windows (FAT32,NTFS) Diskové oddíly (partitions) Ne Diskové oddíly se připojují jako adresáře. C:, D:, atd. Je však možné připojit i jako adresář (ntfs). Jména Rozlišuje malá a velká písmena (case sensitive). Nerozlišuje malá a velká písmena (case insensitive). Oddělování jmen Lomítko Zpětné lomítko Přístupová práva Ano POSIX Ano (pouze NTFS) ACL Zařízení (hardware) Jako speciální soubory. Ne C2110 Operační systém UNIX a základy programování 2. lekce -6Identifikace adresářů a souborů / home bin user test.txt absolutní cesta identifikující soubor /home/user/test.txt Cesta k adresáři nebo souboru může být uvedena jako absolutní nebo relativní. Jména adresářů a souborů se oddělují lomítkem /. relativní cesta identifikující soubor user/test.txt C2110 Operační systém UNIX a základy programování 2. lekce -7Typy cest Absolutní cesta je vždy uvedena vzhledem ke kořenovému nebo k domovskému adresáři. Musí tedy začínat buď lomítkem / nebo tildou ~. Relativní cesta je cesta uvedená k aktuálnímu/pracovnímu adresáři. (Absolutní cestu pracovního adresáře lze získat příkazem pwd.) /home/kulhanek/Documents/domaci_ukol.txt ../alois/Documents Použití tildy: ~ domovský adresář přihlášeného uživatele ~user_name domovský adresář uživatele user_name Speciální jména adresářů: . (tečka) aktuální adresář .. (dvě tečky) rodičovský (nadřazený) adresář C2110 Operační systém UNIX a základy programování 2. lekce -8Příklady cest Absolutní cesty: /home/kulhanek/Documents /home/kulhanek/Documents/domaci_ukol.txt ~/Documents → /home/kulhanek/Documents ~alois/Documents → /home/alois/Documents Relativní cesty: Documents/domaci_ukol.txt ../alois/Documents ./muj_script C2110 Operační systém UNIX a základy programování 2. lekce -9Souborový systému na klastru WOLF wolf01 /scratch wolf02 /scratch wolf03 /scratch wolf04 /scratch /home ........ Sdílený obsah na všech uzlech klastru WOLF. Data jsou zálohována. Kapacita na uživatele omezena na 1,5GB kvótou. Rozdílný obsah na každém uzlu. Data na svaku /scratch se nezálohují a mohou být kdykoliv smazána bez předchozího upozornění. Kapacita není omezena kvótou na uživatele. C2110 Operační systém UNIX a základy programování 2. lekce -10Příkazová řádka [kulhanek@wolf ~]$ jméno uživatele jméno počítače aktuální adresář (~ znamená domovský adresář /home/vas_login) 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. Kopírování textu: Ne pomocí Ctrl+C! Pro kopírování textu z terminálu stačí text označit, pro následné vložení stiskněte kolečko myši. Automatické doplňování: zmáčknutím klávesy Tab (tabulátor) se interpret příkazové řádky snaží dokončit rozepsané slovo. Doplňují se jména příkazů, cesty a jména souborů (pokud jeden stisk nic nevyvolá, existuje více možností doplnění, opakovaný stisk vylistuje možnosti). 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. C2110 Operační systém UNIX a základy programování 2. lekce -11Nápověda příkazů, hledání příkazů 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 -12Nápověda příkazů, 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 -13Spouštění příkazů a aplikací Příkazy a systémové aplikace Uživatelské programy a skripty $ ls -l $ cp soubor.txt soubor1.txt $ ./muj_script $ ~/bin/my_application Spouštění aplikací na pozadí $ gimp & Zrušení výpisu do terminálu $ kwrite &> /dev/null zadáváme pouze jméno příkazu nebo aplikace jméno programu nebo skriptu udáváme včetně cesty (absolutní nebo relativní) na konec (za argumenty a přesměrování) příkazu uvedeme ampersand příkaz argumenty příkazu (mění chování příkazu nebo tvoří vstupní informace pro zpracování) přesměrování výstupu uvádíme na konec příkazu (za argumenty) C2110 Operační systém UNIX a základy programování 2. lekce -14Základní příkazy Souborový systém: • pwd vypíše cestu k aktuálnímu pracovnímu adresáři • cd změní aktuální pracovní adresář • ls vypíše obsah adresáře • mkdir vytvoří adresář • cp zkopíruje soubor či adresář • mv přesune soubor či adresář • rm odstraní soubor či adresář Zjišťovací příkazy: • hostname vypíše jméno počítače • whoami vypíše jméno přihlášeného uživatele • id vypíše identifikační čísla uživatele • w kdo je přihlášený a co dělá • ps vypíše běžící procesy C2110 Operační systém UNIX a základy programování 2. lekce -15Vytvoření adresářů • Vytvoření adresáře $ mkdir jmeno_adresare • Vytvoření vnořených adresářů $ mkdir -p jmeno_adr1/jmeno_adr2/jmeno_adr3 volba -p (parents) způsobí, že budou vytvořeny rodičovské adresáře, pokud neexistují C2110 Operační systém UNIX a základy programování 2. lekce -16- Kopírování • Ke kopírování slouží příkaz cp $ cp soubor1 soubor2 vytvoří kopii souboru "soubor1" s názvem "soubor2" $ cp soubor1 soubor2 soubor3 adresar1/ kopíruje soubory "soubor1 ", "soubor2", "soubor3" do adresáře "adresar1" $ cp -r adresar1 adresar2 vytvoří kopii adresáře "adresar1" s názvem "adresar2"; pokud adresář "adresar2" již existuje, vytvoří kopii adresáře "adresar1" jako podadresář adresáře "adresar2" $ cp -r soubor1 adresar2 soubor3 adresar1/ kopíruje soubory "soubor1", "soubor3" a adresář "adresar2" do adresáře "adresar1" Volbu -r (recursive) je nutné použít pro kopírování obsahu adresářů. C2110 Operační systém UNIX a základy programování 2. lekce -17- Přesouvání • K přesouvání nebo přejmenovávání slouží příkaz mv $ mv soubor1 soubor2 přejmenuje soubor "soubor1" na "soubor2" $ mv soubor1 soubor2 soubor3 adresar1/ přesune soubory "soubor1", "soubor2", "soubor3" do adresáře "adresar1" $ mv adresar1 adresar2 přejmenuje adresář "adresar1" na "adresar2"; pokud adresář "adresar2" již existuje, přesune adresář "adresar1" do adresáře "adresar2" $ mv soubor1 adresar2 soubor3 adresar1/ přesune soubory "soubor1", "soubor3" a adresář "adresar2" do adresáře "adresar1" C2110 Operační systém UNIX a základy programování 2. lekce -18- Mazání • K mazání slouží příkaz rm $ rm soubor1 odstraní soubor "soubor1" $ rm -r adresar1 odstraní adresář "adresar1" C2110 Operační systém UNIX a základy programování 2. lekce -19- Cvičení Pokuste se naučit využívat: • automatické dokončování (klávesa TAB) • zjednodušené kopírování (označit / vložit kolečkem) • historii příkazové řádky 1. Do adresáře ~/Downloads si stáhněte studijní materiály (první a druhou lekci) z ISu. 2. Vytvořte adresář pokus v adresáři /scratch/vas_login 3. Vytvořte adresář studmat ve vašem domovském adresáři 4. Do adresáře studmat zkopírujte studijní materiály z adresáře ~/Downloads 5. Otevřete prezentaci (Lesson 02) v programu okular, program spusťte tak, aby nevypisoval žádné informace do terminálu 6. Prezentaci překopírujte do adresáře /scratch/vas_login/pokus 7. V adresáři /scratch/vas_login/pokus prezentaci přejmenujte na pokus.pdf 8. Prezentaci pokus.pdf otevřete v programu okular, program spusťte na pozadí 9. Smažte prezentace v adresáři ~/Downloads C2110 Operační systém UNIX a základy programování 2. lekce -20Vzdálené přihlášení  ssh  Šifrování  Vnořené přihlašování C2110 Operační systém UNIX a základy programování 2. lekce -21Vzdá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 -22Prvotní 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 -23Asymetrické š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 -24Asymetrické š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 nezabezpečené 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! C2110 Operační systém UNIX a základy programování 2. lekce -25Asymetrické š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 nezabezpečené 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! C2110 Operační systém UNIX a základy programování 2. lekce -26- Cvičení 1. Přihlaste se na vzdálený uzel wolf01.wolf.inet 2. Ověřte příkazem w, 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. C2110 Operační systém UNIX a základy programování 2. lekce -27Vzdá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 -28Vzdá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 -29Vzdá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 -30Př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 klíče Existují I jiné techniky, zajištující podobnou funkčnost:  systém Kerberos (http://web.mit.edu/Kerberos/) C2110 Operační systém UNIX a základy programování 2. lekce -31Přihlašování bez hesla [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 Nic se nezadává! 2. Vložení veřejného klíče do seznamu autorizovaných klíčů: [kulhanek@wolf01 .ssh]$ cat id_rsa.pub >> authorized_keys 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. Podrobnější popis: man ssh 1. Vytvoření dvojice veřejného a soukromého klíče: C2110 Operační systém UNIX a základy programování 2. lekce -32- Cvičení 1. Aktivujte si přihlašování bez hesla v rámci klastru WOLF. 2. Ověřte funkčnost přihlašování bez hesla. Přihlaste se na uzel wolf01. 3. Vyzkoušejte si vnořené přihlašování v rámci klastru WOLF. 4. Monitorujte, kdo se přihlásil k vašemu místnímu uzlu. Poznámka k úloze 2 Pokud přihlašování stále nefunguje a ve výstupu se objevují hlášení související s ssh agentem, tak odstraňte klíče, které má ve správě: $ ssh-add –D Druhou možností je znovu se přihlásit do grafického prostředí.