Hoppa yfir í efnið

Verkefni og yfirferð

Hingað til höfum við æft okkur inni í ~/examples möppunni, sem er æfingasvæði sem hægt er að endurstilla hvenær sem er með skipuninni examples. Frá og með næsta kafla munu flestir kaflarnir innihalda raunveruleg verkefni á fylgiþjóninum sem þú getu leyst beint í Linux heimamöppunni.

Hér förum við yfir nokkrar skipanir og ferlið við að sækja, leysa og skila inn þessum verkefnum. Þú þarft ekki að muna allt sem farið verður yfir. Á þjóninum má alltaf keyra skipunina skoli til að fá stutta upprifjun.


Að sækja verkefnasafn

Verkefni hvers kafla eru flokkuð saman í verkefnasöfn. Áður en við getum byrjað á verkefnum kaflans sækjum við viðkomandi safn með skipuninni

fetch <nafn-á-safni>

Í upphafi hvers kafla má finna nafnið á meðfylgjandi verkefnasafni. Þegar fetch er keyrt afritast verkefnin í möppuna ~/challenges/<nafn-á-safni>/, með einni undirmöppu fyrir hvert verkefni.

~/challenges/
└── eitthvad-safn/
    ├── 00-fyrsta-verkefni/
    └── 01-annad-verkefni/

Að sækja verkefni aftur

Skipunin fetch sækir aðeins ný verkefnasöfn, en yfirskrifar ekki verkefnasafn sem við höfum þegar sótt. Þannig komumst við hjá því að týna því sem við höfum gert nú þegar.


Að leysa verkefni

Lýsing hvers verkefnis er á verkefnasíðu þess hér í Hakkaraskólanum, eins og öll önnur verkefni. Þegar við höfum kynnt okkur verkefnið opnum við möppu verkefnisins undir ~/challenges/ með cd og leysum það þar.

Verkefnin flokkast í tvo flokka, annars verkefni sem biðja okkur um að breyta, bæta við, eða eyða skrám og möppum; og hins vegar verkefni sem biðja okkur um að skrifa út svarið. Fyrri tegundina köllum við uppfærsluverkefni og þá seinni útskriftarverkefni.

Yfirferð

Þegar við teljum okkur hafa leyst verkefni notum við skipunina check til að fara yfir lausnina okkar.

Uppfærsluverkefni

Ef um er að ræða uppfærsluverkefni er nóg að keyra

check

úr möppu viðkomandi verkefnis. Skipunin check þá þær uppfærslur sem gerðar voru, segir okkur hvort þær séu réttar og, ef svo er, birtir fánann og skilar honum inn fyrir okkur sjálfkrafa.

Einfaldast er að keyra check úr verkefnamöppum, en hægt er að keyra yfirferð á hvaða verkefni sem er með

check <nafn-á-safni>/<nafn-verkefnis>

óháð vinnumöppu.

Útskriftarverkefni

Ef um útskriftarverkefni er að ræða þarf check að fara yfir úttak þeirrar skipunar (eða skipana) sem skrifa út það sem verkefnið biður um. Það er gert með því að bæta | check, fyrir aftan skipunina, til dæmis

ls -lah | check

Úttakið skipunarinnar skrifast þá ekki lengur út á skjá, heldur beinist það í skipunina check og farið er yfir það. Við förum nánar yfir virkni pípunnar, |, í ./pipes.md.

answer.txt

Á bak við tjöldin veldur | check því að úttak skipunarinnar er skrifað í skránna answer.txt, sem check fer svo yfir. Það er því eðlilegt að sú skrá birtist eftir að kallað hefur verið á check með þessum hætti.

Sjálfvirk innskil

Þegar check ályktar að verkefni hafi verið rétt leyst skilar skipunin líka fánanum til verkefnakerfis Hakkaraskólans. Það þarf ekki að klippa og líma fánann til að skila. Á bak við tjöldin notar check forritaskilalykil (e. API key) fyrir verkefnakerfið sem er að finna í ~/.ctf-token. Eftir að skipunin check fer fyrst yfir verkefnið athugar hún hvort þessi skrá sé til staðar og, ef svo er, notar hún lykilinn til að senda fánann sjálfkrafa inn í verkefnakerfið. Hægt er að slökkva á þessari virkni með stillingunni --no-submit, þ.e.

check --no-submit

Sjálfvirk fánaskil

Þegar notandinn þinn á fylgiþjóninum var búinn til var smíðaður forritaskilalykill fyrir verkefnakerfið og hann settur í heimamöppuna þína.

Ef þessari skrá er eytt eða lykillinn rennur út mun check aðeins sýna okkur fána, en ekki skila þeim fyrir okkur. Hægt er hægt að endurstilla lykilinn inni í verkefnakerfinu undir https://skoli.ggc.tf/settings#linux-lab með því að smella á Regenerate CTFd token.

Skipunin check mun samt alltaf gefa okkur fána ef verkefni er rétt leyst og það er ávallt hægt að skila þeim handvirkt í verkefnakerfið.


Að byrja upp á nýtt

Til að endurstilla verkefni, þ.e. koma því í upprunalegt horf, er hægt að keyra

restore

úr möppu verkefnisins, eða úr möppu verkefnasafnsins (~/challenges/<nafn-á-safni>) til að endurstilla öll verkefni í því safni í einu. Einnig er hægt að tilgreina ákveðið verkefni eða safn, hvar sem er, með

restore ~/challenges/<nafn-á-safni>/<nafn-verkefnis>

Ekkert afrit

Skipunin restore geymir ekki afrit af því sem við höfum gert áður. Skipunin biður okkur um staðfestingu, og eftir það er gögnunum eytt fyrir fullt og allt. Ekki geyma neitt sem máli skiptir inni í ~/challenges/. Ef við viljum vinnusvæði sem er ekki tengt ákveðnu verkefni er betra að nota ~/examples í staðinn, en einnig er hægt að endurstilla það á sama hátt með skipuninni examples.


Ágrip

Ekki er nauðsynlegt að leggja neitt af þessu á minnið. Á þjóninum getum við keyrt skoli til að fá stutta samantekt á öllum skipunum sem kynntar eru í þessum kafla, meiri gagnlegum upplýsingum.

Verkefni

Hér má finna öll verkefnin úr Linux köflunum

Sjá verkefni