Zadanie

Ak máte akékoľvek otázky ohľadom tejto úlohy, napíšte Prefixovi na michal.sladecek@trojsten.sk

Denis mal napísať zadanie k príkladu 3. Ako ho išiel písať, zrazu si všimol na svojom počítači malú ikonku - bola to čierna ikonka ktorú nepoznal. “Hmm to vyzerá zaujímavo, čo sa asi stane ak na túto ikonku kliknem?” povedal si Denis. A tak na ňu klikol.

Vžuuu Denisa počítač vtiahol do seba a Denis sa ocitol stratený niekde hlboko v príkazovom riadku Linuxu. Našťastie si sa ty, účastník/čka Prasku nachádzal nablízko a môžeš ho odtiaľ vyslobodiť.

Denis je v počítači roztrúsený v podobe kódov ktoré sa nachádzajú v jednotlivých úlohach. Každý kód vyzerá ako nejaké znaky, napr. d003f58b96e6b0a543bf75.

“Ale ja sa neviem orientovať v príkazovom riadku, ako ho tam mám nájsť?” hovoríš si. Žiadny problém! Na tomto počítači sa nachádza množstvo hintov, ktoré vám ukážu ako nájsť a zrekonštruovať Denisa. Veľa vecí si ale budeš asi musieť vygoogliť, no čo by si pre Denisa nespravil/a?

Úloha

V tejto úlohe budete musieť vykonávať rôzne podúlohy v príkazovom riadku Linuxu. Tento systém nebude bežať u vás - dostanete sa doň pomocou návodu, ktorý sme pre vás spísali ns tejto adrese. Takže sa nebojte, nemusíte si nainštalovať Linux.

Aby sme vám trochu pomohli, začneme drobným introm - v Linuxovom terminály sa vždy nachádzate v nejakom priečinku. Na začiatku budete v domovskom priečinku, v ktorom sú aj príklady. V priečinkoch sa môžu nachádzať iné priečinky alebo súbory. Obsah priečinku vypíšete príkazom ls. Ak chcete vidieť obsah nejakého súboru, viete to spraviť príkazom cat subor. Priečinok viete meniť pomocou príkazu cd - cd priecinok vás premiestni do priečinku priecinok, pokiaľ taký existuje. Každý priečinok obsahuje aj špeciálny priečinok .. - tento priečinok vždy ukazuje na priečinok nad ním. Príklady:

Nachádzate sa v priečinku /home/user/priecinok a chcete prečítať súbor y nachádzajúci sa v /home/user/priecinok/priecinok2/x. Môžte použiť príkaz cd priecinok2, čím sa dostanete do druhého priečinku a následne cat x, čím prečítate x.

Nachádzate sa v priečinku /home/user/priecinok a chcete prečítať súbor y nachádzajúci sa v /home/user/y. Môžte použiť príkaz cd .., čo vás presunie na /home/user/ (o priečinok vyššie), a následne cat y.

Tieto znalosti vám vystačia na prvé dve podúlohy. V ďalších podúlohach je google váš veľký kamarát. Aby sme vám ale ukázali približne, od čoho sa odraziť, tu sú príklady vecí, ktoré môžte googliť:

  • prikazovy riadok linuxu tutorial
  • ako vyhladat subor v linuxe
  • prava v linuxe
  • linux prikazy procesy

Pokiaľ viete tak môžte skúsiť hľadať po anglicky, väčšinou dostanete viac výsledkov ktoré budú často aj presnejšie.

To, že máte vyriešený príklad viete, lebo sa dostanete ku kódu - písmena a čísla, ktoré vyzerajú asi takto: d003f58b96e6b0a543bf75. Tieto kódy budete na konci odovzdávať v popise - požadujeme od vás aj krátky popis toho, ako ste príklad riešili. Nepripravili sme pre vás žiadne chytáky, takže raz keď už od príkladu máte niečo čo vyzerá ako kód, skoro určite je správny a dostanete bod.

V tejto úlohe sme mali možnosť stretnúť sa so základnými Linuxovými príkazmi, ktoré sa vám v budúcnosti budú hodiť. Táto úloha bola špeciálna v tom, že ste sa k spŕavnemu heslu mohli dostať viacerými spôsobmi, pričom bolo odporúčané hľadať pomoc na Googli. Dúfame, že sa vám hľadanie hesiel páčilo :)

Predtým, než môžeme začať riešiť jednotlivé podúlohy sa najprv musíme pripojiť na vzdialený počítač, kde boli heslá ukryté. Ak ste postupovali podľa návodu v zadaní, dostali ste sa do príkazového riadku (konzoly) kde ste vedeli písať príkazy.

Riešenia jednotlivých podúloh

  1. Ak ste skúsili zadať príkaz ls zo zadania, tak ste zistili, že sa v priečinku nachádza súbor level1.txt (a priečinky pomenované levelX, v ktorých sa nachádzali zvyšné podúlohy). Súbor vieme otvoriť príkazom cat, teda zadáme príkaz cat level1.txt a tešíme sa z prvého hesla.

  2. V tomto leveli sa zoznámime s priečinkami. Do priečinku vojdeme príkazom cd. Príkazom ls zobrazíme obsah priečinku. Uvidíme, že je v ňom ďalší priečinok s názvom tubudeheslo. Zodáme cd tubudeheslo. Keď opäť spravíme ls, nájdeme jeden súbor hesloklevelu2.txt. V tomto súbore nájdeme heslo. Naspäť sa vieme dostať opakovaným použitím príkazu cd .., ktorý nás vráti do rodičovksého priečinku.

  3. Tu máme celý strom priečinkov, a niekde v nich je heslo. Vieme, že súbor s heslom sa volá heslo.txt. Máme viacero možností. Môžeme použíť príkaz find -name heslo.txt na nájdenie súboru s názvom heslo.txt. Iná možnosť je použiť napr. ls -R a rekurzívne vylistovať všetky priečinky.

  4. Máme veľký súbor a v ňom má mať práve jeden riadok heslo. Na vyhľadávanie v texte slúži príkaz grep. Spravíme teda grep "HESLO" level4-hesla a nájde nám to daný riadok. (Môže sa nám hodiť prepínač -i, ktorý spôsobí, že grep bude ignorovať veľkosť písmen. Takže riešenie je aj grep -i "hEsLo" level4-hesla)

  5. Vidíme dva súbory, ktoré sú podobné keď si ich otvoríme. Príkaz ls -al nám ale ukáže, že jeden je o trocha väčší ako druhý takže nemôžu byť rovnaké. Spravíme diff level-hesla level5-hesla.old a nájdeme jeden riadok, ktorý je odlišný, to je naše heslo.

  6. Všetci používatelia na Linuxových systémoch sú napísaní v /etc/passwd. Prečítame tento súbor a nájdeme hľadaného používateľa.

  7. Každý súbor má tri sady privilégii. Čo môže robiť vlastník, čo môže robiť skupina a čo môžu robiť všetci ostatní (a ešte niečo o čom zistíme v ďalšej sérii). Tri možné operácie sú čítanie, zápis a spúšťanie. Napr. rwxr-x--- znamená, že vlastník môže súbor čítať (read), meniť (write) aj spúšťať (execute). Používatelia zo skupiny ho môžu len čítať alebo spúšťať, ale nie meniť. A hocikto iný nemôže robiť so súborom nič. Oprávnenia získame príkazom ls -al. Vidíme, že sme vlastníkom súboru ale že ho nevieme čítať. Oprávnenia zmeníme príkazom chmod, napr. môžme spraviť chmod u+r, čím pridáme sebe (user, u) práva na čítanie (read, r).

  8. Stačí spustiť program, ktorý nám hneď vypíše heslo. Programy spúšťame pomocou ./, riešenie je teda ./program.

  9. Pomocou ls -al vieme zistiť, ktorému používateľovi patrí súbor heslo.txt. Za tohto používateľa sa prihlásime príkazom su totojemenopouzivatelalevel9. Potom vieme prečítať heslo.

  10. Napr. echo "Text_vo_vytvorenom_subore" > vytvoreny_subor. Príkaz echo vypíše svoj argument na výstup. Príkaz > je špeciálny znak, ktorým presmerujeme výstup z príkazu do súboru.

  11. Najjednoduchšie je použiť príkaz cp meno_povodneho_suboru meno_noveho_suboru, čím skopírujeme súbor.

  12. Príkazom rm vieme zmazať súbor.

  13. Príkazom top alebo ps si pozrieme, aké procesy momentálne bežia. Všimneme si proces so zvlášstnym názvom a ukončíme ho buď príkazmi kill alebo pkill.

  14. Symlinky sú špeciálne typy súborov ktoré nemajú obsah ale len ukazujú na nejaký iný súbor. Keď otvoríme symlinku, je to rovnaké akoby sme otvorili súbor na ktorý symlinka ukazuje. Symlink vytvoríme príkazom ln -s nazov_suboru nazov_symlinku.

  15. Priečinok je prázdny! Našťastie máme hint, ktorý nám hovorí, že v priečinku je niečo skryté. V linuxe sú skryté súbory tie, ktorých meno začína bodkou. Pomocou ls -a vieme zobraziť aj skryté súbory.

Diskusia

Tu môžte voľne diskutovať o riešení, deliť sa o svoje kusy kódu a podobne.

Pre pridávanie komentárov sa musíš prihlásiť.